[svn:parrot] r44743 - in branches/ops_pct: . compilers/data_json compilers/imcc compilers/json compilers/ncigen/t compilers/ncigen/t/NCIGENAST compilers/nqp compilers/opsc compilers/pct compilers/pge compilers/pirc/src compilers/pirc/t compilers/tge config/auto config/auto/sizes config/auto/warnings config/gen config/gen/call_list config/gen/crypto config/gen/makefiles config/gen/platform config/gen/platform/generic config/gen/platform/openbsd config/init config/init/hints config/inter docs docs/book/draft docs/book/pct docs/dev docs/pdds docs/pdds/draft docs/project examples/c examples/embed examples/languages/abc examples/languages/abc/t examples/languages/squaak examples/nci examples/pge examples/pir examples/sdl examples/sdl/lcd examples/sdl/minesweeper examples/sdl/tetris ext/Parrot-Embed/lib/Parrot ext/Parrot-Embed/t ext/nqp-rx ext/nqp-rx/src/stage0 include/parrot include/parrot/atomic include/parrot/oplib lib/Parrot lib/Parrot/Configure lib/Parrot/Configure/St ep lib/Parrot/Docs lib/Parrot/Docs/Section lib/Parrot/Harness lib/Parrot/OpTrans lib/Parrot/Ops2c lib/Parrot/Pmc2c ports/cpan ports/cygwin ports/debian ports/fedora ports/mandriva ports/suse runtime/parrot/include runtime/parrot/languages runtime/parrot/library runtime/parrot/library/Configure runtime/parrot/library/Data runtime/parrot/library/Data/Dumper runtime/parrot/library/HTTP runtime/parrot/library/Math runtime/parrot/library/Math/Random runtime/parrot/library/Parrot runtime/parrot/library/SDL runtime/parrot/library/Test runtime/parrot/library/Test/Builder runtime/parrot/library/YAML runtime/parrot/library/YAML/Dumper src src/atomic src/call src/dynpmc src/gc src/interp src/io src/nci src/ops src/packfile src/pmc src/runcore src/string src/string/charset src/string/encoding t t/codingstd t/compilers/imcc/imcpasm t/compilers/imcc/reg t/compilers/imcc/syn t/compilers/json t/compilers/pct t/compilers/pge t/compilers/tge t/configure t/distro t/dynoplibs t/dynpmc t/example s t/library t/manifest t/native_pbc t/oo t/op t/perl t/pir t/pmc t/run t/src t/steps/auto t/steps/gen t/steps/init/hints t/tools t/tools/dev t/tools/install t/tools/ops2pm t/tools/pmc2cutils tools/build tools/dev tools/util

cotto at svn.parrot.org cotto at svn.parrot.org
Sun Mar 7 19:34:00 UTC 2010


Author: cotto
Date: Sun Mar  7 19:33:20 2010
New Revision: 44743
URL: https://trac.parrot.org/parrot/changeset/44743

Log:
[opsc] sync branch with trunk

Added:
   branches/ops_pct/compilers/imcc/Rules.in
      - copied unchanged from r44740, trunk/compilers/imcc/Rules.in
   branches/ops_pct/src/nci/   (props changed)
      - copied from r44740, trunk/src/nci/
   branches/ops_pct/src/pmc/imageiosize.pmc
      - copied unchanged from r44740, trunk/src/pmc/imageiosize.pmc
   branches/ops_pct/src/pmc/opcode.pmc
      - copied unchanged from r44740, trunk/src/pmc/opcode.pmc
   branches/ops_pct/src/pmc/oplib.pmc
      - copied unchanged from r44740, trunk/src/pmc/oplib.pmc
   branches/ops_pct/t/compilers/imcc/reg/spill_old.t
      - copied unchanged from r44740, trunk/t/compilers/imcc/reg/spill_old.t
   branches/ops_pct/t/op/errorson.t
      - copied unchanged from r44740, trunk/t/op/errorson.t
   branches/ops_pct/t/op/gc-leaky.t
      - copied unchanged from r44740, trunk/t/op/gc-leaky.t
   branches/ops_pct/t/pmc/imageio.t
      - copied unchanged from r44740, trunk/t/pmc/imageio.t
   branches/ops_pct/t/pmc/imageiosize.t
      - copied unchanged from r44740, trunk/t/pmc/imageiosize.t
   branches/ops_pct/t/pmc/opcode.t
      - copied unchanged from r44740, trunk/t/pmc/opcode.t
   branches/ops_pct/t/pmc/oplib.t
      - copied unchanged from r44740, trunk/t/pmc/oplib.t
   branches/ops_pct/tools/dev/mk_nci_thunks.pl
      - copied unchanged from r44740, trunk/tools/dev/mk_nci_thunks.pl
   branches/ops_pct/tools/dev/nci_thunk_gen.pir
      - copied unchanged from r44740, trunk/tools/dev/nci_thunk_gen.pir
Replaced:
   branches/ops_pct/src/nci/api.c
      - copied unchanged from r44740, trunk/src/nci/api.c
   branches/ops_pct/src/nci/core_thunks.c
      - copied unchanged from r44740, trunk/src/nci/core_thunks.c
   branches/ops_pct/src/nci/core_thunks.nci
      - copied unchanged from r44740, trunk/src/nci/core_thunks.nci
   branches/ops_pct/src/nci/extra_thunks.c
      - copied unchanged from r44740, trunk/src/nci/extra_thunks.c
   branches/ops_pct/src/nci/extra_thunks.nci
      - copied unchanged from r44740, trunk/src/nci/extra_thunks.nci
Deleted:
   branches/ops_pct/compilers/imcc/Rules.mak
   branches/ops_pct/config/gen/call_list/
   branches/ops_pct/config/gen/call_list.pm
   branches/ops_pct/config/gen/makefiles/CFLAGS.in
   branches/ops_pct/include/parrot/events.h
   branches/ops_pct/include/parrot/tsq.h
   branches/ops_pct/runtime/parrot/library/Math/Random/
   branches/ops_pct/src/events.c
   branches/ops_pct/src/tsq.c
   branches/ops_pct/t/library/mt19937ar.t
   branches/ops_pct/t/library/mt19937ar.txt
   branches/ops_pct/t/op/bitwise.t
   branches/ops_pct/t/steps/gen/call_list-01.t
   branches/ops_pct/tools/build/cc_flags.pl
   branches/ops_pct/tools/build/nativecall.pir
   branches/ops_pct/tools/build/nativecall.pl
Modified:
   branches/ops_pct/   (props changed)
   branches/ops_pct/CREDITS
   branches/ops_pct/ChangeLog
   branches/ops_pct/Configure.pl
   branches/ops_pct/DEPRECATED.pod
   branches/ops_pct/MANIFEST
   branches/ops_pct/MANIFEST.SKIP
   branches/ops_pct/MANIFEST.generated
   branches/ops_pct/META.yml
   branches/ops_pct/NEWS
   branches/ops_pct/PBC_COMPAT
   branches/ops_pct/PLATFORMS
   branches/ops_pct/README
   branches/ops_pct/VERSION
   branches/ops_pct/compilers/data_json/Defines.mak
   branches/ops_pct/compilers/data_json/Rules.mak   (contents, props changed)
   branches/ops_pct/compilers/imcc/   (props changed)
   branches/ops_pct/compilers/imcc/cfg.c
   branches/ops_pct/compilers/imcc/cfg.h
   branches/ops_pct/compilers/imcc/imc.c
   branches/ops_pct/compilers/imcc/imcc.l
   branches/ops_pct/compilers/imcc/imcc.y
   branches/ops_pct/compilers/imcc/imclexer.c
   branches/ops_pct/compilers/imcc/imcparser.c
   branches/ops_pct/compilers/imcc/imcparser.h
   branches/ops_pct/compilers/imcc/instructions.c
   branches/ops_pct/compilers/imcc/instructions.h
   branches/ops_pct/compilers/imcc/main.c
   branches/ops_pct/compilers/imcc/optimizer.c
   branches/ops_pct/compilers/imcc/parser_util.c
   branches/ops_pct/compilers/imcc/pbc.c
   branches/ops_pct/compilers/imcc/pbc.h
   branches/ops_pct/compilers/imcc/pcc.c
   branches/ops_pct/compilers/imcc/reg_alloc.c
   branches/ops_pct/compilers/imcc/sets.c
   branches/ops_pct/compilers/imcc/sets.h
   branches/ops_pct/compilers/imcc/symreg.c
   branches/ops_pct/compilers/imcc/symreg.h
   branches/ops_pct/compilers/json/Rules.mak   (props changed)
   branches/ops_pct/compilers/ncigen/t/NCIGENAST/struct_00.t
   branches/ops_pct/compilers/ncigen/t/NCIGENAST/typedef_00.t
   branches/ops_pct/compilers/ncigen/t/parse_00.t
   branches/ops_pct/compilers/ncigen/t/parse_01.t
   branches/ops_pct/compilers/ncigen/t/parse_02.t
   branches/ops_pct/compilers/nqp/Rules.mak   (props changed)
   branches/ops_pct/compilers/opsc/Defines.mak   (props changed)
   branches/ops_pct/compilers/opsc/Rules.mak   (props changed)
   branches/ops_pct/compilers/pct/Rules.mak   (props changed)
   branches/ops_pct/compilers/pge/Rules.mak   (props changed)
   branches/ops_pct/compilers/pirc/src/bcgen.c
   branches/ops_pct/compilers/pirc/src/main.c
   branches/ops_pct/compilers/pirc/src/pir.y
   branches/ops_pct/compilers/pirc/src/pircapi.c
   branches/ops_pct/compilers/pirc/src/pircompiler.c
   branches/ops_pct/compilers/pirc/src/pircompiler.h
   branches/ops_pct/compilers/pirc/src/pircompunit.c
   branches/ops_pct/compilers/pirc/src/pircompunit.h
   branches/ops_pct/compilers/pirc/src/piremit.c
   branches/ops_pct/compilers/pirc/src/piremit.h
   branches/ops_pct/compilers/pirc/src/pirmacro.c
   branches/ops_pct/compilers/pirc/src/pirmacro.h
   branches/ops_pct/compilers/pirc/src/pirparser.c
   branches/ops_pct/compilers/pirc/src/pirpcc.c
   branches/ops_pct/compilers/pirc/src/pirpcc.h
   branches/ops_pct/compilers/pirc/src/pirregalloc.c
   branches/ops_pct/compilers/pirc/src/pirregalloc.h
   branches/ops_pct/compilers/pirc/src/pirsymbol.c
   branches/ops_pct/compilers/pirc/src/pirsymbol.h
   branches/ops_pct/compilers/pirc/t/basic.t
   branches/ops_pct/compilers/pirc/t/heredoc.t
   branches/ops_pct/compilers/pirc/t/macro.t
   branches/ops_pct/compilers/pirc/t/stmts.t
   branches/ops_pct/compilers/pirc/t/subflags.t
   branches/ops_pct/compilers/tge/Rules.mak   (props changed)
   branches/ops_pct/config/auto/cgoto.pm
   branches/ops_pct/config/auto/gcc.pm
   branches/ops_pct/config/auto/icu.pm
   branches/ops_pct/config/auto/perldoc.pm
   branches/ops_pct/config/auto/pmc.pm
   branches/ops_pct/config/auto/sizes/intval_maxmin_c.in   (props changed)
   branches/ops_pct/config/auto/warnings.pm
   branches/ops_pct/config/auto/warnings/test_c.in
   branches/ops_pct/config/gen/crypto/digest_pmc.in
   branches/ops_pct/config/gen/makefiles.pm
   branches/ops_pct/config/gen/makefiles/docs.in
   branches/ops_pct/config/gen/makefiles/dynoplibs.in
   branches/ops_pct/config/gen/makefiles/dynpmc.in
   branches/ops_pct/config/gen/makefiles/root.in
   branches/ops_pct/config/gen/opengl.pm
   branches/ops_pct/config/gen/platform/generic/env.c
   branches/ops_pct/config/gen/platform/generic/exec.c
   branches/ops_pct/config/gen/platform/generic/memexec.c
   branches/ops_pct/config/gen/platform/openbsd/memexec.c
   branches/ops_pct/config/gen/platform/platform_interface.h
   branches/ops_pct/config/init/hints/darwin.pm
   branches/ops_pct/config/init/hints/mswin32.pm
   branches/ops_pct/config/init/hints/openbsd.pm
   branches/ops_pct/config/init/optimize.pm
   branches/ops_pct/config/inter/charset.pm
   branches/ops_pct/config/inter/encoding.pm
   branches/ops_pct/config/inter/libparrot.pm
   branches/ops_pct/docs/book/draft/README   (props changed)
   branches/ops_pct/docs/book/draft/appa_glossary.pod   (props changed)
   branches/ops_pct/docs/book/draft/appb_patch_submission.pod   (props changed)
   branches/ops_pct/docs/book/draft/appc_command_line_options.pod   (props changed)
   branches/ops_pct/docs/book/draft/appd_build_options.pod   (props changed)
   branches/ops_pct/docs/book/draft/appe_source_code.pod   (props changed)
   branches/ops_pct/docs/book/draft/ch01_introduction.pod   (props changed)
   branches/ops_pct/docs/book/draft/ch02_getting_started.pod   (props changed)
   branches/ops_pct/docs/book/draft/ch07_dynpmcs.pod   (props changed)
   branches/ops_pct/docs/book/draft/ch08_dynops.pod   (props changed)
   branches/ops_pct/docs/book/draft/ch10_opcode_reference.pod   (props changed)
   branches/ops_pct/docs/book/draft/ch11_directive_reference.pod   (props changed)
   branches/ops_pct/docs/book/draft/ch12_operator_reference.pod   (props changed)
   branches/ops_pct/docs/book/draft/chXX_hlls.pod   (props changed)
   branches/ops_pct/docs/book/draft/chXX_library.pod   (props changed)
   branches/ops_pct/docs/book/draft/chXX_testing_and_debugging.pod   (props changed)
   branches/ops_pct/docs/book/pct/ch01_introduction.pod   (props changed)
   branches/ops_pct/docs/book/pct/ch02_getting_started.pod   (props changed)
   branches/ops_pct/docs/book/pct/ch03_compiler_tools.pod   (props changed)
   branches/ops_pct/docs/book/pct/ch04_pge.pod   (props changed)
   branches/ops_pct/docs/book/pct/ch05_nqp.pod   (props changed)
   branches/ops_pct/docs/dev/c_functions.pod   (props changed)
   branches/ops_pct/docs/embed.pod
   branches/ops_pct/docs/parrothist.pod
   branches/ops_pct/docs/pdds/draft/pdd06_pasm.pod
   branches/ops_pct/docs/pdds/draft/pdd11_extending.pod
   branches/ops_pct/docs/pdds/pdd17_pmc.pod
   branches/ops_pct/docs/pdds/pdd28_strings.pod
   branches/ops_pct/docs/pdds/pdd30_install.pod   (props changed)
   branches/ops_pct/docs/project/release_manager_guide.pod
   branches/ops_pct/docs/tests.pod
   branches/ops_pct/examples/c/nanoparrot.c
   branches/ops_pct/examples/c/pbc_info.c
   branches/ops_pct/examples/embed/cotorra.c   (contents, props changed)
   branches/ops_pct/examples/languages/abc/   (props changed)
   branches/ops_pct/examples/languages/abc/t/01-tests.t
   branches/ops_pct/examples/languages/squaak/   (props changed)
   branches/ops_pct/examples/nci/QtHelloWorld.pasm
   branches/ops_pct/examples/nci/QtHelloWorld.pir
   branches/ops_pct/examples/nci/sdl_blue_rectangle.pir
   branches/ops_pct/examples/pge/demo.pir   (props changed)
   branches/ops_pct/examples/pir/make_hello_pbc.pir
   branches/ops_pct/examples/sdl/anim_image.pir
   branches/ops_pct/examples/sdl/anim_image_dblbuf.pir
   branches/ops_pct/examples/sdl/blue_font.pir
   branches/ops_pct/examples/sdl/blue_rect.pir
   branches/ops_pct/examples/sdl/bounce_parrot_logo.pir
   branches/ops_pct/examples/sdl/lcd/clock.pir
   branches/ops_pct/examples/sdl/mandel.pir
   branches/ops_pct/examples/sdl/minesweeper/eventhandler.pir
   branches/ops_pct/examples/sdl/minesweeper/field.pir
   branches/ops_pct/examples/sdl/minesweeper/mines.pir
   branches/ops_pct/examples/sdl/move_parrot_logo.pir
   branches/ops_pct/examples/sdl/raw_pixels.pir
   branches/ops_pct/examples/sdl/tetris/app.pir
   branches/ops_pct/examples/sdl/tetris/block.pir
   branches/ops_pct/examples/sdl/tetris/board.pir
   branches/ops_pct/examples/sdl/tetris/eventhandler.pir
   branches/ops_pct/ext/Parrot-Embed/lib/Parrot/Embed.xs
   branches/ops_pct/ext/Parrot-Embed/t/pipp.t
   branches/ops_pct/ext/nqp-rx/Rules.mak   (props changed)
   branches/ops_pct/ext/nqp-rx/src/stage0/HLL-s0.pir
   branches/ops_pct/ext/nqp-rx/src/stage0/NQP-s0.pir
   branches/ops_pct/ext/nqp-rx/src/stage0/P6Regex-s0.pir
   branches/ops_pct/include/parrot/atomic/gcc_pcc.h
   branches/ops_pct/include/parrot/call.h   (contents, props changed)
   branches/ops_pct/include/parrot/charset.h
   branches/ops_pct/include/parrot/context.h
   branches/ops_pct/include/parrot/debugger.h
   branches/ops_pct/include/parrot/encoding.h
   branches/ops_pct/include/parrot/extend.h
   branches/ops_pct/include/parrot/gc_api.h   (contents, props changed)
   branches/ops_pct/include/parrot/hash.h
   branches/ops_pct/include/parrot/imcc.h
   branches/ops_pct/include/parrot/interpreter.h
   branches/ops_pct/include/parrot/io.h
   branches/ops_pct/include/parrot/memory.h
   branches/ops_pct/include/parrot/nci.h
   branches/ops_pct/include/parrot/oo.h
   branches/ops_pct/include/parrot/op.h
   branches/ops_pct/include/parrot/oplib.h
   branches/ops_pct/include/parrot/oplib/core_ops.h
   branches/ops_pct/include/parrot/packfile.h
   branches/ops_pct/include/parrot/parrot.h
   branches/ops_pct/include/parrot/pmc.h
   branches/ops_pct/include/parrot/pmc_freeze.h
   branches/ops_pct/include/parrot/pobj.h
   branches/ops_pct/include/parrot/runcore_api.h   (contents, props changed)
   branches/ops_pct/include/parrot/runcore_profiling.h   (contents, props changed)
   branches/ops_pct/include/parrot/runcore_trace.h   (props changed)
   branches/ops_pct/lib/Parrot/Configure/Compiler.pm
   branches/ops_pct/lib/Parrot/Configure/Messages.pm
   branches/ops_pct/lib/Parrot/Configure/Step/List.pm
   branches/ops_pct/lib/Parrot/Configure/Step/Test.pm   (props changed)
   branches/ops_pct/lib/Parrot/Distribution.pm
   branches/ops_pct/lib/Parrot/Docs/File.pm
   branches/ops_pct/lib/Parrot/Docs/Section/C.pm
   branches/ops_pct/lib/Parrot/Docs/Section/Tools.pm
   branches/ops_pct/lib/Parrot/H2inc.pm   (props changed)
   branches/ops_pct/lib/Parrot/Harness/DefaultTests.pm
   branches/ops_pct/lib/Parrot/Op.pm
   branches/ops_pct/lib/Parrot/OpTrans.pm
   branches/ops_pct/lib/Parrot/OpTrans/CGoto.pm
   branches/ops_pct/lib/Parrot/Ops2c/Utils.pm
   branches/ops_pct/lib/Parrot/OpsFile.pm
   branches/ops_pct/lib/Parrot/Pmc2c/Attribute.pm
   branches/ops_pct/lib/Parrot/Pmc2c/MethodEmitter.pm
   branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm
   branches/ops_pct/lib/Parrot/Pmc2c/PMC.pm
   branches/ops_pct/lib/Parrot/Pmc2c/PMCEmitter.pm
   branches/ops_pct/lib/Parrot/Pmc2c/UtilFunctions.pm
   branches/ops_pct/ports/cpan/pause_guide.pod   (props changed)
   branches/ops_pct/ports/cygwin/parrot-1.0.0-1.cygport   (props changed)
   branches/ops_pct/ports/debian/libparrot-dev.install.in   (props changed)
   branches/ops_pct/ports/debian/libparrot.install.in   (props changed)
   branches/ops_pct/ports/debian/parrot-doc.install.in   (props changed)
   branches/ops_pct/ports/debian/parrot.install.in   (props changed)
   branches/ops_pct/ports/fedora/parrot.spec.fedora   (props changed)
   branches/ops_pct/ports/mandriva/parrot.spec.mandriva   (props changed)
   branches/ops_pct/ports/suse/parrot.spec.suse   (props changed)
   branches/ops_pct/runtime/parrot/include/test_more.pir
   branches/ops_pct/runtime/parrot/languages/   (props changed)
   branches/ops_pct/runtime/parrot/library/Configure/genfile.pir
   branches/ops_pct/runtime/parrot/library/Data/Dumper.pir
   branches/ops_pct/runtime/parrot/library/Data/Dumper/Base.pir
   branches/ops_pct/runtime/parrot/library/Data/Dumper/Default.pir
   branches/ops_pct/runtime/parrot/library/HTTP/Daemon.pir
   branches/ops_pct/runtime/parrot/library/Math/Rand.pir   (contents, props changed)
   branches/ops_pct/runtime/parrot/library/OpenGL.pir
   branches/ops_pct/runtime/parrot/library/P6object.pir
   branches/ops_pct/runtime/parrot/library/Parrot/Coroutine.pir
   branches/ops_pct/runtime/parrot/library/Rules.mak   (props changed)
   branches/ops_pct/runtime/parrot/library/SDL.pir
   branches/ops_pct/runtime/parrot/library/SDL/App.pir
   branches/ops_pct/runtime/parrot/library/SDL/Button.pir
   branches/ops_pct/runtime/parrot/library/SDL/Color.pir
   branches/ops_pct/runtime/parrot/library/SDL/Constants.pir
   branches/ops_pct/runtime/parrot/library/SDL/Event.pir
   branches/ops_pct/runtime/parrot/library/SDL/EventHandler.pir
   branches/ops_pct/runtime/parrot/library/SDL/Font.pir
   branches/ops_pct/runtime/parrot/library/SDL/Image.pir
   branches/ops_pct/runtime/parrot/library/SDL/LCD.pir
   branches/ops_pct/runtime/parrot/library/SDL/Rect.pir
   branches/ops_pct/runtime/parrot/library/SDL/Sprite.pir
   branches/ops_pct/runtime/parrot/library/SDL/StopWatch.pir
   branches/ops_pct/runtime/parrot/library/SDL/Surface.pir
   branches/ops_pct/runtime/parrot/library/Test/Builder/Test.pir
   branches/ops_pct/runtime/parrot/library/Test/More.pir
   branches/ops_pct/runtime/parrot/library/YAML/Dumper.pir
   branches/ops_pct/runtime/parrot/library/YAML/Dumper/Base.pir
   branches/ops_pct/runtime/parrot/library/YAML/Dumper/Default.pir
   branches/ops_pct/runtime/parrot/library/distutils.pir
   branches/ops_pct/runtime/parrot/library/dumper.pir
   branches/ops_pct/runtime/parrot/library/libpcre.pir
   branches/ops_pct/runtime/parrot/library/pcre.pir
   branches/ops_pct/runtime/parrot/library/yaml_dumper.pir
   branches/ops_pct/src/   (props changed)
   branches/ops_pct/src/atomic/gcc_x86.c
   branches/ops_pct/src/call/args.c
   branches/ops_pct/src/call/context.c
   branches/ops_pct/src/call/context_accessors.c
   branches/ops_pct/src/call/ops.c   (contents, props changed)
   branches/ops_pct/src/call/pcc.c   (props changed)
   branches/ops_pct/src/debug.c
   branches/ops_pct/src/dynext.c
   branches/ops_pct/src/dynpmc/dynlexpad.pmc
   branches/ops_pct/src/dynpmc/foo.pmc
   branches/ops_pct/src/dynpmc/gdbmhash.pmc
   branches/ops_pct/src/dynpmc/rational.pmc
   branches/ops_pct/src/embed.c
   branches/ops_pct/src/exceptions.c
   branches/ops_pct/src/exit.c
   branches/ops_pct/src/extend.c
   branches/ops_pct/src/frame_builder.c
   branches/ops_pct/src/gc/alloc_memory.c   (contents, props changed)
   branches/ops_pct/src/gc/alloc_resources.c   (contents, props changed)
   branches/ops_pct/src/gc/api.c   (contents, props changed)
   branches/ops_pct/src/gc/gc_inf.c
   branches/ops_pct/src/gc/gc_ms.c
   branches/ops_pct/src/gc/gc_private.h
   branches/ops_pct/src/gc/malloc.c   (props changed)
   branches/ops_pct/src/gc/malloc_trace.c   (props changed)
   branches/ops_pct/src/gc/mark_sweep.c   (contents, props changed)
   branches/ops_pct/src/gc/system.c   (contents, props changed)
   branches/ops_pct/src/global.c
   branches/ops_pct/src/global_setup.c
   branches/ops_pct/src/hash.c
   branches/ops_pct/src/hll.c
   branches/ops_pct/src/interp/inter_cb.c   (contents, props changed)
   branches/ops_pct/src/interp/inter_create.c   (contents, props changed)
   branches/ops_pct/src/interp/inter_misc.c   (contents, props changed)
   branches/ops_pct/src/io/api.c
   branches/ops_pct/src/io/buffer.c
   branches/ops_pct/src/io/core.c
   branches/ops_pct/src/io/filehandle.c
   branches/ops_pct/src/io/socket_api.c
   branches/ops_pct/src/io/socket_unix.c
   branches/ops_pct/src/io/socket_win32.c
   branches/ops_pct/src/io/unix.c
   branches/ops_pct/src/key.c
   branches/ops_pct/src/library.c
   branches/ops_pct/src/main.c
   branches/ops_pct/src/multidispatch.c
   branches/ops_pct/src/nci_test.c
   branches/ops_pct/src/oo.c
   branches/ops_pct/src/ops/bit.ops
   branches/ops_pct/src/ops/cmp.ops
   branches/ops_pct/src/ops/core.ops
   branches/ops_pct/src/ops/core_ops.c
   branches/ops_pct/src/ops/experimental.ops
   branches/ops_pct/src/ops/io.ops
   branches/ops_pct/src/ops/math.ops
   branches/ops_pct/src/ops/object.ops
   branches/ops_pct/src/ops/ops.num
   branches/ops_pct/src/ops/pmc.ops
   branches/ops_pct/src/ops/set.ops
   branches/ops_pct/src/ops/sys.ops
   branches/ops_pct/src/packfile.c
   branches/ops_pct/src/packfile/pf_items.c
   branches/ops_pct/src/parrot_debugger.c
   branches/ops_pct/src/pbc_dump.c
   branches/ops_pct/src/pbc_merge.c
   branches/ops_pct/src/pmc.c
   branches/ops_pct/src/pmc/arrayiterator.pmc
   branches/ops_pct/src/pmc/bigint.pmc
   branches/ops_pct/src/pmc/bignum.pmc
   branches/ops_pct/src/pmc/callcontext.pmc
   branches/ops_pct/src/pmc/capture.pmc
   branches/ops_pct/src/pmc/class.pmc
   branches/ops_pct/src/pmc/codestring.pmc
   branches/ops_pct/src/pmc/complex.pmc
   branches/ops_pct/src/pmc/continuation.pmc
   branches/ops_pct/src/pmc/coroutine.pmc
   branches/ops_pct/src/pmc/cpointer.pmc
   branches/ops_pct/src/pmc/default.pmc
   branches/ops_pct/src/pmc/env.pmc
   branches/ops_pct/src/pmc/exception.pmc
   branches/ops_pct/src/pmc/exporter.pmc
   branches/ops_pct/src/pmc/filehandle.pmc
   branches/ops_pct/src/pmc/fixedbooleanarray.pmc
   branches/ops_pct/src/pmc/fixedfloatarray.pmc
   branches/ops_pct/src/pmc/fixedintegerarray.pmc
   branches/ops_pct/src/pmc/fixedpmcarray.pmc
   branches/ops_pct/src/pmc/fixedstringarray.pmc
   branches/ops_pct/src/pmc/float.pmc
   branches/ops_pct/src/pmc/handle.pmc
   branches/ops_pct/src/pmc/hash.pmc
   branches/ops_pct/src/pmc/hashiterator.pmc
   branches/ops_pct/src/pmc/imageio.pmc
   branches/ops_pct/src/pmc/integer.pmc
   branches/ops_pct/src/pmc/key.pmc
   branches/ops_pct/src/pmc/lexinfo.pmc
   branches/ops_pct/src/pmc/managedstruct.pmc
   branches/ops_pct/src/pmc/namespace.pmc
   branches/ops_pct/src/pmc/nci.pmc
   branches/ops_pct/src/pmc/null.pmc
   branches/ops_pct/src/pmc/object.pmc
   branches/ops_pct/src/pmc/orderedhash.pmc
   branches/ops_pct/src/pmc/os.pmc
   branches/ops_pct/src/pmc/packfile.pmc
   branches/ops_pct/src/pmc/packfileannotations.pmc
   branches/ops_pct/src/pmc/packfileconstanttable.pmc
   branches/ops_pct/src/pmc/packfiledirectory.pmc
   branches/ops_pct/src/pmc/packfilefixupentry.pmc
   branches/ops_pct/src/pmc/packfilefixuptable.pmc
   branches/ops_pct/src/pmc/packfilerawsegment.pmc
   branches/ops_pct/src/pmc/parrotinterpreter.pmc
   branches/ops_pct/src/pmc/parrotlibrary.pmc
   branches/ops_pct/src/pmc/parrotthread.pmc
   branches/ops_pct/src/pmc/pmc.num
   branches/ops_pct/src/pmc/pmcproxy.pmc
   branches/ops_pct/src/pmc/pointer.pmc
   branches/ops_pct/src/pmc/resizablebooleanarray.pmc
   branches/ops_pct/src/pmc/resizablefloatarray.pmc
   branches/ops_pct/src/pmc/resizableintegerarray.pmc
   branches/ops_pct/src/pmc/resizablepmcarray.pmc
   branches/ops_pct/src/pmc/resizablestringarray.pmc
   branches/ops_pct/src/pmc/role.pmc
   branches/ops_pct/src/pmc/scalar.pmc
   branches/ops_pct/src/pmc/scheduler.pmc
   branches/ops_pct/src/pmc/sockaddr.pmc
   branches/ops_pct/src/pmc/socket.pmc
   branches/ops_pct/src/pmc/string.pmc
   branches/ops_pct/src/pmc/stringhandle.pmc
   branches/ops_pct/src/pmc/stringiterator.pmc
   branches/ops_pct/src/pmc/sub.pmc
   branches/ops_pct/src/pmc/task.pmc
   branches/ops_pct/src/pmc/undef.pmc
   branches/ops_pct/src/pmc/unmanagedstruct.pmc
   branches/ops_pct/src/pmc_freeze.c
   branches/ops_pct/src/runcore/cores.c   (contents, props changed)
   branches/ops_pct/src/runcore/main.c   (contents, props changed)
   branches/ops_pct/src/runcore/profiling.c   (contents, props changed)
   branches/ops_pct/src/runcore/trace.c   (props changed)
   branches/ops_pct/src/scheduler.c
   branches/ops_pct/src/string/api.c
   branches/ops_pct/src/string/charset.c
   branches/ops_pct/src/string/charset/ascii.c
   branches/ops_pct/src/string/encoding.c
   branches/ops_pct/src/string/encoding/utf16.c
   branches/ops_pct/src/string/encoding/utf8.c
   branches/ops_pct/src/string/primitives.c
   branches/ops_pct/src/sub.c
   branches/ops_pct/src/thread.c
   branches/ops_pct/src/utils.c
   branches/ops_pct/src/vtable.tbl
   branches/ops_pct/src/vtables.c
   branches/ops_pct/t/codingstd/c_arg_assert.t
   branches/ops_pct/t/codingstd/c_cppcomments.t
   branches/ops_pct/t/codingstd/c_function_docs.t
   branches/ops_pct/t/codingstd/c_indent.t
   branches/ops_pct/t/codingstd/c_macro_args.t
   branches/ops_pct/t/codingstd/c_parens.t
   branches/ops_pct/t/codingstd/copyright.t
   branches/ops_pct/t/codingstd/cuddled_else.t
   branches/ops_pct/t/codingstd/linelength.t
   branches/ops_pct/t/codingstd/opcode_doc.t
   branches/ops_pct/t/codingstd/perlcritic.t
   branches/ops_pct/t/codingstd/pod_description.t
   branches/ops_pct/t/codingstd/pod_syntax.t
   branches/ops_pct/t/codingstd/trailing_space.t
   branches/ops_pct/t/compilers/imcc/imcpasm/optc.t
   branches/ops_pct/t/compilers/imcc/reg/spill.t
   branches/ops_pct/t/compilers/imcc/syn/hll.t
   branches/ops_pct/t/compilers/imcc/syn/labels.t
   branches/ops_pct/t/compilers/imcc/syn/objects.t
   branches/ops_pct/t/compilers/imcc/syn/op.t
   branches/ops_pct/t/compilers/imcc/syn/scope.t
   branches/ops_pct/t/compilers/imcc/syn/subflags.t
   branches/ops_pct/t/compilers/imcc/syn/veracity.t
   branches/ops_pct/t/compilers/json/from_parrot.t
   branches/ops_pct/t/compilers/pct/past.t
   branches/ops_pct/t/compilers/pge/00-basic.t
   branches/ops_pct/t/compilers/pge/02-match.t
   branches/ops_pct/t/compilers/pge/03-optable.t
   branches/ops_pct/t/compilers/pge/04-compile.t
   branches/ops_pct/t/compilers/pge/06-grammar.t
   branches/ops_pct/t/compilers/pge/pge-hs.t
   branches/ops_pct/t/compilers/tge/NoneGrammar.tg   (props changed)
   branches/ops_pct/t/compilers/tge/basic.t
   branches/ops_pct/t/compilers/tge/parser.t
   branches/ops_pct/t/configure/008-file_based_configuration.t
   branches/ops_pct/t/configure/025-options_test.t
   branches/ops_pct/t/configure/026-options_test.t
   branches/ops_pct/t/configure/034-step.t
   branches/ops_pct/t/distro/meta_yml.t
   branches/ops_pct/t/dynoplibs/math.t
   branches/ops_pct/t/dynoplibs/obscure.t
   branches/ops_pct/t/dynpmc/foo2.t
   branches/ops_pct/t/dynpmc/gdbmhash.t
   branches/ops_pct/t/dynpmc/rational.t
   branches/ops_pct/t/dynpmc/subproxy.t
   branches/ops_pct/t/examples/catchall.t
   branches/ops_pct/t/examples/pod.t
   branches/ops_pct/t/examples/tutorial.t
   branches/ops_pct/t/harness
   branches/ops_pct/t/library/cgi_query_hash.t
   branches/ops_pct/t/library/configure.t
   branches/ops_pct/t/library/coroutine.t
   branches/ops_pct/t/library/getopt_obj.t
   branches/ops_pct/t/library/md5.t
   branches/ops_pct/t/library/mime_base64.t
   branches/ops_pct/t/library/p6object.t
   branches/ops_pct/t/library/parrotlib.t
   branches/ops_pct/t/library/pg.t
   branches/ops_pct/t/library/protoobject.t
   branches/ops_pct/t/library/rand.t
   branches/ops_pct/t/library/tcl_glob.t
   branches/ops_pct/t/library/test_class.t
   branches/ops_pct/t/library/test_more.t
   branches/ops_pct/t/library/uuid.t
   branches/ops_pct/t/manifest/01-basic.t
   branches/ops_pct/t/manifest/02-regenerate_file.t
   branches/ops_pct/t/manifest/03-regenerate_skip.t
   branches/ops_pct/t/manifest/04-alt_file.t
   branches/ops_pct/t/manifest/05-alt_skip.t
   branches/ops_pct/t/native_pbc/annotations.pbc
   branches/ops_pct/t/native_pbc/header.t
   branches/ops_pct/t/native_pbc/integer.t
   branches/ops_pct/t/native_pbc/integer_1.pbc
   branches/ops_pct/t/native_pbc/number.t
   branches/ops_pct/t/native_pbc/number_1.pbc
   branches/ops_pct/t/native_pbc/string.t
   branches/ops_pct/t/native_pbc/string_1.pbc
   branches/ops_pct/t/oo/attributes.t
   branches/ops_pct/t/oo/composition.t
   branches/ops_pct/t/oo/inheritance.t
   branches/ops_pct/t/oo/metamodel.t
   branches/ops_pct/t/oo/methods.t
   branches/ops_pct/t/oo/mro-c3.t
   branches/ops_pct/t/oo/names.t
   branches/ops_pct/t/oo/new-old.t
   branches/ops_pct/t/oo/new.t
   branches/ops_pct/t/oo/ops.t
   branches/ops_pct/t/oo/root_new.t   (contents, props changed)
   branches/ops_pct/t/oo/subclass.t
   branches/ops_pct/t/op/00ff-dos.t
   branches/ops_pct/t/op/00ff-unix.t
   branches/ops_pct/t/op/64bit.t
   branches/ops_pct/t/op/annotate.t
   branches/ops_pct/t/op/arithmetics.t
   branches/ops_pct/t/op/arithmetics_pmc.t
   branches/ops_pct/t/op/box.t
   branches/ops_pct/t/op/calling.t
   branches/ops_pct/t/op/cc_params.t
   branches/ops_pct/t/op/comp.t
   branches/ops_pct/t/op/exit.t
   branches/ops_pct/t/op/fetch.t
   branches/ops_pct/t/op/gc.t
   branches/ops_pct/t/op/inf_nan.t
   branches/ops_pct/t/op/integer.t
   branches/ops_pct/t/op/literal.t
   branches/ops_pct/t/op/number.t
   branches/ops_pct/t/op/sprintf.t
   branches/ops_pct/t/op/sprintf2.t
   branches/ops_pct/t/op/string.t
   branches/ops_pct/t/op/string_cmp.t
   branches/ops_pct/t/op/string_mem.t
   branches/ops_pct/t/op/stringu.t
   branches/ops_pct/t/op/sysinfo.t
   branches/ops_pct/t/op/time.t
   branches/ops_pct/t/op/trans.t
   branches/ops_pct/t/op/trans_old.t
   branches/ops_pct/t/op/vivify.t
   branches/ops_pct/t/perl/Parrot_IO.t
   branches/ops_pct/t/perl/Parrot_Test.t
   branches/ops_pct/t/pir/macro.t
   branches/ops_pct/t/pmc/arrayiterator.t
   branches/ops_pct/t/pmc/bigint.t
   branches/ops_pct/t/pmc/capture.t
   branches/ops_pct/t/pmc/class.t
   branches/ops_pct/t/pmc/complex.t
   branches/ops_pct/t/pmc/continuation.t
   branches/ops_pct/t/pmc/default.t
   branches/ops_pct/t/pmc/env.t
   branches/ops_pct/t/pmc/eventhandler.t
   branches/ops_pct/t/pmc/exception.t
   branches/ops_pct/t/pmc/exporter.t
   branches/ops_pct/t/pmc/filehandle.t
   branches/ops_pct/t/pmc/fixedbooleanarray.t
   branches/ops_pct/t/pmc/fixedintegerarray.t
   branches/ops_pct/t/pmc/fixedpmcarray.t
   branches/ops_pct/t/pmc/fixedstringarray.t
   branches/ops_pct/t/pmc/handle.t
   branches/ops_pct/t/pmc/hash.t
   branches/ops_pct/t/pmc/hashiterator.t
   branches/ops_pct/t/pmc/hashiteratorkey.t
   branches/ops_pct/t/pmc/integer.t
   branches/ops_pct/t/pmc/iterator.t
   branches/ops_pct/t/pmc/lexinfo.t
   branches/ops_pct/t/pmc/lexpad.t
   branches/ops_pct/t/pmc/multidispatch.t
   branches/ops_pct/t/pmc/namespace-old.t   (props changed)
   branches/ops_pct/t/pmc/namespace.t
   branches/ops_pct/t/pmc/objects.t
   branches/ops_pct/t/pmc/orderedhashiterator.t
   branches/ops_pct/t/pmc/os.t
   branches/ops_pct/t/pmc/packfile.t
   branches/ops_pct/t/pmc/packfileannotation.t
   branches/ops_pct/t/pmc/packfileannotations.t
   branches/ops_pct/t/pmc/packfileconstanttable.t
   branches/ops_pct/t/pmc/packfiledirectory.t
   branches/ops_pct/t/pmc/packfilefixupentry.t
   branches/ops_pct/t/pmc/packfilefixuptable.t
   branches/ops_pct/t/pmc/packfilerawsegment.t
   branches/ops_pct/t/pmc/packfilesegment.t
   branches/ops_pct/t/pmc/parrotinterpreter.t
   branches/ops_pct/t/pmc/pmc.t
   branches/ops_pct/t/pmc/prop.t
   branches/ops_pct/t/pmc/ro.t
   branches/ops_pct/t/pmc/scalar.t
   branches/ops_pct/t/pmc/scheduler.t
   branches/ops_pct/t/pmc/signal.t
   branches/ops_pct/t/pmc/string.t
   branches/ops_pct/t/pmc/stringhandle.t
   branches/ops_pct/t/pmc/stringiterator.t
   branches/ops_pct/t/pmc/sub.t
   branches/ops_pct/t/run/options.t
   branches/ops_pct/t/src/embed.t   (contents, props changed)
   branches/ops_pct/t/src/extend.t
   branches/ops_pct/t/steps/auto/cgoto-01.t
   branches/ops_pct/t/steps/auto/snprintf-01.t
   branches/ops_pct/t/steps/auto/warnings-01.t
   branches/ops_pct/t/steps/gen/makefiles-01.t
   branches/ops_pct/t/steps/init/hints/darwin-01.t
   branches/ops_pct/t/steps/init/hints/linux-01.t   (props changed)
   branches/ops_pct/t/tools/dev/pmctree.t
   branches/ops_pct/t/tools/install/02-install_files.t
   branches/ops_pct/t/tools/install/03-lines_to_files.t
   branches/ops_pct/t/tools/ops2pm/05-renum_op_map_file.t
   branches/ops_pct/t/tools/ops2pm/08-sort_ops.t
   branches/ops_pct/t/tools/pbc_disassemble.t
   branches/ops_pct/t/tools/pmc2cutils/03-dump_vtable.t
   branches/ops_pct/t/tools/pmc2cutils/04-dump_pmc.t
   branches/ops_pct/t/tools/pmc2cutils/05-gen_c.t
   branches/ops_pct/tools/build/h2inc.pl   (props changed)
   branches/ops_pct/tools/dev/checkdepend.pl
   branches/ops_pct/tools/dev/fetch_languages.pl   (props changed)
   branches/ops_pct/tools/dev/mk_gitignore.pl   (props changed)
   branches/ops_pct/tools/dev/mk_language_shell.pl
   branches/ops_pct/tools/dev/vtablize.pl
   branches/ops_pct/tools/util/perlcritic-cage.conf   (props changed)
   branches/ops_pct/tools/util/release.json

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

Modified: branches/ops_pct/ChangeLog
==============================================================================
--- branches/ops_pct/ChangeLog	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/ChangeLog	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,9 @@
 #1 $Id$
 
+2010.02.16     darbelo
+	* Released 2.1.0
+	See NEWS for more.
+
 2010.01.19     chromatic
 	* Released 2.0.0
 	See NEWS for more.

Modified: branches/ops_pct/Configure.pl
==============================================================================
--- branches/ops_pct/Configure.pl	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/Configure.pl	Sun Mar  7 19:33:20 2010	(r44743)
@@ -646,7 +646,6 @@
     gen::core_pmcs
     gen::crypto
     gen::opengl
-    gen::call_list
     gen::makefiles
     gen::platform
     gen::config_pm

Modified: branches/ops_pct/DEPRECATED.pod
==============================================================================
--- branches/ops_pct/DEPRECATED.pod	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/DEPRECATED.pod	Sun Mar  7 19:33:20 2010	(r44743)
@@ -52,23 +52,6 @@
 
 L<https://trac.parrot.org/parrot/ticket/264>
 
-=item various VTABLE functions [eligible in 1.5]
-
-The get_bigint, set_bigint_*, pow, i_pow and nextkey_keyed VTABLE functions are
-deprecated and will be removed.
-
-L<https://trac.parrot.org/parrot/ticket/866>
-
-=item Use of undocumented variables in class_init [eligible in 2.1]
-
-The current implementation allows the class_init vtable function body to
-use local symbols from the generated part. For example, some PMC used
-to use the pass counter. In the future, the class_init body from the PMC
-file may not be inserted directly in the body of the generated one,
-so this usage will not be allowed.
-
-L<https://trac.parrot.org/parrot/ticket/918>
-
 =item Overriding vtable invoke in PIR objects [experimental]
 
 The VTABLE invoke in object.pmc puts SELF at the start of the
@@ -77,20 +60,28 @@
 
 L<https://trac.parrot.org/parrot/ticket/103>
 
-=item All bitwise VTABLE functions [eligible in 2.1]
-
-All bitwise VTABLE functions (all VTABLE functions containing C<bitwise> in
-their names) will be removed.  Equivalent functionality will by supplied by
-bitwise dynops.
-
-L<https://trac.parrot.org/parrot/ticket/1260>
-
 =item CPointer PMC [eligible in 2.1]
 
 And all uses in the Parrot calling conventions.
 
 L<https://trac.parrot.org/parrot/ticket/1407>
 
+=item Digest dynpmcs [eligible in 2.4]
+
+The digest dynpmcs are, since the posting of this notice, available on
+http://gitorious.org/digest-dynpmcs and will no longer be distributed
+with parrot after 2.3.
+
+L<https://trac.parrot.org/parrot/ticket/1467>
+
+=item gdbmhash dynpmc [eligible in 2.4]
+
+The gdbmhash dynpmc is, since the posting of this notice, available on
+http://gitorious.org/dbm-dynpmcs and will no longer be distributed
+with parrot after 2.3.
+
+L<https://trac.parrot.org/parrot/ticket/1469>
+
 =back
 
 =head1 Opcodes
@@ -113,6 +104,13 @@
 for Sub, Exception, and related PMC types will instead be handled by
 get_label and set_label.
 
+=item sizeof [eligible in 2.4]
+
+This opcode uses the old integer ID for a PMC type; this opcode should be changed
+to use the current methods to lookup a PMC or removed entirely.
+
+L<https://trac.parrot.org/parrot/ticket/633>
+
 =item All bitwise ops [eligible in 2.1]
 
 All bitwise ops (all ops containing C<bitwise> in their names) will be provided
@@ -132,6 +130,11 @@
 
 L<https://trac.parrot.org/parrot/ticket/1406>
 
+=item GC_SYS_NAME option to interpinfo_s_i [experimental]
+
+Ability to get the string name of the current GC core from the interpinfo_s_i.
+See r43900 and r43904 for details.
+
 =back
 
 =head1 Bytecode
@@ -164,27 +167,6 @@
 
 L<https://trac.parrot.org/parrot/ticket/906>
 
-=item named class/pmc lookup in pir syntax such as new, isa, subclass,
-    get_class, etc [eligible in 1.1]
-
-Class PMC name resolution will be the following.
-
-if the arg is a STRING
-  Relative to the current Namespace
-
-if the arg is a Array (of any sort) or Key
-  Relative to the current HLL Namespace
-
-if the arg is a Namespace or Class PMC
-  The passed in class or the class attached to the passed in namespace.
-
-L<https://trac.parrot.org/parrot/ticket/159>
-
-=item load or include paths prefixed with 'library/' or 'include/'
-[eligible in 1.5]
-
-L<https://trac.parrot.org/parrot/ticket/511>
-
 =item continuation-based ExceptionHandlers [eligible in 2.1]
 
 L<https://trac.parrot.org/parrot/ticket/1091>
@@ -214,44 +196,18 @@
 =item C API coding standards cleanup [eligible in 1.1]
 
 All C API functions that aren't currently named according to the
-'Parrot_<system>_*' scheme will be renamed. If you depend on these
-functions in an extending/embedding interface or C-level custom PMCs,
-check in 1.4 or 2.0 for the new names.
+'Parrot_<system>_*' scheme will be renamed. A list of renamed
+functions will be kept in the ticket at:
 
 L<https://trac.parrot.org/parrot/ticket/443>
 
-=item Sub/method invocation functions [eligible in 2.1]
-
-The old 'Parrot_call_*' functions for invoking a sub/method object from C are
-deprecated, replaced by 'Parrot_ext_call'.
-
-L<https://trac.parrot.org/parrot/ticket/1145>
-
 =item PMC Attributes Allocation Functions [experimental]
 
  Parrot_gc_allocate_pmc_attributes
  Parrot_gc_free_pmc_attributes
 
 These items and related helper functions are added as experimental support
-for TT #895
-
-=item PDB_compile and PDB_eval [eligible in 2.1]
-
-The function PDB_compile doesn't work since some time, and his implementation
-was a hack. His functionality may be reimplemented in another way. Until the
-end of deprecation cycle it just throws an exception.
-
-The PDB_eval function, that used in the debugger to support the eval
-command, was using PDB_compile. His functionality must be reimplemented
-in another way and with a name that follows current conventions, in the
-meantime and until the end of the deprecation cycle it just shows a
-diagnostic message.
-
-L<https://trac.parrot.org/parrot/ticket/872>
-
-=item Parrot_oo_get_namespace [eligible in 2.1]
-
-L<https://trac.parrot.org/parrot/ticket/1069>
+for L<https://trac.parrot.org/parrot/ticket/895>
 
 =item STRING Out parameters in Parrot_str_* functions [eligible in 2.1]
 
@@ -262,17 +218,6 @@
 
 =head1 Compiler tools
 
-=head2 PASM1 compiler
-
-=over 4
-
-=item C<PASM1 compiler> [eligible in 2.1]
-
-See PDB_compile. Note that the current version of the C<PASM1> compiler
-issues a warning and is not functional. (However, it used to segfault.)
-
-=back
-
 =head2 Parrot Grammar Engine (PGE)
 
 =over 4
@@ -321,35 +266,20 @@
 
 =back
 
-=head2 Not Quite Perl (NQP)
+=head1 Compilers
 
 =over 4
 
-=item C< $(...) > syntax  [eligible in 1.5]
-
-The C< $(...) > syntax for obtaining a result object from a Match
-object will no longer work.  The new syntax is to invoke the
-C<.ast> method on the Match object.
+=item json [eligible in 2.4]
 
-L<https://trac.parrot.org/parrot/ticket/459>
+The json compiler was dupicated into data_json some time ago. If you're
+using json, just use data_json instead, it's the same code. See TT #1461.
 
-=item Quoted items [eligible in 1.5]
+=item nqp [eligible in 2.4]
 
-Double-quoted strings will interpret unescaped $-names
-as interpolated variables in the string.  Bare slashes
-will introduce regular expressions.  The C<< <foo bar> >>
-syntax will produce an array of strings instead of a single
-string.
+Replaced by ext/nqp-rx and parrot-nqp.
 
-L<https://trac.parrot.org/parrot/ticket/837>
-
-=item C<< PIR q:to:<xyz> >> inline PIR [eligible in 1.5]
-
-The C<< PIR q:to:<xyz> >> form of inline PIR in NQP scripts is
-deprecated.  Use C< Q:PIR { ... } >  or C< Q:PIR {{ ... }} >
-instead.
-
-L<https://trac.parrot.org/parrot/ticket/842>
+L<http://trac.parrot.org/parrot/ticket/1462>
 
 =back
 
@@ -357,11 +287,12 @@
 
 =over 4
 
-=item MT19937 [eligible in 2.1]
+=item PARROT_LIBRARY and PARROT_INCLUDE environment variables [experimental]
 
-L<https://trac.parrot.org/parrot/ticket/1278> - latest version now hosted
-at L<http://github.com/fperrad/parrot-MT19937>. After 2.0, users will have
-to install via C<plumage>.
+L<https://trac.parrot.org/parrot/ticket/1429>
+
+A way to provide an equivalent of -L and -I parrot command line options
+to language that doesn't support it.
 
 =item JSON, JSON, and Config;JSON [eligible in 1.5]
 
@@ -375,14 +306,6 @@
 
 L<https://trac.parrot.org/parrot/ticket/852>
 
-=item Library name changes [eligible in 2.1]
-
-The use of C<::> a namespace separator is deprecated.  Core libraries will
-change to use multi-level keys instead.  For example, C<Data::Dumper> will
-change to C<Data; Dumper>.  Affected libraries also include:
-C<Parrot::Coroutine>, C<SDL>, C<Test::Builder>, C<YAML::Dumper>, and
-C<PCRE::NCI>.
-
 =back
 
 =head1 Footnotes

Modified: branches/ops_pct/MANIFEST
==============================================================================
--- branches/ops_pct/MANIFEST	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/MANIFEST	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Sat Mar  6 12:29:40 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sun Mar  7 19:24:21 2010 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -34,7 +34,7 @@
 compilers/data_json/data_json/grammar.pg                    [data_json]
 compilers/data_json/data_json/pge2pir.tg                    [data_json]
 compilers/imcc/Defines.mak                                  [imcc]
-compilers/imcc/Rules.mak                                    [imcc]
+compilers/imcc/Rules.in                                     [imcc]
 compilers/imcc/cfg.c                                        [imcc]
 compilers/imcc/cfg.h                                        [imcc]
 compilers/imcc/debug.c                                      [imcc]
@@ -132,8 +132,10 @@
 compilers/nqp/t/harness                                     [test]
 compilers/opsc/Defines.mak                                  [opsc]
 compilers/opsc/Rules.mak                                    [opsc]
+compilers/opsc/TODO                                         [opsc]
 compilers/opsc/gen/Ops/Compiler/IGNOREME                    [opsc]
 compilers/opsc/ops/oplib.pm                                 [opsc]
+compilers/opsc/ops2c.nqp                                    [opsc]
 compilers/opsc/opsc.pir                                     [opsc]
 compilers/opsc/runcore/base.pm                              [opsc]
 compilers/opsc/runcore/c.pm                                 [opsc]
@@ -335,9 +337,6 @@
 config/auto/va_ptr/test_c.in                                []
 config/auto/warnings.pm                                     []
 config/auto/warnings/test_c.in                              []
-config/gen/call_list.pm                                     []
-config/gen/call_list/core.in                                []
-config/gen/call_list/misc.in                                []
 config/gen/config_h.pm                                      []
 config/gen/config_h/config_h.in                             []
 config/gen/config_h/feature_h.in                            []
@@ -352,7 +351,6 @@
 config/gen/crypto/digest_pmc.in                             []
 config/gen/crypto/digest_t.in                               []
 config/gen/makefiles.pm                                     []
-config/gen/makefiles/CFLAGS.in                              []
 config/gen/makefiles/docs.in                                []
 config/gen/makefiles/dynoplibs.in                           []
 config/gen/makefiles/dynpmc.in                              []
@@ -1055,7 +1053,6 @@
 include/parrot/embed.h                                      [main]include
 include/parrot/encoding.h                                   [main]include
 include/parrot/enums.h                                      [main]include
-include/parrot/events.h                                     [main]include
 include/parrot/exceptions.h                                 [main]include
 include/parrot/exit.h                                       [main]include
 include/parrot/extend.h                                     [main]include
@@ -1081,6 +1078,7 @@
 include/parrot/oo_private.h                                 [main]include
 include/parrot/op.h                                         [main]include
 include/parrot/oplib.h                                      [main]include
+include/parrot/oplib/core_ops.h                             [main]include
 include/parrot/packfile.h                                   [main]include
 include/parrot/parrot.h                                     [main]include
 include/parrot/pmc.h                                        [main]include
@@ -1100,7 +1098,6 @@
 include/parrot/thr_pthread.h                                [main]include
 include/parrot/thr_windows.h                                [main]include
 include/parrot/thread.h                                     [main]include
-include/parrot/tsq.h                                        [main]include
 include/parrot/vtables.h                                    [main]include
 include/parrot/warnings.h                                   [main]include
 include/pmc/dummy                                           [main]include
@@ -1265,7 +1262,6 @@
 runtime/parrot/library/JSON.pir                             [library]
 runtime/parrot/library/MIME/Base64.pir                      [library]
 runtime/parrot/library/Math/Rand.pir                        [library]
-runtime/parrot/library/Math/Random/mt19937ar.pir            [library]
 runtime/parrot/library/NCI/Utils.pir                        [library]
 runtime/parrot/library/OpenGL.pir                           [library]
 runtime/parrot/library/OpenGL/Math.pir                      [library]
@@ -1362,7 +1358,6 @@
 src/dynpmc/rotest.pmc                                       [devel]src
 src/dynpmc/subproxy.pmc                                     [devel]src
 src/embed.c                                                 []
-src/events.c                                                []
 src/exceptions.c                                            []
 src/exit.c                                                  []
 src/extend.c                                                []
@@ -1404,11 +1399,17 @@
 src/main.c                                                  []
 src/misc.c                                                  []
 src/multidispatch.c                                         []
+src/nci/api.c                                               []
+src/nci/core_thunks.c                                       []
+src/nci/core_thunks.nci                                     []
+src/nci/extra_thunks.c                                      []
+src/nci/extra_thunks.nci                                    []
 src/nci_test.c                                              []
 src/oo.c                                                    []
 src/ops/bit.ops                                             []
 src/ops/cmp.ops                                             []
 src/ops/core.ops                                            []
+src/ops/core_ops.c                                          []
 src/ops/debug.ops                                           []
 src/ops/experimental.ops                                    []
 src/ops/io.ops                                              []
@@ -1463,6 +1464,7 @@
 src/pmc/hashiterator.pmc                                    [devel]src
 src/pmc/hashiteratorkey.pmc                                 [devel]src
 src/pmc/imageio.pmc                                         [devel]src
+src/pmc/imageiosize.pmc                                     [devel]src
 src/pmc/integer.pmc                                         [devel]src
 src/pmc/iterator.pmc                                        [devel]src
 src/pmc/key.pmc                                             [devel]src
@@ -1474,6 +1476,8 @@
 src/pmc/nci.pmc                                             [devel]src
 src/pmc/null.pmc                                            [devel]src
 src/pmc/object.pmc                                          [devel]src
+src/pmc/opcode.pmc                                          [devel]src
+src/pmc/oplib.pmc                                           [devel]src
 src/pmc/orderedhash.pmc                                     [devel]src
 src/pmc/orderedhashiterator.pmc                             [devel]src
 src/pmc/os.pmc                                              [devel]src
@@ -1546,7 +1550,6 @@
 src/string/unicode.h                                        []
 src/sub.c                                                   []
 src/thread.c                                                []
-src/tsq.c                                                   []
 src/utils.c                                                 []
 src/vtable.tbl                                              [devel]src
 src/vtables.c                                               []
@@ -1594,6 +1597,7 @@
 t/compilers/imcc/imcpasm/pcc.t                              [test]
 t/compilers/imcc/reg/alloc.t                                [test]
 t/compilers/imcc/reg/spill.t                                [test]
+t/compilers/imcc/reg/spill_old.t                            [test]
 t/compilers/imcc/syn/clash.t                                [test]
 t/compilers/imcc/syn/const.t                                [test]
 t/compilers/imcc/syn/errors.t                               [test]
@@ -1756,8 +1760,6 @@
 t/library/iter.t                                            [test]
 t/library/md5.t                                             [test]
 t/library/mime_base64.t                                     [test]
-t/library/mt19937ar.t                                       [test]
-t/library/mt19937ar.txt                                     [test]
 t/library/p6object.t                                        [test]
 t/library/parrotlib.t                                       [test]
 t/library/pcre.t                                            [test]
@@ -1834,7 +1836,6 @@
 t/op/arithmetics.t                                          [test]
 t/op/arithmetics_pmc.t                                      [test]
 t/op/basic.t                                                [test]
-t/op/bitwise.t                                              [test]
 t/op/box.t                                                  [test]
 t/op/calling.t                                              [test]
 t/op/cc_params.t                                            [test]
@@ -1844,9 +1845,11 @@
 t/op/comp.t                                                 [test]
 t/op/copy.t                                                 [test]
 t/op/debuginfo.t                                            [test]
+t/op/errorson.t                                             [test]
 t/op/exceptions.t                                           [test]
 t/op/exit.t                                                 [test]
 t/op/fetch.t                                                [test]
+t/op/gc-leaky.t                                             [test]
 t/op/gc.t                                                   [test]
 t/op/globals.t                                              [test]
 t/op/ifunless.t                                             [test]
@@ -1930,6 +1933,8 @@
 t/pmc/hash.t                                                [test]
 t/pmc/hashiterator.t                                        [test]
 t/pmc/hashiteratorkey.t                                     [test]
+t/pmc/imageio.t                                             [test]
+t/pmc/imageiosize.t                                         [test]
 t/pmc/integer.t                                             [test]
 t/pmc/io.t                                                  [test]
 t/pmc/io_iterator.t                                         [test]
@@ -1949,6 +1954,8 @@
 t/pmc/object-mro.t                                          [test]
 t/pmc/object.t                                              [test]
 t/pmc/objects.t                                             [test]
+t/pmc/opcode.t                                              [test]
+t/pmc/oplib.t                                               [test]
 t/pmc/orderedhash.t                                         [test]
 t/pmc/orderedhashiterator.t                                 [test]
 t/pmc/os.t                                                  [test]
@@ -2052,7 +2059,6 @@
 t/steps/auto/thread-01.t                                    [test]
 t/steps/auto/va_ptr-01.t                                    [test]
 t/steps/auto/warnings-01.t                                  [test]
-t/steps/gen/call_list-01.t                                  [test]
 t/steps/gen/config_h-01.t                                   [test]
 t/steps/gen/config_pm-01.t                                  [test]
 t/steps/gen/core_pmcs-01.t                                  [test]
@@ -2162,12 +2168,9 @@
 t/tools/testdata                                            [test]
 tools/build/addopstags.pl                                   []
 tools/build/c2str.pl                                        []
-tools/build/cc_flags.pl                                     []
 tools/build/fixup_gen_file.pl                               []
 tools/build/h2inc.pl                                        []
 tools/build/headerizer.pl                                   []
-tools/build/nativecall.pir                                  []
-tools/build/nativecall.pl                                   []
 tools/build/ops2c.pl                                        [devel]
 tools/build/ops2pm.pl                                       []
 tools/build/parrot_config_c.pl                              []
@@ -2199,8 +2202,10 @@
 tools/dev/mk_language_shell.pl                              [devel]
 tools/dev/mk_manifest_and_skip.pl                           []
 tools/dev/mk_native_pbc                                     []
+tools/dev/mk_nci_thunks.pl                                  []
 tools/dev/mk_rpm_manifests.pl                               []
 tools/dev/nci_test_gen.pl                                   []
+tools/dev/nci_thunk_gen.pir                                 []
 tools/dev/nm.pl                                             []
 tools/dev/nopaste.pl                                        []
 tools/dev/ops_not_tested.pl                                 []

Modified: branches/ops_pct/MANIFEST.SKIP
==============================================================================
--- branches/ops_pct/MANIFEST.SKIP	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/MANIFEST.SKIP	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Mon Feb  8 05:37:36 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Fri Mar  5 16:49:09 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -105,6 +105,12 @@
 ^parrot_config\.pbc/
 ^parrot_debugger$
 ^parrot_debugger/
+^parrot_nci_thunk_gen$
+^parrot_nci_thunk_gen/
+^parrot_nci_thunk_gen\.c$
+^parrot_nci_thunk_gen\.c/
+^parrot_nci_thunk_gen\.pbc$
+^parrot_nci_thunk_gen\.pbc/
 ^parrot_test_run\.tar\.gz$
 ^parrot_test_run\.tar\.gz/
 ^pbc_disassemble$
@@ -166,8 +172,8 @@
 ^compilers/imcc/.*\.obj/
 ^compilers/imcc/.*\.tmp$
 ^compilers/imcc/.*\.tmp/
-^compilers/imcc/CFLAGS$
-^compilers/imcc/CFLAGS/
+^compilers/imcc/Rules\.mak$
+^compilers/imcc/Rules\.mak/
 ^compilers/imcc/imcc$
 ^compilers/imcc/imcc/
 ^compilers/imcc/imclexer\.c$
@@ -258,9 +264,6 @@
 # generated from svn:ignore of 'compilers/tge/TGE/'
 ^compilers/tge/TGE/Parser\.pir$
 ^compilers/tge/TGE/Parser\.pir/
-# generated from svn:ignore of 'config/gen/call_list/'
-^config/gen/call_list/opengl\.in$
-^config/gen/call_list/opengl\.in/
 # generated from svn:ignore of 'docs/'
 ^docs/.*\.tmp$
 ^docs/.*\.tmp/
@@ -581,9 +584,6 @@
 # generated from svn:ignore of 'runtime/parrot/library/Math/'
 ^runtime/parrot/library/Math/.*\.pbc$
 ^runtime/parrot/library/Math/.*\.pbc/
-# generated from svn:ignore of 'runtime/parrot/library/Math/Random/'
-^runtime/parrot/library/Math/Random/.*\.pbc$
-^runtime/parrot/library/Math/Random/.*\.pbc/
 # generated from svn:ignore of 'runtime/parrot/library/NCI/'
 ^runtime/parrot/library/NCI/.*\.pbc$
 ^runtime/parrot/library/NCI/.*\.pbc/
@@ -632,8 +632,6 @@
 ^src/.*\.str/
 ^src/asmfun\..*$
 ^src/asmfun\..*/
-^src/call_list\.txt$
-^src/call_list\.txt/
 ^src/core_pmcs\.c$
 ^src/core_pmcs\.c/
 ^src/exec_cpu\.c$
@@ -644,10 +642,16 @@
 ^src/exec_dep\.h/
 ^src/extend_vtable\.c$
 ^src/extend_vtable\.c/
+^src/extra_nci_thunks\.c$
+^src/extra_nci_thunks\.c/
 ^src/fingerprint\.c$
 ^src/fingerprint\.c/
 ^src/glut_callbacks\.c$
 ^src/glut_callbacks\.c/
+^src/glut_nci_thunks\.c$
+^src/glut_nci_thunks\.c/
+^src/glut_nci_thunks\.nci$
+^src/glut_nci_thunks\.nci/
 ^src/install_config\.c$
 ^src/install_config\.c/
 ^src/jit_cpu\.c$
@@ -656,8 +660,6 @@
 ^src/jit_defs\.c/
 ^src/jit_emit\.h$
 ^src/jit_emit\.h/
-^src/nci\.c$
-^src/nci\.c/
 ^src/null_config\.c$
 ^src/null_config\.c/
 ^src/parrot_config\.c$
@@ -807,6 +809,13 @@
 ^src/io/.*\.obj/
 ^src/io/.*\.str$
 ^src/io/.*\.str/
+# generated from svn:ignore of 'src/nci/'
+^src/nci/.*\.o$
+^src/nci/.*\.o/
+^src/nci/.*\.obj$
+^src/nci/.*\.obj/
+^src/nci/.*\.str$
+^src/nci/.*\.str/
 # generated from svn:ignore of 'src/ops/'
 ^src/ops/.*\.c$
 ^src/ops/.*\.c/

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

Modified: branches/ops_pct/META.yml
==============================================================================
--- branches/ops_pct/META.yml	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/META.yml	Sun Mar  7 19:33:20 2010	(r44743)
@@ -4,7 +4,7 @@
 # See http://module-build.sourceforge.net/META-spec-current.html for details.
 ---
 name: parrot
-version: 2.0.0
+version: 2.1.0
 author: parrot-dev at lists.parrot.org
 abstract: a virtual machine designed for dynamic languages
 license: artistic2

Modified: branches/ops_pct/NEWS
==============================================================================
--- branches/ops_pct/NEWS	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/NEWS	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,21 @@
 # $Id$
 
+New in 2.1.0
+- Core changes
+  + GC performance and encapsulation were greatly improved.
+  + PMC freeze refactored.
+  + More Makefile and build improvements.
+- API Changes
+  + The Array PMC was removed.
+  + Several deprecated vtables were removed.
+  + The OrderedHash PMC was substantialy improved.
+- Platforms
+  + Packaging improvements on some operating systems.
+- Tools
+  + Some cases in pbc_merge are now handled.
+  + Improvements were made to the dependency checker.
+  + New tool nativecall.pir added.
+
 New in 2.0.0
 - Features
   + Context PMCs now support attribute-based introspection

Modified: branches/ops_pct/PBC_COMPAT
==============================================================================
--- branches/ops_pct/PBC_COMPAT	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/PBC_COMPAT	Sun Mar  7 19:33:20 2010	(r44743)
@@ -27,6 +27,8 @@
 
 # please insert tab separated entries at the top of the list
 
+6.4	2010.03.02	cotto	remove prederef__ and reserved
+6.3	2010.02.16	whiteknight	Add OpLib and Opcode PMCs
 6.2	2010.01.31	cotto	serialization-related changes to ParrotInterpreter
 6.1	2010.01.30	whiteknight	remove Array PMC
 6.0	2010.01.19	chromatic	released 2.0.0

Modified: branches/ops_pct/PLATFORMS
==============================================================================
--- branches/ops_pct/PLATFORMS	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/PLATFORMS	Sun Mar  7 19:33:20 2010	(r44743)
@@ -33,6 +33,7 @@
                                 CGoto EXEC   Thr Sig
 --------------------------------------------------------------------------------
 cygwin1.7.0-x86-gcc4.3.2      4   Y    -     -   -   Y    Y     Y  20090315
+darwin9.8.0-x86-gcc4.0.1          Y    ?     Y   ?   Y    Y     Y  20100215
 dragonfly2.2.0-i386-gcc-4.1.2 4   Y    -     Y   Y   Y    Y     ?  20090427
 freebsd-x86-gcc-4.2.1         4   Y    Y     ?   ?   Y    Y     Y  20090415
 freebsd-amd64-gcc-4.2.1       8   Y    -     ?   ?   Y    Y     Y  20090720
@@ -40,7 +41,7 @@
 linux-amd64-clang-r75433      8   Y    ?     ?   ?   Y    Y*2   ?  20090913
 linux-amd64-gcc4.3.2          8   Y    -     Y   Y   Y    Y/1   Y  20091020
 linux-amd64-gcc4.3.3          8   Y    ?     Y   Y   Y    Y     ?  20090712
-linux-amd64-gcc4.4.1          8   Y    ?     Y   Y   Y    Y     Y  20091020
+linux-amd64-gcc4.4.1          8   Y    ?     Y   ?   Y    Y     Y  20100215
 linux-amd64-g++4.4.1          8   Y    ?     Y   Y   Y    Y     Y  20091116
 linux-ppc-gcc_4.4.2               Y    Y     Y   Y   Y    Y     Y  20100118
 linux-ppc64-gcc_4.4.2             Y    Y     Y   Y   Y    Y     Y  20100118

Modified: branches/ops_pct/README
==============================================================================
--- branches/ops_pct/README	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/README	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,4 @@
-This is Parrot, version 2.0.0
+This is Parrot, version 2.1.0
 ------------------------------
 
 Parrot is Copyright (C) 2001-2010, Parrot Foundation.

Modified: branches/ops_pct/VERSION
==============================================================================
--- branches/ops_pct/VERSION	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/VERSION	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1 +1 @@
-2.0.0
+2.1.0

Modified: branches/ops_pct/compilers/data_json/Defines.mak
==============================================================================
--- branches/ops_pct/compilers/data_json/Defines.mak	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/data_json/Defines.mak	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1 +1,6 @@
-DATA_JSON_LIB_PBCS = compilers/data_json/data_json.pbc
+DATA_JSON_LIB_PBCS = $(LIBRARY_DIR)/data_json.pbc
+
+DATA_JSON_CLEANUPS = $(LIBRARY_DIR)/data_json.pbc \
+    compilers/data_json/data_json.pbc \
+    compilers/data_json/data_json/grammar.pir \
+    compilers/data_json/data_json/pge2pir.pir

Modified: branches/ops_pct/compilers/data_json/Rules.mak
==============================================================================
--- branches/ops_pct/compilers/data_json/Rules.mak	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/data_json/Rules.mak	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,10 +1,10 @@
 $(LIBRARY_DIR)/data_json.pbc: compilers/data_json/data_json.pbc
 	$(CP) compilers/data_json/data_json.pbc $@
-	
+
 compilers/data_json/data_json.pbc : \
-    runtime/parrot/library/PGE.pbc \
-    runtime/parrot/library/PGE/Util.pbc \
-    runtime/parrot/library/TGE.pbc \
+    $(LIBRARY_DIR)/PGE.pbc \
+    $(LIBRARY_DIR)/PGE/Util.pbc \
+    $(LIBRARY_DIR)/TGE.pbc \
     compilers/data_json/data_json/grammar.pir \
     compilers/data_json/data_json/pge2pir.pir
 

Copied: branches/ops_pct/compilers/imcc/Rules.in (from r44740, trunk/compilers/imcc/Rules.in)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/compilers/imcc/Rules.in	Sun Mar  7 19:33:20 2010	(r44743, copy of r44740, trunk/compilers/imcc/Rules.in)
@@ -0,0 +1,210 @@
+compilers/imcc/pcc$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/imcparser.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/parser.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/instructions$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/pbc$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS) \
+    include/pmc/pmc_sub.h
+
+compilers/imcc/parser_util$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/imcparser.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/parser.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/dynext.h \
+    $(INC_DIR)/embed.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS) \
+    include/pmc/pmc_sub.h
+
+compilers/imcc/imc$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/cfg$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/debug$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+## SUFFIX OVERRIDE - Warnings (This is generated code)
+compilers/imcc/imclexer$(O) : \
+    compilers/imcc/imclexer.c \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/imcparser.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/parser.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+	$(CC) $(CFLAGS) @optimize::compilers/imcc/imclexer.c@ @ccwarn::compilers/imcc/imclexer.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c compilers/imcc/imclexer.c
+
+## SUFFIX OVERRIDE - Warnings (This is generated code)
+compilers/imcc/imcparser$(O) : \
+    compilers/imcc/imcparser.c \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/imcparser.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/parser.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/dynext.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+	$(CC) $(CFLAGS) @optimize::compilers/imcc/imcparser.c@ @ccwarn::compilers/imcc/imcparser.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c compilers/imcc/imcparser.c
+
+compilers/imcc/main$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/imcparser.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/parser.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/embed.h \
+    $(INC_DIR)/imcc.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(INC_DIR)/runcore_api.h \
+    $(PARROT_H_HEADERS)
+
+## SUFFIX OVERRIDE - Warnings (This is generated code)
+compilers/imcc/optimizer$(O) : \
+    compilers/imcc/optimizer.c \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+	$(CC) $(CFLAGS) @optimize::compilers/imcc/optimizer.c@ @ccwarn::compilers/imcc/optimizer.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c compilers/imcc/optimizer.c
+
+compilers/imcc/reg_alloc$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/sets$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/symreg$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+# imcc file dependencies
+#
+# The .flag files are needed because we keep some derived files in SVN,
+# which does not keep accurate timestamps on the files, relative to each other.
+# Note that YACC or LEX may be null commands, so we must `touch` all the
+# target files, instead of just the .flag files.
+
+compilers/imcc/imcc.y.flag compilers/imcc/imcparser.c compilers/imcc/imcparser.h : compilers/imcc/imcc.y
+	$(YACC) compilers/imcc/imcc.y -d -o compilers/imcc/imcparser.c
+	$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer compilers/imcc/imcparser.c compilers/imcc/imcc.y
+	$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer compilers/imcc/imcparser.h compilers/imcc/imcc.y
+	$(TOUCH) compilers/imcc/imcc.y.flag compilers/imcc/imcparser.c compilers/imcc/imcparser.h
+
+compilers/imcc/imcc.l.flag compilers/imcc/imclexer.c : compilers/imcc/imcc.l
+	$(LEX) -ocompilers/imcc/imclexer.c compilers/imcc/imcc.l
+	$(TOUCH) compilers/imcc/imcc.l.flag compilers/imcc/imclexer.c

Deleted: branches/ops_pct/compilers/imcc/Rules.mak
==============================================================================
--- branches/ops_pct/compilers/imcc/Rules.mak	Sun Mar  7 19:33:20 2010	(r44742)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,201 +0,0 @@
-compilers/imcc/pcc$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/imcparser.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/parser.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS)
-
-compilers/imcc/instructions$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/optimizer.h \
-    compilers/imcc/pbc.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS)
-
-compilers/imcc/pbc$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/pbc.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS) \
-    include/pmc/pmc_sub.h
-
-compilers/imcc/parser_util$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/imcparser.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/optimizer.h \
-    compilers/imcc/parser.h \
-    compilers/imcc/pbc.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/dynext.h \
-    $(INC_DIR)/embed.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS) \
-    include/pmc/pmc_sub.h
-
-compilers/imcc/imc$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/optimizer.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS)
-
-compilers/imcc/cfg$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/optimizer.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS)
-
-compilers/imcc/debug$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS)
-
-compilers/imcc/imclexer$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/imcparser.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/parser.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS)
-
-compilers/imcc/imcparser$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/imcparser.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/optimizer.h \
-    compilers/imcc/parser.h \
-    compilers/imcc/pbc.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/dynext.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS)
-
-compilers/imcc/main$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/imcparser.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/parser.h \
-    compilers/imcc/pbc.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/embed.h \
-    $(INC_DIR)/imcc.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(INC_DIR)/runcore_api.h \
-    $(PARROT_H_HEADERS)
-
-compilers/imcc/optimizer$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/optimizer.h \
-    compilers/imcc/pbc.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS)
-
-compilers/imcc/reg_alloc$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/optimizer.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS)
-
-compilers/imcc/sets$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS)
-
-compilers/imcc/symreg$(O) : \
-    compilers/imcc/cfg.h \
-    compilers/imcc/debug.h \
-    compilers/imcc/imc.h \
-    compilers/imcc/instructions.h \
-    compilers/imcc/sets.h \
-    compilers/imcc/symreg.h \
-    compilers/imcc/unit.h \
-    $(INC_DIR)/oplib/ops.h \
-    $(PARROT_H_HEADERS)
-
-# imcc file dependencies
-#
-# The .flag files are needed because we keep some derived files in SVN,
-# which does not keep accurate timestamps on the files, relative to each other.
-# Note that YACC or LEX may be null commands, so we must `touch` all the
-# target files, instead of just the .flag files.
-
-compilers/imcc/imcc.y.flag compilers/imcc/imcparser.c compilers/imcc/imcparser.h : compilers/imcc/imcc.y
-	$(YACC) compilers/imcc/imcc.y -d -o compilers/imcc/imcparser.c
-	$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer compilers/imcc/imcparser.c compilers/imcc/imcc.y
-	$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer compilers/imcc/imcparser.h compilers/imcc/imcc.y
-	$(TOUCH) compilers/imcc/imcc.y.flag compilers/imcc/imcparser.c compilers/imcc/imcparser.h
-
-compilers/imcc/imcc.l.flag compilers/imcc/imclexer.c : compilers/imcc/imcc.l
-	$(LEX) -ocompilers/imcc/imclexer.c compilers/imcc/imcc.l
-	$(TOUCH) compilers/imcc/imcc.l.flag compilers/imcc/imclexer.c

Modified: branches/ops_pct/compilers/imcc/cfg.c
==============================================================================
--- branches/ops_pct/compilers/imcc/cfg.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/cfg.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -35,27 +35,30 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-static void analyse_life_block(
+static void analyse_life_block(PARROT_INTERP,
     ARGIN(const Basic_block* bb),
     ARGMOD(SymReg *r))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*r);
 
-static void analyse_life_symbol(
+static void analyse_life_symbol(PARROT_INTERP,
     ARGIN(const IMC_Unit *unit),
     ARGMOD(SymReg* r))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(* r);
 
-static void bb_add_edge(
+static void bb_add_edge(PARROT_INTERP,
     ARGMOD(IMC_Unit *unit),
     ARGIN(Basic_block *from),
     ARGMOD(Basic_block *to))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*unit)
         FUNC_MODIFIES(*to);
 
@@ -110,17 +113,19 @@
         __attribute__nonnull__(1)
         FUNC_MODIFIES(*unit);
 
-static void init_basic_blocks(ARGMOD(IMC_Unit *unit))
+static void init_basic_blocks(PARROT_INTERP, ARGMOD(IMC_Unit *unit))
         __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
         FUNC_MODIFIES(*unit);
 
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-static Basic_block* make_basic_block(
+static Basic_block* make_basic_block(PARROT_INTERP,
     ARGMOD(IMC_Unit *unit),
     ARGMOD(Instruction *ins))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*unit)
         FUNC_MODIFIES(*ins);
 
@@ -145,13 +150,16 @@
         __attribute__nonnull__(2);
 
 #define ASSERT_ARGS_analyse_life_block __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(bb) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(bb) \
     , PARROT_ASSERT_ARG(r))
 #define ASSERT_ARGS_analyse_life_symbol __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(unit) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(unit) \
     , PARROT_ASSERT_ARG(r))
 #define ASSERT_ARGS_bb_add_edge __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(unit) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(unit) \
     , PARROT_ASSERT_ARG(from) \
     , PARROT_ASSERT_ARG(to))
 #define ASSERT_ARGS_bb_check_set_addr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -180,9 +188,11 @@
 #define ASSERT_ARGS_free_loops __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(unit))
 #define ASSERT_ARGS_init_basic_blocks __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(unit))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(unit))
 #define ASSERT_ARGS_make_basic_block __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(unit) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(unit) \
     , PARROT_ASSERT_ARG(ins))
 #define ASSERT_ARGS_mark_loop __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -267,7 +277,7 @@
     unsigned int          i;
 
     IMCC_info(interp, 2, "find_basic_blocks\n");
-    init_basic_blocks(unit);
+    init_basic_blocks(interp, unit);
 
     for (i = 0; i < hsh->size; i++) {
         SymReg *r;
@@ -288,7 +298,7 @@
 
     ins->index = i = 0;
 
-    bb         = make_basic_block(unit, ins);
+    bb         = make_basic_block(interp, unit, ins);
 
     if (ins->type & ITBRANCH) {
         SymReg * const addr = get_branch_reg(bb->end);
@@ -326,7 +336,7 @@
             nu = 0;
         else if (ins->type & ITLABEL) {
             bb->end = ins->prev;
-            bb      = make_basic_block(unit, ins);
+            bb      = make_basic_block(interp, unit, ins);
         }
 
         /* a branch is the end of a basic block
@@ -342,7 +352,7 @@
                 continue;
 
             if (ins->next)
-                bb = make_basic_block(unit, ins->next);
+                bb = make_basic_block(interp, unit, ins->next);
 
             nu = 1;
         }
@@ -380,8 +390,8 @@
                     ins->symregs[1]->name);
 
             /* connect this block with first and last block */
-            bb_add_edge(unit, unit->bb_list[0], bb);
-            bb_add_edge(unit, unit->bb_list[unit->n_basic_blocks - 1], bb);
+            bb_add_edge(interp, unit, unit->bb_list[0], bb);
+            bb_add_edge(interp, unit, unit->bb_list[unit->n_basic_blocks - 1], bb);
 
             /* and mark the instruction as being kind of a branch */
             bb->start->type |= ITADDR;
@@ -419,7 +429,7 @@
 
         /* if the block can fall-through */
         if (i > 0 && ! (last->end->type & IF_goto))
-            bb_add_edge(unit, last, bb);
+            bb_add_edge(interp, unit, last, bb);
 
         /* check first ins, if label try to find a set_addr op */
         if (bb->start->type & ITLABEL)
@@ -433,7 +443,7 @@
         else if (STREQ(bb->start->opname, "invoke")
              ||  STREQ(bb->start->opname, "invokecc")) {
             if (check_invoke_type(interp, unit, bb->start) == INVOKE_SUB_LOOP)
-                bb_add_edge(unit, bb, unit->bb_list[0]);
+                bb_add_edge(interp, unit, bb, unit->bb_list[0]);
         }
 
         last = bb;
@@ -486,14 +496,14 @@
     const SymReg * const r = find_sym(interp, label->name);
 
     if (r && (r->type & VTADDRESS) && r->first_ins)
-        bb_add_edge(unit, from, unit->bb_list[r->first_ins->bbindex]);
+        bb_add_edge(interp, unit, from, unit->bb_list[r->first_ins->bbindex]);
     else {
         IMCC_debug(interp, DEBUG_CFG, "register branch %I ", from->end);
         for (ins = from->end; ins; ins = ins->prev) {
             if ((ins->type & ITBRANCH)
             &&   STREQ(ins->opname, "set_addr")
             &&   ins->symregs[1]->first_ins) {
-                bb_add_edge(unit, from,
+                bb_add_edge(interp, unit, from,
                     unit-> bb_list[ins->symregs[1]->first_ins->bbindex]);
                 IMCC_debug(interp, DEBUG_CFG, "(%s) ", ins->symregs[1]->name);
                 break;
@@ -538,8 +548,8 @@
 
 /*
 
-=item C<static void bb_add_edge(IMC_Unit *unit, Basic_block *from, Basic_block
-*to)>
+=item C<static void bb_add_edge(PARROT_INTERP, IMC_Unit *unit, Basic_block
+*from, Basic_block *to)>
 
 Adds an edge between the two given blocks.
 
@@ -548,8 +558,10 @@
 */
 
 static void
-bb_add_edge(ARGMOD(IMC_Unit *unit), ARGIN(Basic_block  *from),
-                                    ARGMOD(Basic_block *to))
+bb_add_edge(PARROT_INTERP,
+        ARGMOD(IMC_Unit *unit),
+        ARGIN(Basic_block  *from),
+        ARGMOD(Basic_block *to))
 {
     ASSERT_ARGS(bb_add_edge)
     Edge *e;
@@ -558,7 +570,7 @@
 
     /* we assume that the data is correct, and thus if the edge is not
      * on the predecessors of 'from', it won't be on the successors of 'to' */
-    e             = mem_allocate_typed(Edge);
+    e             = mem_gc_allocate_typed(interp, Edge);
 
     e->succ_next  = from->succ_list;
     e->from       = from;
@@ -708,13 +720,14 @@
     IMCC_info(interp, 2, "life_analysis\n");
 
     for (i = 0; i < unit->n_symbols; i++)
-        analyse_life_symbol(unit, reglist[i]);
+        analyse_life_symbol(interp, unit, reglist[i]);
 }
 
 
 /*
 
-=item C<static void analyse_life_symbol(const IMC_Unit *unit, SymReg* r)>
+=item C<static void analyse_life_symbol(PARROT_INTERP, const IMC_Unit *unit,
+SymReg* r)>
 
 Analyzes the lifetime for a given symbol.
 
@@ -723,7 +736,8 @@
 */
 
 static void
-analyse_life_symbol(ARGIN(const IMC_Unit *unit), ARGMOD(SymReg* r))
+analyse_life_symbol(PARROT_INTERP,
+        ARGIN(const IMC_Unit *unit), ARGMOD(SymReg* r))
 {
     ASSERT_ARGS(analyse_life_symbol)
     unsigned int i;
@@ -735,13 +749,13 @@
     if (r->life_info)
         free_life_info(unit, r);
 
-    r->life_info = mem_allocate_n_zeroed_typed(unit->n_basic_blocks,
+    r->life_info = mem_gc_allocate_n_zeroed_typed(interp, unit->n_basic_blocks,
                                                Life_range *);
 
     /* First we make a pass to each block to gather the information
      * that can be obtained locally */
     for (i = 0; i < unit->n_basic_blocks; i++) {
-        analyse_life_block(unit->bb_list[i], r);
+        analyse_life_block(interp, unit->bb_list[i], r);
     }
 
     /* Now we need to consider the relations between blocks */
@@ -807,7 +821,8 @@
 
 /*
 
-=item C<static void analyse_life_block(const Basic_block* bb, SymReg *r)>
+=item C<static void analyse_life_block(PARROT_INTERP, const Basic_block* bb,
+SymReg *r)>
 
 Studies the state of the var r in the block bb.
 
@@ -819,10 +834,10 @@
 */
 
 static void
-analyse_life_block(ARGIN(const Basic_block* bb), ARGMOD(SymReg *r))
+analyse_life_block(PARROT_INTERP, ARGIN(const Basic_block* bb), ARGMOD(SymReg *r))
 {
     ASSERT_ARGS(analyse_life_block)
-    Life_range  * const l        = make_life_range(r, bb->index);
+    Life_range  * const l        = make_life_range(interp, r, bb->index);
     Instruction         *special = NULL;
     Instruction         *ins;
 
@@ -985,19 +1000,19 @@
     const unsigned int n = unit->n_basic_blocks;
     IMCC_info(interp, 2, "compute_dominators\n");
 
-    unit->idoms          = mem_allocate_n_zeroed_typed(n, int);
-    dominators           = mem_allocate_n_zeroed_typed(n, Set *);
+    unit->idoms          = mem_gc_allocate_n_zeroed_typed(interp, n, int);
+    dominators           = mem_gc_allocate_n_zeroed_typed(interp, n, Set *);
     unit->dominators     = dominators;
 
-    dominators[0]        = set_make(n);
+    dominators[0]        = set_make(interp, n);
     set_add(dominators[0], 0);
 
     for (i = n - 1; i; --i) {
         if (unit->bb_list[i]->pred_list) {
-            dominators[i] = set_make_full(n);
+            dominators[i] = set_make_full(interp, n);
         }
         else {
-            dominators[i] = set_make(n);
+            dominators[i] = set_make(interp, n);
             set_add(dominators[i], i);
         }
     }
@@ -1034,7 +1049,7 @@
 
         /* TODO: This 'for' should be a breadth-first search for speed */
         for (i = 1; i < n; i++) {
-            Set  * const s = set_copy(dominators[i]);
+            Set  * const s = set_copy(interp, dominators[i]);
             Edge *edge;
 
             for (edge = unit->bb_list[i]->pred_list;
@@ -1113,12 +1128,12 @@
 
     const int    n                   = unit->n_basic_blocks;
     Set ** const dominance_frontiers = unit->dominance_frontiers =
-        mem_allocate_n_typed(n, Set *);
+            mem_gc_allocate_n_typed(interp, n, Set *);
 
     IMCC_info(interp, 2, "compute_dominance_frontiers\n");
 
     for (i = 0; i < n; i++) {
-        dominance_frontiers[i] = set_make(n);
+        dominance_frontiers[i] = set_make(interp, n);
     }
 
     /* for all nodes, b */
@@ -1416,7 +1431,7 @@
                 "\tcan't determine loop entry block (%d found)\n" , i);
     }
 
-    loop = set_make(unit->n_basic_blocks);
+    loop = set_make(interp, unit->n_basic_blocks);
     set_add(loop, footer->index);
     set_add(loop, header->index);
 
@@ -1427,7 +1442,7 @@
         search_predecessors_not_in(footer, loop);
     }
 
-    exits = set_make(unit->n_basic_blocks);
+    exits = set_make(interp, unit->n_basic_blocks);
 
     for (i = 1; i < unit->n_basic_blocks; i++) {
         if (set_contains(loop, i)) {
@@ -1443,9 +1458,10 @@
 
     /* now 'loop' contains the set of nodes inside the loop.  */
     n_loops                       = unit->n_loops;
-    loop_info                     = mem_realloc_n_typed(unit->loop_info,
-                                        n_loops + 1, Loop_info *);
-    loop_info[n_loops]            = mem_allocate_typed(Loop_info);
+    loop_info                     = mem_gc_realloc_n_typed(interp,
+                                            unit->loop_info,
+                                            n_loops + 1, Loop_info *);
+    loop_info[n_loops]            = mem_gc_allocate_typed(interp, Loop_info);
     loop_info[n_loops]->loop      = loop;
     loop_info[n_loops]->exits     = exits;
     loop_info[n_loops]->depth     = footer->loop_depth;
@@ -1453,6 +1469,8 @@
     loop_info[n_loops]->header    = header->index;
     loop_info[n_loops]->preheader = natural_preheader(unit, loop_info[n_loops]);
 
+    unit->loop_info = loop_info;
+
     unit->n_loops++;
 }
 
@@ -1518,7 +1536,7 @@
 
 /*
 
-=item C<static void init_basic_blocks(IMC_Unit *unit)>
+=item C<static void init_basic_blocks(PARROT_INTERP, IMC_Unit *unit)>
 
 Initializes the basic blocks memory for this unit.
 
@@ -1527,7 +1545,7 @@
 */
 
 static void
-init_basic_blocks(ARGMOD(IMC_Unit *unit))
+init_basic_blocks(PARROT_INTERP, ARGMOD(IMC_Unit *unit))
 {
     ASSERT_ARGS(init_basic_blocks)
 
@@ -1537,8 +1555,8 @@
     unit->n_basic_blocks = 0;
     unit->edge_list      = NULL;
     unit->bb_list_size   = 256;
-    unit->bb_list        = mem_allocate_n_zeroed_typed(unit->bb_list_size,
-                                                     Basic_block *);
+    unit->bb_list        = mem_gc_allocate_n_zeroed_typed(interp,
+                                    unit->bb_list_size, Basic_block *);
 }
 
 
@@ -1576,7 +1594,8 @@
 
 /*
 
-=item C<static Basic_block* make_basic_block(IMC_Unit *unit, Instruction *ins)>
+=item C<static Basic_block* make_basic_block(PARROT_INTERP, IMC_Unit *unit,
+Instruction *ins)>
 
 Creates, initializes, and returns a new Basic_block.
 
@@ -1587,10 +1606,10 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 static Basic_block*
-make_basic_block(ARGMOD(IMC_Unit *unit), ARGMOD(Instruction *ins))
+make_basic_block(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGMOD(Instruction *ins))
 {
     ASSERT_ARGS(make_basic_block)
-    Basic_block * const bb = mem_allocate_typed(Basic_block);
+    Basic_block * const bb = mem_gc_allocate_typed(interp, Basic_block);
     int                 n  = unit->n_basic_blocks;
 
     bb->start      = ins;
@@ -1605,7 +1624,8 @@
 
     if (n == unit->bb_list_size) {
         unit->bb_list_size *= 2;
-        mem_realloc_n_typed(unit->bb_list, unit->bb_list_size, Basic_block *);
+        unit->bb_list = mem_gc_realloc_n_typed(interp, unit->bb_list,
+                    unit->bb_list_size, Basic_block *);
     }
 
     unit->bb_list[n] = bb;
@@ -1617,7 +1637,7 @@
 
 /*
 
-=item C<Life_range * make_life_range(SymReg *r, int idx)>
+=item C<Life_range * make_life_range(PARROT_INTERP, SymReg *r, int idx)>
 
 Creates and returns a Life_range for the given register at the specified index.
 
@@ -1628,10 +1648,10 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 Life_range *
-make_life_range(ARGMOD(SymReg *r), int idx)
+make_life_range(PARROT_INTERP, ARGMOD(SymReg *r), int idx)
 {
     ASSERT_ARGS(make_life_range)
-    Life_range * const l = mem_allocate_zeroed_typed(Life_range);
+    Life_range * const l = mem_gc_allocate_zeroed_typed(interp, Life_range);
     r->life_info[idx]    = l;
 
     return l;

Modified: branches/ops_pct/compilers/imcc/cfg.h
==============================================================================
--- branches/ops_pct/compilers/imcc/cfg.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/cfg.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -100,8 +100,9 @@
 
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
-Life_range * make_life_range(ARGMOD(SymReg *r), int idx)
+Life_range * make_life_range(PARROT_INTERP, ARGMOD(SymReg *r), int idx)
         __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
         FUNC_MODIFIES(*r);
 
 PARROT_WARN_UNUSED_RESULT
@@ -147,7 +148,8 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(unit))
 #define ASSERT_ARGS_make_life_range __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(r))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(r))
 #define ASSERT_ARGS_natural_preheader __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(unit) \
     , PARROT_ASSERT_ARG(loop_info))

Modified: branches/ops_pct/compilers/imcc/imc.c
==============================================================================
--- branches/ops_pct/compilers/imcc/imc.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/imc.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -39,12 +39,14 @@
 
 PARROT_CANNOT_RETURN_NULL
 PARROT_MALLOC
-static IMC_Unit * imc_new_unit(IMC_Unit_Type t);
+static IMC_Unit * imc_new_unit(PARROT_INTERP, IMC_Unit_Type t)
+        __attribute__nonnull__(1);
 
 #define ASSERT_ARGS_imc_free_unit __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(unit))
-#define ASSERT_ARGS_imc_new_unit __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_imc_new_unit __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 */
 
@@ -145,7 +147,7 @@
     IMCC_INFO(interp)->ghash.data = NULL;
 
     if (IMCC_INFO(interp)->state) {
-        free(IMCC_INFO(interp)->state->file);
+        mem_sys_free(IMCC_INFO(interp)->state->file);
         IMCC_INFO(interp)->state->file = NULL;
     }
 }
@@ -153,7 +155,7 @@
 
 /*
 
-=item C<static IMC_Unit * imc_new_unit(IMC_Unit_Type t)>
+=item C<static IMC_Unit * imc_new_unit(PARROT_INTERP, IMC_Unit_Type t)>
 
 Creates a new IMC_Unit of the given IMC_Unit_Type C<t>.
 
@@ -164,11 +166,11 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_MALLOC
 static IMC_Unit *
-imc_new_unit(IMC_Unit_Type t)
+imc_new_unit(PARROT_INTERP, IMC_Unit_Type t)
 {
     ASSERT_ARGS(imc_new_unit)
-    IMC_Unit * const unit = mem_allocate_zeroed_typed(IMC_Unit);
-    create_symhash(&unit->hash);
+    IMC_Unit * const unit = mem_gc_allocate_zeroed_typed(interp, IMC_Unit);
+    create_symhash(interp, &unit->hash);
     unit->type = t;
     return unit;
 }
@@ -191,14 +193,14 @@
 imc_open_unit(PARROT_INTERP, IMC_Unit_Type t)
 {
     ASSERT_ARGS(imc_open_unit)
-    IMC_Unit   * const unit     = imc_new_unit(t);
+    IMC_Unit   * const unit     = imc_new_unit(interp, t);
     imc_info_t * const imc_info = IMCC_INFO(interp);
 
     if (!imc_info->imc_units)
         imc_info->imc_units = unit;
 
     if (!imc_info->ghash.data)
-        create_symhash(&imc_info->ghash);
+        create_symhash(interp, &imc_info->ghash);
 
     unit->prev = imc_info->last_unit;
 
@@ -278,8 +280,8 @@
     if (unit->instance_of)
         mem_sys_free(unit->instance_of);
 
-    free(unit->hash.data);
-    free(unit);
+    mem_sys_free(unit->hash.data);
+    mem_sys_free(unit);
 }
 
 /*

Modified: branches/ops_pct/compilers/imcc/imcc.l
==============================================================================
--- branches/ops_pct/compilers/imcc/imcc.l	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/imcc.l	Sun Mar  7 19:33:20 2010	(r44743)
@@ -726,7 +726,7 @@
                 "Invalid LABEL outside of macro");
         }
         else {
-            char * const fmt    = "local__%s__%s__$";
+            const char * const fmt    = "local__%s__%s__$";
             const size_t fmtlen = strlen(fmt) - (2 * strlen("%s"));
             const size_t len    = strlen(IMCC_INFO(interp)->cur_macro_name)
                                 + yyleng + fmtlen;
@@ -787,7 +787,7 @@
 static macro_frame_t *
 new_frame(PARROT_INTERP) {
     static int label   = 0;
-    macro_frame_t * const tmp = mem_allocate_zeroed_typed(macro_frame_t);
+    macro_frame_t * const tmp = mem_gc_allocate_zeroed_typed(interp, macro_frame_t);
 
     tmp->label         = ++label;
     tmp->s.line        = IMCC_INFO(interp)->line;
@@ -895,7 +895,7 @@
                         macro_name);
 
         len     += strlen(val.s);
-        current  = (char *)realloc(current, len + 1);
+        current  = (char *)mem_sys_realloc(current, len + 1);
         strcat(current,val.s);
 
         mem_sys_free(val.s);
@@ -963,7 +963,7 @@
         else {
             if (!need_id || c != ' ') {
                 len     += strlen(val.s);
-                current  = (char *)realloc(current, len + 1);
+                current  = (char *)mem_sys_realloc(current, len + 1);
                 strcat(current, val.s);
             }
 
@@ -1019,7 +1019,6 @@
     }
 
     while (c != ENDM) {
-        char *old_s = valp->s;
         int   elem_len;
 
         if (c <= 0) {
@@ -1107,7 +1106,7 @@
         m->expansion = NULL;
     }
     else {
-        m = mem_allocate_zeroed_typed(macro_t);
+        m = mem_gc_allocate_zeroed_typed(interp, macro_t);
 
         if (!IMCC_INFO(interp)->macros)
             IMCC_INFO(interp)->macros = parrot_new_cstring_hash(interp);

Modified: branches/ops_pct/compilers/imcc/imcc.y
==============================================================================
--- branches/ops_pct/compilers/imcc/imcc.y	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/imcc.y	Sun Mar  7 19:33:20 2010	(r44743)
@@ -5,7 +5,7 @@
  * Intermediate Code Compiler for Parrot.
  *
  * Copyright (C) 2002 Melvin Smith <melvin.smith at mindspring.com>
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
  *
  * Grammar of the PIR language parser.
  *
@@ -28,7 +28,7 @@
 
 /* prevent declarations of malloc() and free() in the generated parser. */
 #define YYMALLOC
-#define YYFREE
+#define YYFREE(Ptr) do { /* empty */; } while (YYID (0))
 
 #ifndef YYENABLE_NLS
 #  define YYENABLE_NLS 0
@@ -43,57 +43,62 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-static void add_pcc_named_arg(
+static void add_pcc_named_arg(PARROT_INTERP,
     ARGMOD(SymReg *cur_call),
     ARGMOD(SymReg *name),
     ARGMOD(SymReg *value))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*cur_call)
         FUNC_MODIFIES(*name)
         FUNC_MODIFIES(*value);
 
-static void add_pcc_named_arg_var(
+static void add_pcc_named_arg_var(PARROT_INTERP,
     ARGMOD(SymReg *cur_call),
     ARGMOD(SymReg *name),
     ARGMOD(SymReg *value))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*cur_call)
         FUNC_MODIFIES(*name)
         FUNC_MODIFIES(*value);
 
-static void add_pcc_named_param(
+static void add_pcc_named_param(PARROT_INTERP,
     ARGMOD(SymReg *cur_call),
     ARGMOD(SymReg *name),
     ARGMOD(SymReg *value))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*cur_call)
         FUNC_MODIFIES(*name)
         FUNC_MODIFIES(*value);
 
-static void add_pcc_named_result(
+static void add_pcc_named_result(PARROT_INTERP,
     ARGMOD(SymReg *cur_call),
     ARGMOD(SymReg *name),
     ARGMOD(SymReg *value))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*cur_call)
         FUNC_MODIFIES(*name)
         FUNC_MODIFIES(*value);
 
-static void add_pcc_named_return(
+static void add_pcc_named_return(PARROT_INTERP,
     ARGMOD(SymReg *cur_call),
     ARGMOD(SymReg *name),
     ARGMOD(SymReg *value))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*cur_call)
         FUNC_MODIFIES(*name)
         FUNC_MODIFIES(*value);
@@ -177,7 +182,7 @@
 static const char * inv_op(ARGIN(const char *op))
         __attribute__nonnull__(1);
 
-PARROT_WARN_UNUSED_RESULT
+PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 static Instruction * iSUBROUTINE(PARROT_INTERP,
     ARGMOD_NULLOK(IMC_Unit *unit),
@@ -251,23 +256,28 @@
         FUNC_MODIFIES(*name);
 
 #define ASSERT_ARGS_add_pcc_named_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(cur_call) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(cur_call) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_add_pcc_named_arg_var __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(cur_call) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(cur_call) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_add_pcc_named_param __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(cur_call) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(cur_call) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_add_pcc_named_result __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(cur_call) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(cur_call) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_add_pcc_named_return __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(cur_call) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(cur_call) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_adv_named_set __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -532,7 +542,7 @@
     }
 
     r[1]          = rhs;
-    rhs->pmc_type = pmc_type(interp,
+    rhs->pmc_type = Parrot_pmc_get_type_str(interp,
         Parrot_str_new(interp, unquoted_name, name_length));
 
     mem_sys_free(unquoted_name);
@@ -639,7 +649,7 @@
 
 */
 
-PARROT_WARN_UNUSED_RESULT
+PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 static Instruction *
 iSUBROUTINE(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r))
@@ -648,7 +658,7 @@
     Instruction * const i = iLABEL(interp, unit, r);
 
     r->type    = (r->type & VT_ENCODED) ? VT_PCC_SUB|VT_ENCODED : VT_PCC_SUB;
-    r->pcc_sub = mem_allocate_zeroed_typed(pcc_sub_t);
+    r->pcc_sub = mem_gc_allocate_zeroed_typed(interp, pcc_sub_t);
 
     IMCC_INFO(interp)->cur_call = r;
     i->line                     = IMCC_INFO(interp)->line;
@@ -899,105 +909,111 @@
 
 /*
 
-=item C<static void add_pcc_named_arg(SymReg *cur_call, SymReg *name, SymReg
-*value)>
+=item C<static void add_pcc_named_arg(PARROT_INTERP, SymReg *cur_call, SymReg
+*name, SymReg *value)>
 
 =cut
 
 */
 
 static void
-add_pcc_named_arg(ARGMOD(SymReg *cur_call),
+add_pcc_named_arg(PARROT_INTERP,
+        ARGMOD(SymReg *cur_call),
         ARGMOD(SymReg *name),
         ARGMOD(SymReg *value))
 {
     ASSERT_ARGS(add_pcc_named_arg)
     name->type  |= VT_NAMED;
 
-    add_pcc_arg(cur_call, name);
-    add_pcc_arg(cur_call, value);
+    add_pcc_arg(interp, cur_call, name);
+    add_pcc_arg(interp, cur_call, value);
 }
 
 /*
 
-=item C<static void add_pcc_named_arg_var(SymReg *cur_call, SymReg *name, SymReg
-*value)>
+=item C<static void add_pcc_named_arg_var(PARROT_INTERP, SymReg *cur_call,
+SymReg *name, SymReg *value)>
 
 =cut
 
 */
 
 static void
-add_pcc_named_arg_var(ARGMOD(SymReg *cur_call),
-    ARGMOD(SymReg *name), ARGMOD(SymReg *value))
+add_pcc_named_arg_var(PARROT_INTERP,
+        ARGMOD(SymReg *cur_call),
+        ARGMOD(SymReg *name),
+        ARGMOD(SymReg *value))
 {
     ASSERT_ARGS(add_pcc_named_arg_var)
     name->type |= VT_NAMED;
-    add_pcc_arg(cur_call, name);
-    add_pcc_arg(cur_call, value);
+    add_pcc_arg(interp, cur_call, name);
+    add_pcc_arg(interp, cur_call, value);
 }
 
 /*
 
-=item C<static void add_pcc_named_result(SymReg *cur_call, SymReg *name, SymReg
-*value)>
+=item C<static void add_pcc_named_result(PARROT_INTERP, SymReg *cur_call, SymReg
+*name, SymReg *value)>
 
 =cut
 
 */
 
 static void
-add_pcc_named_result(ARGMOD(SymReg *cur_call),
+add_pcc_named_result(PARROT_INTERP,
+        ARGMOD(SymReg *cur_call),
         ARGMOD(SymReg *name),
         ARGMOD(SymReg *value))
 {
     ASSERT_ARGS(add_pcc_named_result)
     name->type         |= VT_NAMED;
 
-    add_pcc_result(cur_call, name);
-    add_pcc_result(cur_call, value);
+    add_pcc_result(interp, cur_call, name);
+    add_pcc_result(interp, cur_call, value);
 }
 
 /*
 
-=item C<static void add_pcc_named_param(SymReg *cur_call, SymReg *name, SymReg
-*value)>
+=item C<static void add_pcc_named_param(PARROT_INTERP, SymReg *cur_call, SymReg
+*name, SymReg *value)>
 
 =cut
 
 */
 
 static void
-add_pcc_named_param(ARGMOD(SymReg *cur_call),
+add_pcc_named_param(PARROT_INTERP,
+        ARGMOD(SymReg *cur_call),
         ARGMOD(SymReg *name),
         ARGMOD(SymReg *value))
 {
     ASSERT_ARGS(add_pcc_named_param)
     name->type         |= VT_NAMED;
 
-    add_pcc_arg(cur_call, name);
-    add_pcc_arg(cur_call, value);
+    add_pcc_arg(interp, cur_call, name);
+    add_pcc_arg(interp, cur_call, value);
 }
 
 /*
 
-=item C<static void add_pcc_named_return(SymReg *cur_call, SymReg *name, SymReg
-*value)>
+=item C<static void add_pcc_named_return(PARROT_INTERP, SymReg *cur_call, SymReg
+*name, SymReg *value)>
 
 =cut
 
 */
 
 static void
-add_pcc_named_return(ARGMOD(SymReg *cur_call),
+add_pcc_named_return(PARROT_INTERP,
+        ARGMOD(SymReg *cur_call),
         ARGMOD(SymReg *name),
         ARGMOD(SymReg *value))
 {
     ASSERT_ARGS(add_pcc_named_return)
     name->type         |= VT_NAMED;
 
-    add_pcc_result(cur_call, name);
-    add_pcc_result(cur_call, value);
+    add_pcc_result(interp, cur_call, name);
+    add_pcc_result(interp, cur_call, value);
 }
 
 /*
@@ -1387,12 +1403,12 @@
    | sub_params sub_param '\n'
          {
            if (IMCC_INFO(interp)->adv_named_id) {
-                 add_pcc_named_param(IMCC_INFO(interp)->cur_call,
+                 add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
                                      IMCC_INFO(interp)->adv_named_id, $2);
                  IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_arg(IMCC_INFO(interp)->cur_call, $2);
+               add_pcc_arg(interp, IMCC_INFO(interp)->cur_call, $2);
          }
    ;
 
@@ -1406,7 +1422,7 @@
            if ($3 & VT_UNIQUE_REG)
                $$ = mk_ident_ur(interp, $2, $1);
            else if ($3 & VT_OPT_FLAG && $1 != 'I') {
-               char *type;
+               const char *type;
                switch ($1) {
                     case 'N': type = "num";     break;
                     case 'S': type = "string";  break;
@@ -1516,17 +1532,17 @@
 multi_types:
      /* empty */
          {
-           add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
+           add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, NULL);
          }
    | multi_types COMMA multi_type
          {
            $$ = 0;
-           add_pcc_multi(IMCC_INFO(interp)->cur_call, $3);
+           add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, $3);
          }
    | multi_type
          {
            $$ = 0;
-           add_pcc_multi(IMCC_INFO(interp)->cur_call, $1);
+           add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, $1);
          }
    ;
 
@@ -1673,7 +1689,7 @@
 
 pcc_args:
      /* empty */               { $$ = 0; }
-   | pcc_args pcc_arg '\n'     { add_pcc_arg(IMCC_INFO(interp)->cur_call, $2); }
+   | pcc_args pcc_arg '\n'     { add_pcc_arg(interp, IMCC_INFO(interp)->cur_call, $2); }
    ;
 
 pcc_arg:
@@ -1686,7 +1702,7 @@
    | pcc_results pcc_result '\n'
          {
            if ($2)
-               add_pcc_result(IMCC_INFO(interp)->cur_call, $2);
+               add_pcc_result(interp, IMCC_INFO(interp)->cur_call, $2);
          }
    ;
 
@@ -1745,12 +1761,12 @@
    | pcc_returns '\n'
          {
            if ($1)
-               add_pcc_result(IMCC_INFO(interp)->sr_return, $1);
+               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, $1);
          }
    | pcc_returns pcc_return '\n'
          {
            if ($2)
-               add_pcc_result(IMCC_INFO(interp)->sr_return, $2);
+               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, $2);
          }
    ;
 
@@ -1759,12 +1775,12 @@
    | pcc_yields '\n'
          {
            if ($1)
-               add_pcc_result(IMCC_INFO(interp)->sr_return, $1);
+               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, $1);
          }
    | pcc_yields pcc_set_yield '\n'
          {
            if ($2)
-               add_pcc_result(IMCC_INFO(interp)->sr_return, $2);
+               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, $2);
          }
    ;
 
@@ -1799,32 +1815,32 @@
    | arg
          {
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_return(IMCC_INFO(interp)->sr_return,
+               add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
                                     IMCC_INFO(interp)->adv_named_id, $1);
                IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_result(IMCC_INFO(interp)->sr_return, $1);
+               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, $1);
          }
    | STRINGC ADV_ARROW var
          {
             SymReg * const name = mk_const(interp, $1, 'S');
-            add_pcc_named_return(IMCC_INFO(interp)->sr_return, name, $3);
+            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, $3);
          }
    | var_returns COMMA arg
          {
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_return(IMCC_INFO(interp)->sr_return,
+               add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
                                     IMCC_INFO(interp)->adv_named_id, $3);
                IMCC_INFO(interp)->adv_named_id = NULL;
              }
              else
-                 add_pcc_result(IMCC_INFO(interp)->sr_return, $3);
+                 add_pcc_result(interp, IMCC_INFO(interp)->sr_return, $3);
          }
    | var_returns COMMA STRINGC ADV_ARROW var
          {
            SymReg * const name = mk_const(interp, $3, 'S');
-           add_pcc_named_return(IMCC_INFO(interp)->sr_return, name, $5);
+           add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, $5);
          }
    ;
 
@@ -1908,7 +1924,7 @@
 id_list_id :
      IDENTIFIER opt_unique_reg
          {
-           IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
+           IdList* const l = mem_gc_allocate_n_zeroed_typed(interp, 1, IdList);
            l->id           = $1;
            l->unique_reg   = $2;
            $$ = l;
@@ -2026,7 +2042,7 @@
          {
            /* there'd normally be a mem_sys_strdup() here, but the lexer already
             * copied the string, so it's safe to use directly */
-           if ((IMCC_INFO(interp)->cur_pmc_type = pmc_type(interp,
+           if ((IMCC_INFO(interp)->cur_pmc_type = Parrot_pmc_get_type_str(interp,
                Parrot_str_new(interp, $1, 0))) <= 0) {
                IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
                     "Unknown PMC type '%s'\n", $1);
@@ -2053,7 +2069,7 @@
      /* Subroutine call the short way */
    | target  '=' sub_call
          {
-           add_pcc_result($3->symregs[0], $1);
+           add_pcc_result(interp, $3->symregs[0], $1);
            IMCC_INFO(interp)->cur_call = NULL;
            $$ = 0;
          }
@@ -2209,38 +2225,38 @@
          {
            $$ = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_arg(IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, $3);
+               add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, $3);
                IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_arg(IMCC_INFO(interp)->cur_call, $3);
+               add_pcc_arg(interp, IMCC_INFO(interp)->cur_call, $3);
          }
    | arg
          {
            $$ = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_arg(IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, $1);
+               add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, $1);
                IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_arg(IMCC_INFO(interp)->cur_call, $1);
+               add_pcc_arg(interp, IMCC_INFO(interp)->cur_call, $1);
          }
    | arglist COMMA STRINGC ADV_ARROW var
          {
            $$ = 0;
-           add_pcc_named_arg(IMCC_INFO(interp)->cur_call,
+           add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call,
                 mk_const(interp, $3, 'S'), $5);
            mem_sys_free($3);
          }
    | var ADV_ARROW var
          {
            $$ = 0;
-           add_pcc_named_arg_var(IMCC_INFO(interp)->cur_call, $1, $3);
+           add_pcc_named_arg_var(interp, IMCC_INFO(interp)->cur_call, $1, $3);
          }
    | STRINGC ADV_ARROW var
          {
            $$ = 0;
-           add_pcc_named_arg(IMCC_INFO(interp)->cur_call,
+           add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call,
                 mk_const(interp, $1, 'S'), $3);
            mem_sys_free($1);
          }
@@ -2274,31 +2290,31 @@
          {
            $$ = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_result(IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, $3);
+               add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, $3);
                IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_result(IMCC_INFO(interp)->cur_call, $3);
+               add_pcc_result(interp, IMCC_INFO(interp)->cur_call, $3);
          }
    | targetlist COMMA STRINGC ADV_ARROW target
          {
-            add_pcc_named_result(IMCC_INFO(interp)->cur_call,
-            mk_const(interp, $3, 'S'), $5);
+            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call,
+                    mk_const(interp, $3, 'S'), $5);
             mem_sys_free($3);
          }
    | result
          {
            $$ = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_result(IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, $1);
+               add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, $1);
                IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_result(IMCC_INFO(interp)->cur_call, $1);
+               add_pcc_result(interp, IMCC_INFO(interp)->cur_call, $1);
          }
    | STRINGC ADV_ARROW target
          {
-           add_pcc_named_result(IMCC_INFO(interp)->cur_call, mk_const(interp, $1, 'S'), $3);
+           add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, mk_const(interp, $1, 'S'), $3);
            mem_sys_free($1);
          }
    | /* empty */                { $$ = 0; }

Modified: branches/ops_pct/compilers/imcc/imclexer.c
==============================================================================
--- branches/ops_pct/compilers/imcc/imclexer.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/imclexer.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -3909,7 +3909,7 @@
                 "Invalid LABEL outside of macro");
         }
         else {
-            char * const fmt    = "local__%s__%s__$";
+            const char * const fmt    = "local__%s__%s__$";
             const size_t fmtlen = strlen(fmt) - (2 * strlen("%s"));
             const size_t len    = strlen(IMCC_INFO(interp)->cur_macro_name)
                                 + yyleng + fmtlen;
@@ -5209,7 +5209,7 @@
 static macro_frame_t *
 new_frame(PARROT_INTERP) {
     static int label   = 0;
-    macro_frame_t * const tmp = mem_allocate_zeroed_typed(macro_frame_t);
+    macro_frame_t * const tmp = mem_gc_allocate_zeroed_typed(interp, macro_frame_t);
 
     tmp->label         = ++label;
     tmp->s.line        = IMCC_INFO(interp)->line;
@@ -5317,7 +5317,7 @@
                         macro_name);
 
         len     += strlen(val.s);
-        current  = (char *)realloc(current, len + 1);
+        current  = (char *)mem_sys_realloc(current, len + 1);
         strcat(current,val.s);
 
         mem_sys_free(val.s);
@@ -5385,7 +5385,7 @@
         else {
             if (!need_id || c != ' ') {
                 len     += strlen(val.s);
-                current  = (char *)realloc(current, len + 1);
+                current  = (char *)mem_sys_realloc(current, len + 1);
                 strcat(current, val.s);
             }
 
@@ -5441,7 +5441,6 @@
     }
 
     while (c != ENDM) {
-        char *old_s = valp->s;
         int   elem_len;
 
         if (c <= 0) {
@@ -5529,7 +5528,7 @@
         m->expansion = NULL;
     }
     else {
-        m = mem_allocate_zeroed_typed(macro_t);
+        m = mem_gc_allocate_zeroed_typed(interp, macro_t);
 
         if (!IMCC_INFO(interp)->macros)
             IMCC_INFO(interp)->macros = parrot_new_cstring_hash(interp);

Modified: branches/ops_pct/compilers/imcc/imcparser.c
==============================================================================
--- branches/ops_pct/compilers/imcc/imcparser.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/imcparser.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -87,7 +87,7 @@
  * Intermediate Code Compiler for Parrot.
  *
  * Copyright (C) 2002 Melvin Smith <melvin.smith at mindspring.com>
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
  *
  * Grammar of the PIR language parser.
  *
@@ -110,7 +110,7 @@
 
 /* prevent declarations of malloc() and free() in the generated parser. */
 #define YYMALLOC
-#define YYFREE
+#define YYFREE(Ptr) do { /* empty */; } while (YYID (0))
 
 #ifndef YYENABLE_NLS
 #  define YYENABLE_NLS 0
@@ -125,57 +125,62 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-static void add_pcc_named_arg(
+static void add_pcc_named_arg(PARROT_INTERP,
     ARGMOD(SymReg *cur_call),
     ARGMOD(SymReg *name),
     ARGMOD(SymReg *value))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*cur_call)
         FUNC_MODIFIES(*name)
         FUNC_MODIFIES(*value);
 
-static void add_pcc_named_arg_var(
+static void add_pcc_named_arg_var(PARROT_INTERP,
     ARGMOD(SymReg *cur_call),
     ARGMOD(SymReg *name),
     ARGMOD(SymReg *value))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*cur_call)
         FUNC_MODIFIES(*name)
         FUNC_MODIFIES(*value);
 
-static void add_pcc_named_param(
+static void add_pcc_named_param(PARROT_INTERP,
     ARGMOD(SymReg *cur_call),
     ARGMOD(SymReg *name),
     ARGMOD(SymReg *value))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*cur_call)
         FUNC_MODIFIES(*name)
         FUNC_MODIFIES(*value);
 
-static void add_pcc_named_result(
+static void add_pcc_named_result(PARROT_INTERP,
     ARGMOD(SymReg *cur_call),
     ARGMOD(SymReg *name),
     ARGMOD(SymReg *value))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*cur_call)
         FUNC_MODIFIES(*name)
         FUNC_MODIFIES(*value);
 
-static void add_pcc_named_return(
+static void add_pcc_named_return(PARROT_INTERP,
     ARGMOD(SymReg *cur_call),
     ARGMOD(SymReg *name),
     ARGMOD(SymReg *value))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*cur_call)
         FUNC_MODIFIES(*name)
         FUNC_MODIFIES(*value);
@@ -259,7 +264,7 @@
 static const char * inv_op(ARGIN(const char *op))
         __attribute__nonnull__(1);
 
-PARROT_WARN_UNUSED_RESULT
+PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 static Instruction * iSUBROUTINE(PARROT_INTERP,
     ARGMOD_NULLOK(IMC_Unit *unit),
@@ -333,23 +338,28 @@
         FUNC_MODIFIES(*name);
 
 #define ASSERT_ARGS_add_pcc_named_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(cur_call) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(cur_call) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_add_pcc_named_arg_var __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(cur_call) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(cur_call) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_add_pcc_named_param __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(cur_call) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(cur_call) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_add_pcc_named_result __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(cur_call) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(cur_call) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_add_pcc_named_return __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(cur_call) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(cur_call) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_adv_named_set __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -614,7 +624,7 @@
     }
 
     r[1]          = rhs;
-    rhs->pmc_type = pmc_type(interp,
+    rhs->pmc_type = Parrot_pmc_get_type_str(interp,
         Parrot_str_new(interp, unquoted_name, name_length));
 
     mem_sys_free(unquoted_name);
@@ -721,7 +731,7 @@
 
 */
 
-PARROT_WARN_UNUSED_RESULT
+PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 static Instruction *
 iSUBROUTINE(PARROT_INTERP, ARGMOD_NULLOK(IMC_Unit *unit), ARGMOD(SymReg *r))
@@ -730,7 +740,7 @@
     Instruction * const i = iLABEL(interp, unit, r);
 
     r->type    = (r->type & VT_ENCODED) ? VT_PCC_SUB|VT_ENCODED : VT_PCC_SUB;
-    r->pcc_sub = mem_allocate_zeroed_typed(pcc_sub_t);
+    r->pcc_sub = mem_gc_allocate_zeroed_typed(interp, pcc_sub_t);
 
     IMCC_INFO(interp)->cur_call = r;
     i->line                     = IMCC_INFO(interp)->line;
@@ -981,105 +991,111 @@
 
 /*
 
-=item C<static void add_pcc_named_arg(SymReg *cur_call, SymReg *name, SymReg
-*value)>
+=item C<static void add_pcc_named_arg(PARROT_INTERP, SymReg *cur_call, SymReg
+*name, SymReg *value)>
 
 =cut
 
 */
 
 static void
-add_pcc_named_arg(ARGMOD(SymReg *cur_call),
+add_pcc_named_arg(PARROT_INTERP,
+        ARGMOD(SymReg *cur_call),
         ARGMOD(SymReg *name),
         ARGMOD(SymReg *value))
 {
     ASSERT_ARGS(add_pcc_named_arg)
     name->type  |= VT_NAMED;
 
-    add_pcc_arg(cur_call, name);
-    add_pcc_arg(cur_call, value);
+    add_pcc_arg(interp, cur_call, name);
+    add_pcc_arg(interp, cur_call, value);
 }
 
 /*
 
-=item C<static void add_pcc_named_arg_var(SymReg *cur_call, SymReg *name, SymReg
-*value)>
+=item C<static void add_pcc_named_arg_var(PARROT_INTERP, SymReg *cur_call,
+SymReg *name, SymReg *value)>
 
 =cut
 
 */
 
 static void
-add_pcc_named_arg_var(ARGMOD(SymReg *cur_call),
-    ARGMOD(SymReg *name), ARGMOD(SymReg *value))
+add_pcc_named_arg_var(PARROT_INTERP,
+        ARGMOD(SymReg *cur_call),
+        ARGMOD(SymReg *name),
+        ARGMOD(SymReg *value))
 {
     ASSERT_ARGS(add_pcc_named_arg_var)
     name->type |= VT_NAMED;
-    add_pcc_arg(cur_call, name);
-    add_pcc_arg(cur_call, value);
+    add_pcc_arg(interp, cur_call, name);
+    add_pcc_arg(interp, cur_call, value);
 }
 
 /*
 
-=item C<static void add_pcc_named_result(SymReg *cur_call, SymReg *name, SymReg
-*value)>
+=item C<static void add_pcc_named_result(PARROT_INTERP, SymReg *cur_call, SymReg
+*name, SymReg *value)>
 
 =cut
 
 */
 
 static void
-add_pcc_named_result(ARGMOD(SymReg *cur_call),
+add_pcc_named_result(PARROT_INTERP,
+        ARGMOD(SymReg *cur_call),
         ARGMOD(SymReg *name),
         ARGMOD(SymReg *value))
 {
     ASSERT_ARGS(add_pcc_named_result)
     name->type         |= VT_NAMED;
 
-    add_pcc_result(cur_call, name);
-    add_pcc_result(cur_call, value);
+    add_pcc_result(interp, cur_call, name);
+    add_pcc_result(interp, cur_call, value);
 }
 
 /*
 
-=item C<static void add_pcc_named_param(SymReg *cur_call, SymReg *name, SymReg
-*value)>
+=item C<static void add_pcc_named_param(PARROT_INTERP, SymReg *cur_call, SymReg
+*name, SymReg *value)>
 
 =cut
 
 */
 
 static void
-add_pcc_named_param(ARGMOD(SymReg *cur_call),
+add_pcc_named_param(PARROT_INTERP,
+        ARGMOD(SymReg *cur_call),
         ARGMOD(SymReg *name),
         ARGMOD(SymReg *value))
 {
     ASSERT_ARGS(add_pcc_named_param)
     name->type         |= VT_NAMED;
 
-    add_pcc_arg(cur_call, name);
-    add_pcc_arg(cur_call, value);
+    add_pcc_arg(interp, cur_call, name);
+    add_pcc_arg(interp, cur_call, value);
 }
 
 /*
 
-=item C<static void add_pcc_named_return(SymReg *cur_call, SymReg *name, SymReg
-*value)>
+=item C<static void add_pcc_named_return(PARROT_INTERP, SymReg *cur_call, SymReg
+*name, SymReg *value)>
 
 =cut
 
 */
 
 static void
-add_pcc_named_return(ARGMOD(SymReg *cur_call),
+add_pcc_named_return(PARROT_INTERP,
+        ARGMOD(SymReg *cur_call),
         ARGMOD(SymReg *name),
         ARGMOD(SymReg *value))
 {
     ASSERT_ARGS(add_pcc_named_return)
     name->type         |= VT_NAMED;
 
-    add_pcc_result(cur_call, name);
-    add_pcc_result(cur_call, value);
+    add_pcc_result(interp, cur_call, name);
+    add_pcc_result(interp, cur_call, value);
 }
 
 /*
@@ -1139,7 +1155,7 @@
 
 
 /* Line 189 of yacc.c  */
-#line 1132 "compilers/imcc/imcparser.c"
+#line 1148 "compilers/imcc/imcparser.c"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -1416,7 +1432,7 @@
 {
 
 /* Line 214 of yacc.c  */
-#line 1059 "compilers/imcc/imcc.y"
+#line 1075 "compilers/imcc/imcc.y"
 
     IdList * idlist;
     int t;
@@ -1427,7 +1443,7 @@
 
 
 /* Line 214 of yacc.c  */
-#line 1420 "compilers/imcc/imcparser.c"
+#line 1436 "compilers/imcc/imcparser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -1439,7 +1455,7 @@
 
 
 /* Line 264 of yacc.c  */
-#line 1432 "compilers/imcc/imcparser.c"
+#line 1448 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1860,40 +1876,40 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,  1154,  1154,  1158,  1159,  1163,  1164,  1165,  1171,  1177,
-    1178,  1179,  1180,  1184,  1185,  1194,  1200,  1208,  1220,  1233,
-    1233,  1242,  1242,  1249,  1249,  1258,  1259,  1263,  1264,  1268,
-    1269,  1270,  1271,  1272,  1273,  1274,  1277,  1277,  1286,  1285,
-    1298,  1302,  1315,  1319,  1323,  1323,  1335,  1337,  1341,  1356,
-    1360,  1365,  1369,  1373,  1364,  1385,  1386,  1387,  1400,  1400,
-    1404,  1430,  1434,  1440,  1449,  1455,  1464,  1470,  1479,  1485,
-    1494,  1502,  1507,  1518,  1521,  1526,  1534,  1535,  1536,  1537,
-    1538,  1549,  1560,  1563,  1565,  1570,  1569,  1602,  1603,  1607,
-    1608,  1612,  1613,  1617,  1618,  1622,  1623,  1624,  1625,  1626,
-    1627,  1628,  1629,  1630,  1631,  1632,  1633,  1634,  1635,  1639,
-    1644,  1648,  1653,  1657,  1661,  1666,  1675,  1676,  1680,  1685,
-    1686,  1694,  1695,  1695,  1710,  1711,  1715,  1716,  1717,  1718,
-    1719,  1720,  1721,  1722,  1727,  1727,  1730,  1738,  1738,  1744,
-    1745,  1750,  1758,  1759,  1764,  1772,  1776,  1781,  1780,  1793,
-    1794,  1798,  1799,  1809,  1814,  1824,  1833,  1834,  1846,  1850,
-    1852,  1853,  1854,  1855,  1856,  1860,  1861,  1865,  1866,  1870,
-    1881,  1882,  1893,  1900,  1909,  1919,  1920,  1925,  1926,  1927,
-    1927,  1943,  1960,  1973,  1973,  1980,  1981,  1981,  1987,  1993,
-    1997,  2009,  2010,  2011,  2012,  2013,  2014,  2018,  2019,  2020,
-    2021,  2025,  2038,  2040,  2042,  2044,  2046,  2051,  2054,  2061,
-    2060,  2069,  2070,  2071,  2072,  2080,  2081,  2082,  2086,  2087,
-    2088,  2089,  2090,  2091,  2092,  2093,  2094,  2095,  2096,  2097,
-    2098,  2099,  2100,  2101,  2102,  2103,  2104,  2105,  2106,  2107,
-    2108,  2114,  2113,  2125,  2130,  2131,  2132,  2133,  2134,  2135,
-    2136,  2137,  2138,  2139,  2140,  2141,  2142,  2147,  2158,  2159,
-    2160,  2161,  2167,  2181,  2187,  2193,  2199,  2198,  2207,  2208,
-    2218,  2228,  2235,  2240,  2250,  2254,  2255,  2259,  2260,  2261,
-    2264,  2265,  2269,  2273,  2283,  2289,  2299,  2304,  2308,  2309,
-    2313,  2317,  2321,  2328,  2332,  2336,  2343,  2344,  2348,  2349,
-    2350,  2351,  2352,  2353,  2357,  2358,  2362,  2363,  2367,  2368,
-    2372,  2373,  2380,  2387,  2388,  2389,  2393,  2394,  2398,  2399,
-    2403,  2404,  2408,  2409,  2413,  2413,  2425,  2425,  2437,  2438,
-    2446,  2453,  2454,  2455,  2456,  2457,  2461,  2462,  2463,  2464
+       0,  1170,  1170,  1174,  1175,  1179,  1180,  1181,  1187,  1193,
+    1194,  1195,  1196,  1200,  1201,  1210,  1216,  1224,  1236,  1249,
+    1249,  1258,  1258,  1265,  1265,  1274,  1275,  1279,  1280,  1284,
+    1285,  1286,  1287,  1288,  1289,  1290,  1293,  1293,  1302,  1301,
+    1314,  1318,  1331,  1335,  1339,  1339,  1351,  1353,  1357,  1372,
+    1376,  1381,  1385,  1389,  1380,  1401,  1402,  1403,  1416,  1416,
+    1420,  1446,  1450,  1456,  1465,  1471,  1480,  1486,  1495,  1501,
+    1510,  1518,  1523,  1534,  1537,  1542,  1550,  1551,  1552,  1553,
+    1554,  1565,  1576,  1579,  1581,  1586,  1585,  1618,  1619,  1623,
+    1624,  1628,  1629,  1633,  1634,  1638,  1639,  1640,  1641,  1642,
+    1643,  1644,  1645,  1646,  1647,  1648,  1649,  1650,  1651,  1655,
+    1660,  1664,  1669,  1673,  1677,  1682,  1691,  1692,  1696,  1701,
+    1702,  1710,  1711,  1711,  1726,  1727,  1731,  1732,  1733,  1734,
+    1735,  1736,  1737,  1738,  1743,  1743,  1746,  1754,  1754,  1760,
+    1761,  1766,  1774,  1775,  1780,  1788,  1792,  1797,  1796,  1809,
+    1810,  1814,  1815,  1825,  1830,  1840,  1849,  1850,  1862,  1866,
+    1868,  1869,  1870,  1871,  1872,  1876,  1877,  1881,  1882,  1886,
+    1897,  1898,  1909,  1916,  1925,  1935,  1936,  1941,  1942,  1943,
+    1943,  1959,  1976,  1989,  1989,  1996,  1997,  1997,  2003,  2009,
+    2013,  2025,  2026,  2027,  2028,  2029,  2030,  2034,  2035,  2036,
+    2037,  2041,  2054,  2056,  2058,  2060,  2062,  2067,  2070,  2077,
+    2076,  2085,  2086,  2087,  2088,  2096,  2097,  2098,  2102,  2103,
+    2104,  2105,  2106,  2107,  2108,  2109,  2110,  2111,  2112,  2113,
+    2114,  2115,  2116,  2117,  2118,  2119,  2120,  2121,  2122,  2123,
+    2124,  2130,  2129,  2141,  2146,  2147,  2148,  2149,  2150,  2151,
+    2152,  2153,  2154,  2155,  2156,  2157,  2158,  2163,  2174,  2175,
+    2176,  2177,  2183,  2197,  2203,  2209,  2215,  2214,  2223,  2224,
+    2234,  2244,  2251,  2256,  2266,  2270,  2271,  2275,  2276,  2277,
+    2280,  2281,  2285,  2289,  2299,  2305,  2315,  2320,  2324,  2325,
+    2329,  2333,  2337,  2344,  2348,  2352,  2359,  2360,  2364,  2365,
+    2366,  2367,  2368,  2369,  2373,  2374,  2378,  2379,  2383,  2384,
+    2388,  2389,  2396,  2403,  2404,  2405,  2409,  2410,  2414,  2415,
+    2419,  2420,  2424,  2425,  2429,  2429,  2441,  2441,  2453,  2454,
+    2462,  2469,  2470,  2471,  2472,  2473,  2477,  2478,  2479,  2480
 };
 #endif
 
@@ -3240,28 +3256,28 @@
         case 2:
 
 /* Line 1455 of yacc.c  */
-#line 1154 "compilers/imcc/imcc.y"
+#line 1170 "compilers/imcc/imcc.y"
     { if (yynerrs) YYABORT; (yyval.i) = 0; }
     break;
 
   case 5:
 
 /* Line 1455 of yacc.c  */
-#line 1163 "compilers/imcc/imcc.y"
+#line 1179 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 6:
 
 /* Line 1455 of yacc.c  */
-#line 1164 "compilers/imcc/imcc.y"
+#line 1180 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 7:
 
 /* Line 1455 of yacc.c  */
-#line 1166 "compilers/imcc/imcc.y"
+#line 1182 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3272,7 +3288,7 @@
   case 8:
 
 /* Line 1455 of yacc.c  */
-#line 1172 "compilers/imcc/imcc.y"
+#line 1188 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3283,42 +3299,42 @@
   case 9:
 
 /* Line 1455 of yacc.c  */
-#line 1177 "compilers/imcc/imcc.y"
+#line 1193 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 10:
 
 /* Line 1455 of yacc.c  */
-#line 1178 "compilers/imcc/imcc.y"
+#line 1194 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 11:
 
 /* Line 1455 of yacc.c  */
-#line 1179 "compilers/imcc/imcc.y"
+#line 1195 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 12:
 
 /* Line 1455 of yacc.c  */
-#line 1180 "compilers/imcc/imcc.y"
+#line 1196 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 13:
 
 /* Line 1455 of yacc.c  */
-#line 1184 "compilers/imcc/imcc.y"
+#line 1200 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 14:
 
 /* Line 1455 of yacc.c  */
-#line 1186 "compilers/imcc/imcc.y"
+#line 1202 "compilers/imcc/imcc.y"
     {
            (yyval.i) = 0;
            do_loadlib(interp, (yyvsp[(2) - (3)].s));
@@ -3329,7 +3345,7 @@
   case 15:
 
 /* Line 1455 of yacc.c  */
-#line 1195 "compilers/imcc/imcc.y"
+#line 1211 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
            /* set_filename() frees the STRINGC */
@@ -3340,7 +3356,7 @@
   case 16:
 
 /* Line 1455 of yacc.c  */
-#line 1201 "compilers/imcc/imcc.y"
+#line 1217 "compilers/imcc/imcc.y"
     {
            /* set_filename() frees the STRINGC */
            set_filename(interp, (yyvsp[(2) - (3)].s));
@@ -3350,7 +3366,7 @@
   case 17:
 
 /* Line 1455 of yacc.c  */
-#line 1209 "compilers/imcc/imcc.y"
+#line 1225 "compilers/imcc/imcc.y"
     {
           /* We'll want to store an entry while emitting instructions, so just
            * store annotation like it's an instruction. */
@@ -3363,7 +3379,7 @@
   case 18:
 
 /* Line 1455 of yacc.c  */
-#line 1221 "compilers/imcc/imcc.y"
+#line 1237 "compilers/imcc/imcc.y"
     {
             STRING * const hll_name = Parrot_str_unescape(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
             Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp),
@@ -3378,14 +3394,14 @@
   case 19:
 
 /* Line 1455 of yacc.c  */
-#line 1233 "compilers/imcc/imcc.y"
+#line 1249 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 20:
 
 /* Line 1455 of yacc.c  */
-#line 1234 "compilers/imcc/imcc.y"
+#line 1250 "compilers/imcc/imcc.y"
     {
              mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
              mem_sys_free((yyvsp[(4) - (6)].s));
@@ -3396,14 +3412,14 @@
   case 21:
 
 /* Line 1455 of yacc.c  */
-#line 1242 "compilers/imcc/imcc.y"
+#line 1258 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 22:
 
 /* Line 1455 of yacc.c  */
-#line 1243 "compilers/imcc/imcc.y"
+#line 1259 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
            mem_sys_free((yyvsp[(6) - (6)].s));
@@ -3414,14 +3430,14 @@
   case 23:
 
 /* Line 1455 of yacc.c  */
-#line 1249 "compilers/imcc/imcc.y"
+#line 1265 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 24:
 
 /* Line 1455 of yacc.c  */
-#line 1250 "compilers/imcc/imcc.y"
+#line 1266 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
            mem_sys_free((yyvsp[(3) - (6)].s));
@@ -3433,49 +3449,49 @@
   case 29:
 
 /* Line 1455 of yacc.c  */
-#line 1268 "compilers/imcc/imcc.y"
+#line 1284 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 30:
 
 /* Line 1455 of yacc.c  */
-#line 1269 "compilers/imcc/imcc.y"
+#line 1285 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 31:
 
 /* Line 1455 of yacc.c  */
-#line 1270 "compilers/imcc/imcc.y"
+#line 1286 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 32:
 
 /* Line 1455 of yacc.c  */
-#line 1271 "compilers/imcc/imcc.y"
+#line 1287 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 33:
 
 /* Line 1455 of yacc.c  */
-#line 1272 "compilers/imcc/imcc.y"
+#line 1288 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 36:
 
 /* Line 1455 of yacc.c  */
-#line 1277 "compilers/imcc/imcc.y"
+#line 1293 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 37:
 
 /* Line 1455 of yacc.c  */
-#line 1279 "compilers/imcc/imcc.y"
+#line 1295 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
                     (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs,
@@ -3487,7 +3503,7 @@
   case 38:
 
 /* Line 1455 of yacc.c  */
-#line 1286 "compilers/imcc/imcc.y"
+#line 1302 "compilers/imcc/imcc.y"
     {
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
@@ -3497,7 +3513,7 @@
   case 39:
 
 /* Line 1455 of yacc.c  */
-#line 1291 "compilers/imcc/imcc.y"
+#line 1307 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iSUBROUTINE(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -3510,7 +3526,7 @@
   case 40:
 
 /* Line 1455 of yacc.c  */
-#line 1299 "compilers/imcc/imcc.y"
+#line 1315 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
          }
@@ -3519,7 +3535,7 @@
   case 41:
 
 /* Line 1455 of yacc.c  */
-#line 1303 "compilers/imcc/imcc.y"
+#line 1319 "compilers/imcc/imcc.y"
     {
            char   *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1);
            SymReg *r    = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s));
@@ -3537,21 +3553,21 @@
   case 42:
 
 /* Line 1455 of yacc.c  */
-#line 1315 "compilers/imcc/imcc.y"
+#line 1331 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 44:
 
 /* Line 1455 of yacc.c  */
-#line 1323 "compilers/imcc/imcc.y"
+#line 1339 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
     break;
 
   case 45:
 
 /* Line 1455 of yacc.c  */
-#line 1326 "compilers/imcc/imcc.y"
+#line 1342 "compilers/imcc/imcc.y"
     {
            /* if (optimizer_level & OPT_PASM)
                          imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3564,7 +3580,7 @@
   case 48:
 
 /* Line 1455 of yacc.c  */
-#line 1342 "compilers/imcc/imcc.y"
+#line 1358 "compilers/imcc/imcc.y"
     {
            int re_open = 0;
            (yyval.i) = 0;
@@ -3581,7 +3597,7 @@
   case 49:
 
 /* Line 1455 of yacc.c  */
-#line 1357 "compilers/imcc/imcc.y"
+#line 1373 "compilers/imcc/imcc.y"
     {
             (yyval.sr) = (yyvsp[(2) - (3)].sr);
         }
@@ -3590,14 +3606,14 @@
   case 50:
 
 /* Line 1455 of yacc.c  */
-#line 1360 "compilers/imcc/imcc.y"
+#line 1376 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 51:
 
 /* Line 1455 of yacc.c  */
-#line 1365 "compilers/imcc/imcc.y"
+#line 1381 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
          }
@@ -3606,7 +3622,7 @@
   case 52:
 
 /* Line 1455 of yacc.c  */
-#line 1369 "compilers/imcc/imcc.y"
+#line 1385 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
          }
@@ -3615,7 +3631,7 @@
   case 53:
 
 /* Line 1455 of yacc.c  */
-#line 1373 "compilers/imcc/imcc.y"
+#line 1389 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t);
           if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid) {
@@ -3628,62 +3644,62 @@
   case 54:
 
 /* Line 1455 of yacc.c  */
-#line 1381 "compilers/imcc/imcc.y"
+#line 1397 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 55:
 
 /* Line 1455 of yacc.c  */
-#line 1385 "compilers/imcc/imcc.y"
+#line 1401 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 56:
 
 /* Line 1455 of yacc.c  */
-#line 1386 "compilers/imcc/imcc.y"
+#line 1402 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 57:
 
 /* Line 1455 of yacc.c  */
-#line 1388 "compilers/imcc/imcc.y"
+#line 1404 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
-                 add_pcc_named_param(IMCC_INFO(interp)->cur_call,
+                 add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
                                      IMCC_INFO(interp)->adv_named_id, (yyvsp[(2) - (3)].sr));
                  IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
+               add_pcc_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 58:
 
 /* Line 1455 of yacc.c  */
-#line 1400 "compilers/imcc/imcc.y"
+#line 1416 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 59:
 
 /* Line 1455 of yacc.c  */
-#line 1400 "compilers/imcc/imcc.y"
+#line 1416 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(3) - (3)].sr); IMCC_INFO(interp)->is_def = 0; }
     break;
 
   case 60:
 
 /* Line 1455 of yacc.c  */
-#line 1405 "compilers/imcc/imcc.y"
+#line 1421 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(3) - (3)].t) & VT_UNIQUE_REG)
                (yyval.sr) = mk_ident_ur(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
            else if ((yyvsp[(3) - (3)].t) & VT_OPT_FLAG && (yyvsp[(1) - (3)].t) != 'I') {
-               char *type;
+               const char *type;
                switch ((yyvsp[(1) - (3)].t)) {
                     case 'N': type = "num";     break;
                     case 'S': type = "string";  break;
@@ -3704,14 +3720,14 @@
   case 61:
 
 /* Line 1455 of yacc.c  */
-#line 1430 "compilers/imcc/imcc.y"
+#line 1446 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 62:
 
 /* Line 1455 of yacc.c  */
-#line 1435 "compilers/imcc/imcc.y"
+#line 1451 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
@@ -3722,7 +3738,7 @@
   case 63:
 
 /* Line 1455 of yacc.c  */
-#line 1441 "compilers/imcc/imcc.y"
+#line 1457 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3733,7 +3749,7 @@
   case 64:
 
 /* Line 1455 of yacc.c  */
-#line 1450 "compilers/imcc/imcc.y"
+#line 1466 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name      = NULL;
@@ -3744,7 +3760,7 @@
   case 65:
 
 /* Line 1455 of yacc.c  */
-#line 1456 "compilers/imcc/imcc.y"
+#line 1472 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name      = (yyvsp[(3) - (4)].s);
@@ -3755,7 +3771,7 @@
   case 66:
 
 /* Line 1455 of yacc.c  */
-#line 1465 "compilers/imcc/imcc.y"
+#line 1481 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = NULL;
@@ -3766,7 +3782,7 @@
   case 67:
 
 /* Line 1455 of yacc.c  */
-#line 1471 "compilers/imcc/imcc.y"
+#line 1487 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
@@ -3777,7 +3793,7 @@
   case 68:
 
 /* Line 1455 of yacc.c  */
-#line 1480 "compilers/imcc/imcc.y"
+#line 1496 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name     = NULL;
@@ -3788,7 +3804,7 @@
   case 69:
 
 /* Line 1455 of yacc.c  */
-#line 1486 "compilers/imcc/imcc.y"
+#line 1502 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
@@ -3799,7 +3815,7 @@
   case 70:
 
 /* Line 1455 of yacc.c  */
-#line 1495 "compilers/imcc/imcc.y"
+#line 1511 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
@@ -3809,7 +3825,7 @@
   case 71:
 
 /* Line 1455 of yacc.c  */
-#line 1503 "compilers/imcc/imcc.y"
+#line 1519 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = NULL;
@@ -3819,7 +3835,7 @@
   case 72:
 
 /* Line 1455 of yacc.c  */
-#line 1508 "compilers/imcc/imcc.y"
+#line 1524 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3831,64 +3847,64 @@
   case 73:
 
 /* Line 1455 of yacc.c  */
-#line 1518 "compilers/imcc/imcc.y"
+#line 1534 "compilers/imcc/imcc.y"
     {
-           add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
+           add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, NULL);
          }
     break;
 
   case 74:
 
 /* Line 1455 of yacc.c  */
-#line 1522 "compilers/imcc/imcc.y"
+#line 1538 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
-           add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
+           add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 75:
 
 /* Line 1455 of yacc.c  */
-#line 1527 "compilers/imcc/imcc.y"
+#line 1543 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
-           add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
+           add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
          }
     break;
 
   case 76:
 
 /* Line 1455 of yacc.c  */
-#line 1534 "compilers/imcc/imcc.y"
+#line 1550 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
     break;
 
   case 77:
 
 /* Line 1455 of yacc.c  */
-#line 1535 "compilers/imcc/imcc.y"
+#line 1551 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
     break;
 
   case 78:
 
 /* Line 1455 of yacc.c  */
-#line 1536 "compilers/imcc/imcc.y"
+#line 1552 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
     break;
 
   case 79:
 
 /* Line 1455 of yacc.c  */
-#line 1537 "compilers/imcc/imcc.y"
+#line 1553 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
     break;
 
   case 80:
 
 /* Line 1455 of yacc.c  */
-#line 1539 "compilers/imcc/imcc.y"
+#line 1555 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3904,7 +3920,7 @@
   case 81:
 
 /* Line 1455 of yacc.c  */
-#line 1550 "compilers/imcc/imcc.y"
+#line 1566 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3920,14 +3936,14 @@
   case 82:
 
 /* Line 1455 of yacc.c  */
-#line 1560 "compilers/imcc/imcc.y"
+#line 1576 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 85:
 
 /* Line 1455 of yacc.c  */
-#line 1570 "compilers/imcc/imcc.y"
+#line 1586 "compilers/imcc/imcc.y"
     {
            char name[128];
            SymReg *r, *r1;
@@ -3956,112 +3972,112 @@
   case 86:
 
 /* Line 1455 of yacc.c  */
-#line 1598 "compilers/imcc/imcc.y"
+#line 1614 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 87:
 
 /* Line 1455 of yacc.c  */
-#line 1602 "compilers/imcc/imcc.y"
+#line 1618 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
   case 88:
 
 /* Line 1455 of yacc.c  */
-#line 1603 "compilers/imcc/imcc.y"
+#line 1619 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
   case 89:
 
 /* Line 1455 of yacc.c  */
-#line 1607 "compilers/imcc/imcc.y"
+#line 1623 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 90:
 
 /* Line 1455 of yacc.c  */
-#line 1608 "compilers/imcc/imcc.y"
+#line 1624 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 91:
 
 /* Line 1455 of yacc.c  */
-#line 1612 "compilers/imcc/imcc.y"
+#line 1628 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 93:
 
 /* Line 1455 of yacc.c  */
-#line 1617 "compilers/imcc/imcc.y"
+#line 1633 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
   case 94:
 
 /* Line 1455 of yacc.c  */
-#line 1618 "compilers/imcc/imcc.y"
+#line 1634 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 95:
 
 /* Line 1455 of yacc.c  */
-#line 1622 "compilers/imcc/imcc.y"
+#line 1638 "compilers/imcc/imcc.y"
     { (yyval.t) = P_LOAD; }
     break;
 
   case 96:
 
 /* Line 1455 of yacc.c  */
-#line 1623 "compilers/imcc/imcc.y"
+#line 1639 "compilers/imcc/imcc.y"
     { (yyval.t) = P_INIT; }
     break;
 
   case 97:
 
 /* Line 1455 of yacc.c  */
-#line 1624 "compilers/imcc/imcc.y"
+#line 1640 "compilers/imcc/imcc.y"
     { (yyval.t) = P_MAIN; }
     break;
 
   case 98:
 
 /* Line 1455 of yacc.c  */
-#line 1625 "compilers/imcc/imcc.y"
+#line 1641 "compilers/imcc/imcc.y"
     { (yyval.t) = P_IMMEDIATE; }
     break;
 
   case 99:
 
 /* Line 1455 of yacc.c  */
-#line 1626 "compilers/imcc/imcc.y"
+#line 1642 "compilers/imcc/imcc.y"
     { (yyval.t) = P_POSTCOMP; }
     break;
 
   case 100:
 
 /* Line 1455 of yacc.c  */
-#line 1627 "compilers/imcc/imcc.y"
+#line 1643 "compilers/imcc/imcc.y"
     { (yyval.t) = P_ANON; }
     break;
 
   case 101:
 
 /* Line 1455 of yacc.c  */
-#line 1628 "compilers/imcc/imcc.y"
+#line 1644 "compilers/imcc/imcc.y"
     { (yyval.t) = P_NEED_LEX; }
     break;
 
   case 109:
 
 /* Line 1455 of yacc.c  */
-#line 1640 "compilers/imcc/imcc.y"
+#line 1656 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -4071,7 +4087,7 @@
   case 110:
 
 /* Line 1455 of yacc.c  */
-#line 1645 "compilers/imcc/imcc.y"
+#line 1661 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
@@ -4080,7 +4096,7 @@
   case 111:
 
 /* Line 1455 of yacc.c  */
-#line 1649 "compilers/imcc/imcc.y"
+#line 1665 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isNCI;
@@ -4090,7 +4106,7 @@
   case 112:
 
 /* Line 1455 of yacc.c  */
-#line 1654 "compilers/imcc/imcc.y"
+#line 1670 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
@@ -4099,7 +4115,7 @@
   case 113:
 
 /* Line 1455 of yacc.c  */
-#line 1658 "compilers/imcc/imcc.y"
+#line 1674 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
          }
@@ -4108,7 +4124,7 @@
   case 114:
 
 /* Line 1455 of yacc.c  */
-#line 1662 "compilers/imcc/imcc.y"
+#line 1678 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -4118,7 +4134,7 @@
   case 115:
 
 /* Line 1455 of yacc.c  */
-#line 1667 "compilers/imcc/imcc.y"
+#line 1683 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -4128,59 +4144,59 @@
   case 116:
 
 /* Line 1455 of yacc.c  */
-#line 1675 "compilers/imcc/imcc.y"
+#line 1691 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 117:
 
 /* Line 1455 of yacc.c  */
-#line 1676 "compilers/imcc/imcc.y"
-    { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
+#line 1692 "compilers/imcc/imcc.y"
+    { add_pcc_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
   case 118:
 
 /* Line 1455 of yacc.c  */
-#line 1680 "compilers/imcc/imcc.y"
+#line 1696 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
   case 119:
 
 /* Line 1455 of yacc.c  */
-#line 1685 "compilers/imcc/imcc.y"
+#line 1701 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 120:
 
 /* Line 1455 of yacc.c  */
-#line 1687 "compilers/imcc/imcc.y"
+#line 1703 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
-               add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
+               add_pcc_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 121:
 
 /* Line 1455 of yacc.c  */
-#line 1694 "compilers/imcc/imcc.y"
+#line 1710 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 122:
 
 /* Line 1455 of yacc.c  */
-#line 1695 "compilers/imcc/imcc.y"
+#line 1711 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 123:
 
 /* Line 1455 of yacc.c  */
-#line 1696 "compilers/imcc/imcc.y"
+#line 1712 "compilers/imcc/imcc.y"
     {
            IdList * const l = (yyvsp[(4) - (4)].idlist);
            SymReg *ignored;
@@ -4197,91 +4213,91 @@
   case 124:
 
 /* Line 1455 of yacc.c  */
-#line 1710 "compilers/imcc/imcc.y"
+#line 1726 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 125:
 
 /* Line 1455 of yacc.c  */
-#line 1711 "compilers/imcc/imcc.y"
+#line 1727 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 126:
 
 /* Line 1455 of yacc.c  */
-#line 1715 "compilers/imcc/imcc.y"
+#line 1731 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;   }
     break;
 
   case 127:
 
 /* Line 1455 of yacc.c  */
-#line 1716 "compilers/imcc/imcc.y"
+#line 1732 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPTIONAL; }
     break;
 
   case 128:
 
 /* Line 1455 of yacc.c  */
-#line 1717 "compilers/imcc/imcc.y"
+#line 1733 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPT_FLAG; }
     break;
 
   case 129:
 
 /* Line 1455 of yacc.c  */
-#line 1718 "compilers/imcc/imcc.y"
+#line 1734 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
   case 130:
 
 /* Line 1455 of yacc.c  */
-#line 1719 "compilers/imcc/imcc.y"
+#line 1735 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; mem_sys_free((yyvsp[(3) - (4)].s)); }
     break;
 
   case 131:
 
 /* Line 1455 of yacc.c  */
-#line 1720 "compilers/imcc/imcc.y"
+#line 1736 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; mem_sys_free((yyvsp[(3) - (4)].s)); }
     break;
 
   case 132:
 
 /* Line 1455 of yacc.c  */
-#line 1721 "compilers/imcc/imcc.y"
+#line 1737 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_UNIQUE_REG; }
     break;
 
   case 133:
 
 /* Line 1455 of yacc.c  */
-#line 1722 "compilers/imcc/imcc.y"
+#line 1738 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_CALL_SIG; }
     break;
 
   case 134:
 
 /* Line 1455 of yacc.c  */
-#line 1727 "compilers/imcc/imcc.y"
+#line 1743 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 0); }
     break;
 
   case 135:
 
 /* Line 1455 of yacc.c  */
-#line 1729 "compilers/imcc/imcc.y"
+#line 1745 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 136:
 
 /* Line 1455 of yacc.c  */
-#line 1731 "compilers/imcc/imcc.y"
+#line 1747 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
            (yyval.i) = 0;
@@ -4291,89 +4307,89 @@
   case 137:
 
 /* Line 1455 of yacc.c  */
-#line 1738 "compilers/imcc/imcc.y"
+#line 1754 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); }
     break;
 
   case 138:
 
 /* Line 1455 of yacc.c  */
-#line 1740 "compilers/imcc/imcc.y"
+#line 1756 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 139:
 
 /* Line 1455 of yacc.c  */
-#line 1744 "compilers/imcc/imcc.y"
+#line 1760 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 140:
 
 /* Line 1455 of yacc.c  */
-#line 1746 "compilers/imcc/imcc.y"
+#line 1762 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
-               add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
+               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
          }
     break;
 
   case 141:
 
 /* Line 1455 of yacc.c  */
-#line 1751 "compilers/imcc/imcc.y"
+#line 1767 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
-               add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
+               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 142:
 
 /* Line 1455 of yacc.c  */
-#line 1758 "compilers/imcc/imcc.y"
+#line 1774 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 143:
 
 /* Line 1455 of yacc.c  */
-#line 1760 "compilers/imcc/imcc.y"
+#line 1776 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
-               add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
+               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
          }
     break;
 
   case 144:
 
 /* Line 1455 of yacc.c  */
-#line 1765 "compilers/imcc/imcc.y"
+#line 1781 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
-               add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
+               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 145:
 
 /* Line 1455 of yacc.c  */
-#line 1772 "compilers/imcc/imcc.y"
+#line 1788 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 146:
 
 /* Line 1455 of yacc.c  */
-#line 1776 "compilers/imcc/imcc.y"
+#line 1792 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 147:
 
 /* Line 1455 of yacc.c  */
-#line 1781 "compilers/imcc/imcc.y"
+#line 1797 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
               begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
@@ -4383,7 +4399,7 @@
   case 148:
 
 /* Line 1455 of yacc.c  */
-#line 1786 "compilers/imcc/imcc.y"
+#line 1802 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
           (yyval.t) = 0;
@@ -4393,134 +4409,134 @@
   case 149:
 
 /* Line 1455 of yacc.c  */
-#line 1793 "compilers/imcc/imcc.y"
+#line 1809 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 150:
 
 /* Line 1455 of yacc.c  */
-#line 1794 "compilers/imcc/imcc.y"
+#line 1810 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 151:
 
 /* Line 1455 of yacc.c  */
-#line 1798 "compilers/imcc/imcc.y"
+#line 1814 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 152:
 
 /* Line 1455 of yacc.c  */
-#line 1800 "compilers/imcc/imcc.y"
+#line 1816 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_return(IMCC_INFO(interp)->sr_return,
+               add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
                                     IMCC_INFO(interp)->adv_named_id, (yyvsp[(1) - (1)].sr));
                IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (1)].sr));
+               add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (1)].sr));
          }
     break;
 
   case 153:
 
 /* Line 1455 of yacc.c  */
-#line 1810 "compilers/imcc/imcc.y"
+#line 1826 "compilers/imcc/imcc.y"
     {
             SymReg * const name = mk_const(interp, (yyvsp[(1) - (3)].s), 'S');
-            add_pcc_named_return(IMCC_INFO(interp)->sr_return, name, (yyvsp[(3) - (3)].sr));
+            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 154:
 
 /* Line 1455 of yacc.c  */
-#line 1815 "compilers/imcc/imcc.y"
+#line 1831 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_return(IMCC_INFO(interp)->sr_return,
+               add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
                                     IMCC_INFO(interp)->adv_named_id, (yyvsp[(3) - (3)].sr));
                IMCC_INFO(interp)->adv_named_id = NULL;
              }
              else
-                 add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (3)].sr));
+                 add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 155:
 
 /* Line 1455 of yacc.c  */
-#line 1825 "compilers/imcc/imcc.y"
+#line 1841 "compilers/imcc/imcc.y"
     {
            SymReg * const name = mk_const(interp, (yyvsp[(3) - (5)].s), 'S');
-           add_pcc_named_return(IMCC_INFO(interp)->sr_return, name, (yyvsp[(5) - (5)].sr));
+           add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, (yyvsp[(5) - (5)].sr));
          }
     break;
 
   case 158:
 
 /* Line 1455 of yacc.c  */
-#line 1846 "compilers/imcc/imcc.y"
+#line 1862 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 159:
 
 /* Line 1455 of yacc.c  */
-#line 1851 "compilers/imcc/imcc.y"
+#line 1867 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
   case 160:
 
 /* Line 1455 of yacc.c  */
-#line 1852 "compilers/imcc/imcc.y"
+#line 1868 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 161:
 
 /* Line 1455 of yacc.c  */
-#line 1853 "compilers/imcc/imcc.y"
+#line 1869 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 162:
 
 /* Line 1455 of yacc.c  */
-#line 1854 "compilers/imcc/imcc.y"
+#line 1870 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 163:
 
 /* Line 1455 of yacc.c  */
-#line 1855 "compilers/imcc/imcc.y"
+#line 1871 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 164:
 
 /* Line 1455 of yacc.c  */
-#line 1856 "compilers/imcc/imcc.y"
+#line 1872 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 165:
 
 /* Line 1455 of yacc.c  */
-#line 1860 "compilers/imcc/imcc.y"
+#line 1876 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 169:
 
 /* Line 1455 of yacc.c  */
-#line 1871 "compilers/imcc/imcc.y"
+#line 1887 "compilers/imcc/imcc.y"
     {
              Instruction * const i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
              mem_sys_free((yyvsp[(1) - (1)].s));
@@ -4531,14 +4547,14 @@
   case 170:
 
 /* Line 1455 of yacc.c  */
-#line 1881 "compilers/imcc/imcc.y"
+#line 1897 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
   case 171:
 
 /* Line 1455 of yacc.c  */
-#line 1883 "compilers/imcc/imcc.y"
+#line 1899 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
                IMCC_warning(interp, "Too many errors. Correct some first.\n");
@@ -4551,7 +4567,7 @@
   case 172:
 
 /* Line 1455 of yacc.c  */
-#line 1894 "compilers/imcc/imcc.y"
+#line 1910 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(1) - (1)].idlist);
            l->next = NULL;
@@ -4562,7 +4578,7 @@
   case 173:
 
 /* Line 1455 of yacc.c  */
-#line 1901 "compilers/imcc/imcc.y"
+#line 1917 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(3) - (3)].idlist);
            l->next = (yyvsp[(1) - (3)].idlist);
@@ -4573,9 +4589,9 @@
   case 174:
 
 /* Line 1455 of yacc.c  */
-#line 1910 "compilers/imcc/imcc.y"
+#line 1926 "compilers/imcc/imcc.y"
     {
-           IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
+           IdList* const l = mem_gc_allocate_n_zeroed_typed(interp, 1, IdList);
            l->id           = (yyvsp[(1) - (2)].s);
            l->unique_reg   = (yyvsp[(2) - (2)].t);
            (yyval.idlist) = l;
@@ -4585,28 +4601,28 @@
   case 175:
 
 /* Line 1455 of yacc.c  */
-#line 1919 "compilers/imcc/imcc.y"
+#line 1935 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 176:
 
 /* Line 1455 of yacc.c  */
-#line 1920 "compilers/imcc/imcc.y"
+#line 1936 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 179:
 
 /* Line 1455 of yacc.c  */
-#line 1927 "compilers/imcc/imcc.y"
+#line 1943 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 180:
 
 /* Line 1455 of yacc.c  */
-#line 1928 "compilers/imcc/imcc.y"
+#line 1944 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            while (l) {
@@ -4627,7 +4643,7 @@
   case 181:
 
 /* Line 1455 of yacc.c  */
-#line 1944 "compilers/imcc/imcc.y"
+#line 1960 "compilers/imcc/imcc.y"
     {
             if ((yyvsp[(4) - (4)].sr)->set != 'P') {
                 mem_sys_free((yyvsp[(2) - (4)].s));
@@ -4649,7 +4665,7 @@
   case 182:
 
 /* Line 1455 of yacc.c  */
-#line 1961 "compilers/imcc/imcc.y"
+#line 1977 "compilers/imcc/imcc.y"
     {
             if ((yyvsp[(4) - (4)].sr)->set != 'P') {
                 mem_sys_free((yyvsp[(2) - (4)].s));
@@ -4667,14 +4683,14 @@
   case 183:
 
 /* Line 1455 of yacc.c  */
-#line 1973 "compilers/imcc/imcc.y"
+#line 1989 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 184:
 
 /* Line 1455 of yacc.c  */
-#line 1974 "compilers/imcc/imcc.y"
+#line 1990 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
            IMCC_INFO(interp)->is_def = 0;
@@ -4685,14 +4701,14 @@
   case 186:
 
 /* Line 1455 of yacc.c  */
-#line 1981 "compilers/imcc/imcc.y"
+#line 1997 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 187:
 
 /* Line 1455 of yacc.c  */
-#line 1982 "compilers/imcc/imcc.y"
+#line 1998 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
            IMCC_INFO(interp)->is_def = 0;
@@ -4703,7 +4719,7 @@
   case 188:
 
 /* Line 1455 of yacc.c  */
-#line 1988 "compilers/imcc/imcc.y"
+#line 2004 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
@@ -4714,7 +4730,7 @@
   case 189:
 
 /* Line 1455 of yacc.c  */
-#line 1994 "compilers/imcc/imcc.y"
+#line 2010 "compilers/imcc/imcc.y"
     {
             (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
          }
@@ -4723,7 +4739,7 @@
   case 190:
 
 /* Line 1455 of yacc.c  */
-#line 1998 "compilers/imcc/imcc.y"
+#line 2014 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -4740,67 +4756,67 @@
   case 191:
 
 /* Line 1455 of yacc.c  */
-#line 2009 "compilers/imcc/imcc.y"
+#line 2025 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
   case 192:
 
 /* Line 1455 of yacc.c  */
-#line 2010 "compilers/imcc/imcc.y"
+#line 2026 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 193:
 
 /* Line 1455 of yacc.c  */
-#line 2011 "compilers/imcc/imcc.y"
+#line 2027 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 196:
 
 /* Line 1455 of yacc.c  */
-#line 2014 "compilers/imcc/imcc.y"
+#line 2030 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 197:
 
 /* Line 1455 of yacc.c  */
-#line 2018 "compilers/imcc/imcc.y"
+#line 2034 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; }
     break;
 
   case 198:
 
 /* Line 1455 of yacc.c  */
-#line 2019 "compilers/imcc/imcc.y"
+#line 2035 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; }
     break;
 
   case 199:
 
 /* Line 1455 of yacc.c  */
-#line 2020 "compilers/imcc/imcc.y"
+#line 2036 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; }
     break;
 
   case 200:
 
 /* Line 1455 of yacc.c  */
-#line 2021 "compilers/imcc/imcc.y"
+#line 2037 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; }
     break;
 
   case 201:
 
 /* Line 1455 of yacc.c  */
-#line 2026 "compilers/imcc/imcc.y"
+#line 2042 "compilers/imcc/imcc.y"
     {
            /* there'd normally be a mem_sys_strdup() here, but the lexer already
             * copied the string, so it's safe to use directly */
-           if ((IMCC_INFO(interp)->cur_pmc_type = pmc_type(interp,
+           if ((IMCC_INFO(interp)->cur_pmc_type = Parrot_pmc_get_type_str(interp,
                Parrot_str_new(interp, (yyvsp[(1) - (1)].s), 0))) <= 0) {
                IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
                     "Unknown PMC type '%s'\n", (yyvsp[(1) - (1)].s));
@@ -4811,51 +4827,51 @@
   case 202:
 
 /* Line 1455 of yacc.c  */
-#line 2039 "compilers/imcc/imcc.y"
+#line 2055 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  }
     break;
 
   case 203:
 
 /* Line 1455 of yacc.c  */
-#line 2041 "compilers/imcc/imcc.y"
+#line 2057 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  }
     break;
 
   case 204:
 
 /* Line 1455 of yacc.c  */
-#line 2043 "compilers/imcc/imcc.y"
+#line 2059 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); }
     break;
 
   case 205:
 
 /* Line 1455 of yacc.c  */
-#line 2045 "compilers/imcc/imcc.y"
+#line 2061 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); }
     break;
 
   case 206:
 
 /* Line 1455 of yacc.c  */
-#line 2047 "compilers/imcc/imcc.y"
+#line 2063 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
   case 207:
 
 /* Line 1455 of yacc.c  */
-#line 2052 "compilers/imcc/imcc.y"
+#line 2068 "compilers/imcc/imcc.y"
     { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); }
     break;
 
   case 208:
 
 /* Line 1455 of yacc.c  */
-#line 2055 "compilers/imcc/imcc.y"
+#line 2071 "compilers/imcc/imcc.y"
     {
-           add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
+           add_pcc_result(interp, (yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
            (yyval.i) = 0;
          }
@@ -4864,7 +4880,7 @@
   case 209:
 
 /* Line 1455 of yacc.c  */
-#line 2061 "compilers/imcc/imcc.y"
+#line 2077 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
          }
@@ -4873,7 +4889,7 @@
   case 210:
 
 /* Line 1455 of yacc.c  */
-#line 2065 "compilers/imcc/imcc.y"
+#line 2081 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4883,7 +4899,7 @@
   case 214:
 
 /* Line 1455 of yacc.c  */
-#line 2073 "compilers/imcc/imcc.y"
+#line 2089 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
          }
@@ -4892,189 +4908,189 @@
   case 215:
 
 /* Line 1455 of yacc.c  */
-#line 2080 "compilers/imcc/imcc.y"
+#line 2096 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
   case 216:
 
 /* Line 1455 of yacc.c  */
-#line 2081 "compilers/imcc/imcc.y"
+#line 2097 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
   case 217:
 
 /* Line 1455 of yacc.c  */
-#line 2082 "compilers/imcc/imcc.y"
+#line 2098 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
   case 218:
 
 /* Line 1455 of yacc.c  */
-#line 2086 "compilers/imcc/imcc.y"
+#line 2102 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 219:
 
 /* Line 1455 of yacc.c  */
-#line 2087 "compilers/imcc/imcc.y"
+#line 2103 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 220:
 
 /* Line 1455 of yacc.c  */
-#line 2088 "compilers/imcc/imcc.y"
+#line 2104 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 221:
 
 /* Line 1455 of yacc.c  */
-#line 2089 "compilers/imcc/imcc.y"
+#line 2105 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 222:
 
 /* Line 1455 of yacc.c  */
-#line 2090 "compilers/imcc/imcc.y"
+#line 2106 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 223:
 
 /* Line 1455 of yacc.c  */
-#line 2091 "compilers/imcc/imcc.y"
+#line 2107 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 224:
 
 /* Line 1455 of yacc.c  */
-#line 2092 "compilers/imcc/imcc.y"
+#line 2108 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
   case 225:
 
 /* Line 1455 of yacc.c  */
-#line 2093 "compilers/imcc/imcc.y"
+#line 2109 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 226:
 
 /* Line 1455 of yacc.c  */
-#line 2094 "compilers/imcc/imcc.y"
+#line 2110 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
   case 227:
 
 /* Line 1455 of yacc.c  */
-#line 2095 "compilers/imcc/imcc.y"
+#line 2111 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
   case 228:
 
 /* Line 1455 of yacc.c  */
-#line 2096 "compilers/imcc/imcc.y"
+#line 2112 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
   case 229:
 
 /* Line 1455 of yacc.c  */
-#line 2097 "compilers/imcc/imcc.y"
+#line 2113 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
   case 230:
 
 /* Line 1455 of yacc.c  */
-#line 2098 "compilers/imcc/imcc.y"
+#line 2114 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
   case 231:
 
 /* Line 1455 of yacc.c  */
-#line 2099 "compilers/imcc/imcc.y"
+#line 2115 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
   case 232:
 
 /* Line 1455 of yacc.c  */
-#line 2100 "compilers/imcc/imcc.y"
+#line 2116 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 233:
 
 /* Line 1455 of yacc.c  */
-#line 2101 "compilers/imcc/imcc.y"
+#line 2117 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 234:
 
 /* Line 1455 of yacc.c  */
-#line 2102 "compilers/imcc/imcc.y"
+#line 2118 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 235:
 
 /* Line 1455 of yacc.c  */
-#line 2103 "compilers/imcc/imcc.y"
+#line 2119 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
   case 236:
 
 /* Line 1455 of yacc.c  */
-#line 2104 "compilers/imcc/imcc.y"
+#line 2120 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
   case 237:
 
 /* Line 1455 of yacc.c  */
-#line 2105 "compilers/imcc/imcc.y"
+#line 2121 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
   case 238:
 
 /* Line 1455 of yacc.c  */
-#line 2106 "compilers/imcc/imcc.y"
+#line 2122 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 239:
 
 /* Line 1455 of yacc.c  */
-#line 2107 "compilers/imcc/imcc.y"
+#line 2123 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 240:
 
 /* Line 1455 of yacc.c  */
-#line 2108 "compilers/imcc/imcc.y"
+#line 2124 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 241:
 
 /* Line 1455 of yacc.c  */
-#line 2114 "compilers/imcc/imcc.y"
+#line 2130 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
@@ -5085,112 +5101,112 @@
   case 242:
 
 /* Line 1455 of yacc.c  */
-#line 2119 "compilers/imcc/imcc.y"
+#line 2135 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
   case 243:
 
 /* Line 1455 of yacc.c  */
-#line 2126 "compilers/imcc/imcc.y"
+#line 2142 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); }
     break;
 
   case 244:
 
 /* Line 1455 of yacc.c  */
-#line 2130 "compilers/imcc/imcc.y"
+#line 2146 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 245:
 
 /* Line 1455 of yacc.c  */
-#line 2131 "compilers/imcc/imcc.y"
+#line 2147 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 246:
 
 /* Line 1455 of yacc.c  */
-#line 2132 "compilers/imcc/imcc.y"
+#line 2148 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 247:
 
 /* Line 1455 of yacc.c  */
-#line 2133 "compilers/imcc/imcc.y"
+#line 2149 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 248:
 
 /* Line 1455 of yacc.c  */
-#line 2134 "compilers/imcc/imcc.y"
+#line 2150 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 249:
 
 /* Line 1455 of yacc.c  */
-#line 2135 "compilers/imcc/imcc.y"
+#line 2151 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 250:
 
 /* Line 1455 of yacc.c  */
-#line 2136 "compilers/imcc/imcc.y"
+#line 2152 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 251:
 
 /* Line 1455 of yacc.c  */
-#line 2137 "compilers/imcc/imcc.y"
+#line 2153 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 252:
 
 /* Line 1455 of yacc.c  */
-#line 2138 "compilers/imcc/imcc.y"
+#line 2154 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 253:
 
 /* Line 1455 of yacc.c  */
-#line 2139 "compilers/imcc/imcc.y"
+#line 2155 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 254:
 
 /* Line 1455 of yacc.c  */
-#line 2140 "compilers/imcc/imcc.y"
+#line 2156 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 255:
 
 /* Line 1455 of yacc.c  */
-#line 2141 "compilers/imcc/imcc.y"
+#line 2157 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 256:
 
 /* Line 1455 of yacc.c  */
-#line 2142 "compilers/imcc/imcc.y"
+#line 2158 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 257:
 
 /* Line 1455 of yacc.c  */
-#line 2148 "compilers/imcc/imcc.y"
+#line 2164 "compilers/imcc/imcc.y"
     {
         (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
                       IMCC_INFO(interp) -> regs,
@@ -5203,28 +5219,28 @@
   case 258:
 
 /* Line 1455 of yacc.c  */
-#line 2158 "compilers/imcc/imcc.y"
+#line 2174 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));       mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 259:
 
 /* Line 1455 of yacc.c  */
-#line 2159 "compilers/imcc/imcc.y"
+#line 2175 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 260:
 
 /* Line 1455 of yacc.c  */
-#line 2160 "compilers/imcc/imcc.y"
+#line 2176 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));     mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 261:
 
 /* Line 1455 of yacc.c  */
-#line 2162 "compilers/imcc/imcc.y"
+#line 2178 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -5235,7 +5251,7 @@
   case 262:
 
 /* Line 1455 of yacc.c  */
-#line 2168 "compilers/imcc/imcc.y"
+#line 2184 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
             const char * const name = (yyvsp[(3) - (3)].sr)->name;
@@ -5254,7 +5270,7 @@
   case 263:
 
 /* Line 1455 of yacc.c  */
-#line 2182 "compilers/imcc/imcc.y"
+#line 2198 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'U');
@@ -5265,7 +5281,7 @@
   case 264:
 
 /* Line 1455 of yacc.c  */
-#line 2188 "compilers/imcc/imcc.y"
+#line 2204 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -5276,14 +5292,14 @@
   case 265:
 
 /* Line 1455 of yacc.c  */
-#line 2193 "compilers/imcc/imcc.y"
+#line 2209 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
   case 266:
 
 /* Line 1455 of yacc.c  */
-#line 2199 "compilers/imcc/imcc.y"
+#line 2215 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
@@ -5293,54 +5309,54 @@
   case 267:
 
 /* Line 1455 of yacc.c  */
-#line 2203 "compilers/imcc/imcc.y"
+#line 2219 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
   case 268:
 
 /* Line 1455 of yacc.c  */
-#line 2207 "compilers/imcc/imcc.y"
+#line 2223 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 269:
 
 /* Line 1455 of yacc.c  */
-#line 2209 "compilers/imcc/imcc.y"
+#line 2225 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_arg(IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, (yyvsp[(3) - (3)].sr));
+               add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, (yyvsp[(3) - (3)].sr));
                IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
+               add_pcc_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 270:
 
 /* Line 1455 of yacc.c  */
-#line 2219 "compilers/imcc/imcc.y"
+#line 2235 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_arg(IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, (yyvsp[(1) - (1)].sr));
+               add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, (yyvsp[(1) - (1)].sr));
                IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
+               add_pcc_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
          }
     break;
 
   case 271:
 
 /* Line 1455 of yacc.c  */
-#line 2229 "compilers/imcc/imcc.y"
+#line 2245 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
-           add_pcc_named_arg(IMCC_INFO(interp)->cur_call,
+           add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call,
                 mk_const(interp, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr));
            mem_sys_free((yyvsp[(3) - (5)].s));
          }
@@ -5349,20 +5365,20 @@
   case 272:
 
 /* Line 1455 of yacc.c  */
-#line 2236 "compilers/imcc/imcc.y"
+#line 2252 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
-           add_pcc_named_arg_var(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
+           add_pcc_named_arg_var(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 273:
 
 /* Line 1455 of yacc.c  */
-#line 2241 "compilers/imcc/imcc.y"
+#line 2257 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
-           add_pcc_named_arg(IMCC_INFO(interp)->cur_call,
+           add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call,
                 mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr));
            mem_sys_free((yyvsp[(1) - (3)].s));
          }
@@ -5371,88 +5387,88 @@
   case 274:
 
 /* Line 1455 of yacc.c  */
-#line 2250 "compilers/imcc/imcc.y"
+#line 2266 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 275:
 
 /* Line 1455 of yacc.c  */
-#line 2254 "compilers/imcc/imcc.y"
+#line 2270 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 276:
 
 /* Line 1455 of yacc.c  */
-#line 2255 "compilers/imcc/imcc.y"
+#line 2271 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 277:
 
 /* Line 1455 of yacc.c  */
-#line 2259 "compilers/imcc/imcc.y"
+#line 2275 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;     }
     break;
 
   case 278:
 
 /* Line 1455 of yacc.c  */
-#line 2260 "compilers/imcc/imcc.y"
+#line 2276 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED;    }
     break;
 
   case 279:
 
 /* Line 1455 of yacc.c  */
-#line 2261 "compilers/imcc/imcc.y"
+#line 2277 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_CALL_SIG; }
     break;
 
   case 280:
 
 /* Line 1455 of yacc.c  */
-#line 2264 "compilers/imcc/imcc.y"
+#line 2280 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 281:
 
 /* Line 1455 of yacc.c  */
-#line 2265 "compilers/imcc/imcc.y"
+#line 2281 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; }
     break;
 
   case 282:
 
 /* Line 1455 of yacc.c  */
-#line 2269 "compilers/imcc/imcc.y"
+#line 2285 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 283:
 
 /* Line 1455 of yacc.c  */
-#line 2274 "compilers/imcc/imcc.y"
+#line 2290 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_result(IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, (yyvsp[(3) - (3)].sr));
+               add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, (yyvsp[(3) - (3)].sr));
                IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
+               add_pcc_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 284:
 
 /* Line 1455 of yacc.c  */
-#line 2284 "compilers/imcc/imcc.y"
+#line 2300 "compilers/imcc/imcc.y"
     {
-            add_pcc_named_result(IMCC_INFO(interp)->cur_call,
-            mk_const(interp, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr));
+            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call,
+                    mk_const(interp, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr));
             mem_sys_free((yyvsp[(3) - (5)].s));
          }
     break;
@@ -5460,24 +5476,24 @@
   case 285:
 
 /* Line 1455 of yacc.c  */
-#line 2290 "compilers/imcc/imcc.y"
+#line 2306 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
-               add_pcc_named_result(IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, (yyvsp[(1) - (1)].sr));
+               add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, IMCC_INFO(interp)->adv_named_id, (yyvsp[(1) - (1)].sr));
                IMCC_INFO(interp)->adv_named_id = NULL;
            }
            else
-               add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
+               add_pcc_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
          }
     break;
 
   case 286:
 
 /* Line 1455 of yacc.c  */
-#line 2300 "compilers/imcc/imcc.y"
+#line 2316 "compilers/imcc/imcc.y"
     {
-           add_pcc_named_result(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr));
+           add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr));
            mem_sys_free((yyvsp[(1) - (3)].s));
          }
     break;
@@ -5485,28 +5501,28 @@
   case 287:
 
 /* Line 1455 of yacc.c  */
-#line 2304 "compilers/imcc/imcc.y"
+#line 2320 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 288:
 
 /* Line 1455 of yacc.c  */
-#line 2308 "compilers/imcc/imcc.y"
+#line 2324 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 289:
 
 /* Line 1455 of yacc.c  */
-#line 2309 "compilers/imcc/imcc.y"
+#line 2325 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 290:
 
 /* Line 1455 of yacc.c  */
-#line 2314 "compilers/imcc/imcc.y"
+#line 2330 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
          }
@@ -5515,7 +5531,7 @@
   case 291:
 
 /* Line 1455 of yacc.c  */
-#line 2318 "compilers/imcc/imcc.y"
+#line 2334 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
          }
@@ -5524,7 +5540,7 @@
   case 292:
 
 /* Line 1455 of yacc.c  */
-#line 2322 "compilers/imcc/imcc.y"
+#line 2338 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
          }
@@ -5533,7 +5549,7 @@
   case 293:
 
 /* Line 1455 of yacc.c  */
-#line 2329 "compilers/imcc/imcc.y"
+#line 2345 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
          }
@@ -5542,7 +5558,7 @@
   case 294:
 
 /* Line 1455 of yacc.c  */
-#line 2333 "compilers/imcc/imcc.y"
+#line 2349 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
          }
@@ -5551,7 +5567,7 @@
   case 295:
 
 /* Line 1455 of yacc.c  */
-#line 2337 "compilers/imcc/imcc.y"
+#line 2353 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
          }
@@ -5560,91 +5576,91 @@
   case 296:
 
 /* Line 1455 of yacc.c  */
-#line 2343 "compilers/imcc/imcc.y"
+#line 2359 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 297:
 
 /* Line 1455 of yacc.c  */
-#line 2344 "compilers/imcc/imcc.y"
+#line 2360 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 298:
 
 /* Line 1455 of yacc.c  */
-#line 2348 "compilers/imcc/imcc.y"
+#line 2364 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
   case 299:
 
 /* Line 1455 of yacc.c  */
-#line 2349 "compilers/imcc/imcc.y"
+#line 2365 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
   case 300:
 
 /* Line 1455 of yacc.c  */
-#line 2350 "compilers/imcc/imcc.y"
+#line 2366 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
   case 301:
 
 /* Line 1455 of yacc.c  */
-#line 2351 "compilers/imcc/imcc.y"
+#line 2367 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
   case 302:
 
 /* Line 1455 of yacc.c  */
-#line 2352 "compilers/imcc/imcc.y"
+#line 2368 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
   case 303:
 
 /* Line 1455 of yacc.c  */
-#line 2353 "compilers/imcc/imcc.y"
+#line 2369 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
   case 306:
 
 /* Line 1455 of yacc.c  */
-#line 2362 "compilers/imcc/imcc.y"
+#line 2378 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 307:
 
 /* Line 1455 of yacc.c  */
-#line 2363 "compilers/imcc/imcc.y"
+#line 2379 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 308:
 
 /* Line 1455 of yacc.c  */
-#line 2367 "compilers/imcc/imcc.y"
+#line 2383 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
   case 310:
 
 /* Line 1455 of yacc.c  */
-#line 2372 "compilers/imcc/imcc.y"
+#line 2388 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 311:
 
 /* Line 1455 of yacc.c  */
-#line 2374 "compilers/imcc/imcc.y"
+#line 2390 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
            IMCC_INFO(interp) -> keyvec |= KEY_BIT(IMCC_INFO(interp)->nargs);
@@ -5656,7 +5672,7 @@
   case 312:
 
 /* Line 1455 of yacc.c  */
-#line 2381 "compilers/imcc/imcc.y"
+#line 2397 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
@@ -5666,49 +5682,49 @@
   case 314:
 
 /* Line 1455 of yacc.c  */
-#line 2388 "compilers/imcc/imcc.y"
+#line 2404 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 315:
 
 /* Line 1455 of yacc.c  */
-#line 2389 "compilers/imcc/imcc.y"
+#line 2405 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 316:
 
 /* Line 1455 of yacc.c  */
-#line 2393 "compilers/imcc/imcc.y"
+#line 2409 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 317:
 
 /* Line 1455 of yacc.c  */
-#line 2394 "compilers/imcc/imcc.y"
+#line 2410 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 318:
 
 /* Line 1455 of yacc.c  */
-#line 2398 "compilers/imcc/imcc.y"
+#line 2414 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 319:
 
 /* Line 1455 of yacc.c  */
-#line 2399 "compilers/imcc/imcc.y"
+#line 2415 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 324:
 
 /* Line 1455 of yacc.c  */
-#line 2413 "compilers/imcc/imcc.y"
+#line 2429 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
          }
@@ -5717,7 +5733,7 @@
   case 325:
 
 /* Line 1455 of yacc.c  */
-#line 2417 "compilers/imcc/imcc.y"
+#line 2433 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5728,7 +5744,7 @@
   case 326:
 
 /* Line 1455 of yacc.c  */
-#line 2425 "compilers/imcc/imcc.y"
+#line 2441 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
          }
@@ -5737,7 +5753,7 @@
   case 327:
 
 /* Line 1455 of yacc.c  */
-#line 2429 "compilers/imcc/imcc.y"
+#line 2445 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5748,14 +5764,14 @@
   case 328:
 
 /* Line 1455 of yacc.c  */
-#line 2437 "compilers/imcc/imcc.y"
+#line 2453 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 329:
 
 /* Line 1455 of yacc.c  */
-#line 2439 "compilers/imcc/imcc.y"
+#line 2455 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
            (yyval.sr) = IMCC_INFO(interp)->keys[0];
@@ -5765,7 +5781,7 @@
   case 330:
 
 /* Line 1455 of yacc.c  */
-#line 2447 "compilers/imcc/imcc.y"
+#line 2463 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
          }
@@ -5774,70 +5790,70 @@
   case 331:
 
 /* Line 1455 of yacc.c  */
-#line 2453 "compilers/imcc/imcc.y"
+#line 2469 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
   case 332:
 
 /* Line 1455 of yacc.c  */
-#line 2454 "compilers/imcc/imcc.y"
+#line 2470 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
   case 333:
 
 /* Line 1455 of yacc.c  */
-#line 2455 "compilers/imcc/imcc.y"
+#line 2471 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
   case 334:
 
 /* Line 1455 of yacc.c  */
-#line 2456 "compilers/imcc/imcc.y"
+#line 2472 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
   case 335:
 
 /* Line 1455 of yacc.c  */
-#line 2457 "compilers/imcc/imcc.y"
+#line 2473 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 336:
 
 /* Line 1455 of yacc.c  */
-#line 2461 "compilers/imcc/imcc.y"
+#line 2477 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 337:
 
 /* Line 1455 of yacc.c  */
-#line 2462 "compilers/imcc/imcc.y"
+#line 2478 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 338:
 
 /* Line 1455 of yacc.c  */
-#line 2463 "compilers/imcc/imcc.y"
+#line 2479 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 339:
 
 /* Line 1455 of yacc.c  */
-#line 2464 "compilers/imcc/imcc.y"
+#line 2480 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
 
 
 /* Line 1455 of yacc.c  */
-#line 5830 "compilers/imcc/imcparser.c"
+#line 5846 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -6049,7 +6065,7 @@
 
 
 /* Line 1675 of yacc.c  */
-#line 2470 "compilers/imcc/imcc.y"
+#line 2486 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */

Modified: branches/ops_pct/compilers/imcc/imcparser.h
==============================================================================
--- branches/ops_pct/compilers/imcc/imcparser.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/imcparser.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -300,7 +300,7 @@
 {
 
 /* Line 1676 of yacc.c  */
-#line 1059 "compilers/imcc/imcc.y"
+#line 1075 "compilers/imcc/imcc.y"
 
     IdList * idlist;
     int t;

Modified: branches/ops_pct/compilers/imcc/instructions.c
==============================================================================
--- branches/ops_pct/compilers/imcc/instructions.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/instructions.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,6 +1,6 @@
 /*
  * $Id$
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
  */
 
 #include <stdlib.h>
@@ -50,7 +50,7 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(4);
 
-static int e_file_open(PARROT_INTERP, ARGIN(void *param))
+static int e_file_open(PARROT_INTERP, ARGIN(const char *param))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
@@ -149,7 +149,7 @@
     if (!w_special[0]) {
         size_t i;
         for (i = 0; i < N_ELEMENTS(writes); i++) {
-            const int n = interp->op_lib->op_code(writes[i], 1);
+            const int n = interp->op_lib->op_code(interp, writes[i], 1);
             PARROT_ASSERT(n);
             w_special[i] = n;
         }
@@ -650,9 +650,9 @@
 free_ins(ARGMOD(Instruction *ins))
 {
     ASSERT_ARGS(free_ins)
-    free(ins->format);
-    free(ins->opname);
-    free(ins);
+    mem_sys_free(ins->format);
+    mem_sys_free(ins->opname);
+    mem_sys_free(ins);
 }
 
 /*
@@ -785,7 +785,7 @@
 
 /*
 
-=item C<static int e_file_open(PARROT_INTERP, void *param)>
+=item C<static int e_file_open(PARROT_INTERP, const char *param)>
 
 Prints a message to STDOUT.
 
@@ -794,19 +794,19 @@
 */
 
 static int
-e_file_open(PARROT_INTERP, ARGIN(void *param))
+e_file_open(PARROT_INTERP, ARGIN(const char *param))
 {
     ASSERT_ARGS(e_file_open)
-    char * const file = (char *) param;
+    DECL_CONST_CAST;
 
-    if (!STREQ(file, "-")) {
-        FILE *newfile = freopen(file, "w", stdout);
+    if (!STREQ(param, "-")) {
+        FILE *newfile = freopen(param, "w", stdout);
         if (!newfile)
             Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_EXTERNAL_ERROR,
                 "Cannot reopen stdout: %s'\n", strerror(errno));
     }
 
-    output = file;
+    output = PARROT_const_cast(char *, param);
     Parrot_io_printf(interp, "# IMCC does produce b0rken PASM files\n");
     Parrot_io_printf(interp, "# see http://guest@rt.perl.org/rt3/Ticket/Display.html?id=32392\n");
     return 1;
@@ -862,7 +862,7 @@
 
 /*
 
-=item C<int emit_open(PARROT_INTERP, int type, void *param)>
+=item C<int emit_open(PARROT_INTERP, int type, const char *param)>
 
 Opens the emitter function C<open> of the given C<type>. Passes
 the C<param> to the open function.
@@ -873,7 +873,7 @@
 
 PARROT_EXPORT
 int
-emit_open(PARROT_INTERP, int type, ARGIN_NULLOK(void *param))
+emit_open(PARROT_INTERP, int type, ARGIN_NULLOK(const char *param))
 {
     ASSERT_ARGS(emit_open)
     IMCC_INFO(interp)->emitter       = type;

Modified: branches/ops_pct/compilers/imcc/instructions.h
==============================================================================
--- branches/ops_pct/compilers/imcc/instructions.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/instructions.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,6 +1,6 @@
 /*
  * $Id$
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
  */
 
 #ifndef PARROT_IMCC_INSTRUCTIONS_H_GUARD
@@ -79,7 +79,7 @@
 /* Globals */
 
 typedef struct _emittert {
-    int (*open)(PARROT_INTERP, void *param);
+    int (*open)(PARROT_INTERP, const char *param);
     int (*emit)(PARROT_INTERP, void *param, const IMC_Unit *, const Instruction *ins);
     int (*new_sub)(PARROT_INTERP, void *param, IMC_Unit *);
     int (*end_sub)(PARROT_INTERP, void *param, IMC_Unit *);
@@ -103,7 +103,7 @@
         __attribute__nonnull__(3);
 
 PARROT_EXPORT
-int emit_open(PARROT_INTERP, int type, ARGIN_NULLOK(void *param))
+int emit_open(PARROT_INTERP, int type, ARGIN_NULLOK(const char *param))
         __attribute__nonnull__(1);
 
 PARROT_WARN_UNUSED_RESULT

Modified: branches/ops_pct/compilers/imcc/main.c
==============================================================================
--- branches/ops_pct/compilers/imcc/main.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/main.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -67,8 +67,6 @@
 static void do_pre_process(PARROT_INTERP)
         __attribute__nonnull__(1);
 
-static void help(void);
-static void help_debug(void);
 static void imcc_get_optimization_description(
     const PARROT_INTERP,
     int opt_level,
@@ -93,13 +91,6 @@
 static int is_all_hex_digits(ARGIN(const char *s))
         __attribute__nonnull__(1);
 
-static void Parrot_version(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-static void usage(ARGMOD(FILE *fp))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*fp);
-
 #define ASSERT_ARGS_compile_to_bytecode __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(sourcefile))
@@ -112,8 +103,6 @@
     , PARROT_ASSERT_ARG(output_file))
 #define ASSERT_ARGS_do_pre_process __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_help __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_help_debug __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_imcc_get_optimization_description \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(opt_desc))
@@ -125,198 +114,16 @@
     , PARROT_ASSERT_ARG(output_file))
 #define ASSERT_ARGS_is_all_hex_digits __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(s))
-#define ASSERT_ARGS_Parrot_version __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_usage __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(fp))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
 
-/*
-
-=item C<static void usage(FILE *fp)>
-
-Outputs usage error message.
-
-=cut
-
-*/
-
-static void
-usage(ARGMOD(FILE *fp))
-{
-    ASSERT_ARGS(usage)
-    fprintf(fp,
-            "parrot -[acEGhprtvVwy.] [-d [FLAGS]] [-D [FLAGS]]"
-            "[-O [level]] [-R runcore] [-o FILE] <file>\n");
-}
-
-/*
-
-=item C<static void help_debug(void)>
-
-Print out list of debugging flag values.
-
-=cut
-
-*/
-
-static void
-help_debug(void)
-{
-    ASSERT_ARGS(help_debug)
-    /* split printf for C89 compliance on string length */
-    printf(
-    "--imcc-debug -d [Flags] ...\n"
-    "    0002    lexer\n"
-    "    0004    parser\n"
-    "    0008    imc\n"
-    "    0010    CFG\n"
-    "    0020    optimization 1\n"
-    "    0040    optimization 2\n"
-    "    0100    AST\n"
-    "    1000    PBC\n"
-    "    2000    PBC constants\n"
-    "    4000    PBC fixups\n"
-    "\n");
-    printf(
-    "--parrot-debug -D [Flags] ...\n"
-    "    0001    memory statistics\n"
-    "    0002    print backtrace on exception\n"
-    "    0004    JIT debugging\n"
-    "    0008    interpreter startup\n"
-    "    0010    thread debugging\n"
-    "    0020    eval/compile\n"
-    "    0040    fill I, N registers with garbage\n"
-    "    0080    show when a context is destroyed\n"
-    "\n"
-    "--trace -t [Flags] ...\n"
-    "    0001    opcodes\n"
-    "    0002    find_method\n"
-    "    0004    function calls\n");
-}
-
-/*
-
-=item C<static void help(void)>
-
-Print out "help" list of options.
-
-=cut
-
-*/
-
-static void
-help(void)
-{
-    ASSERT_ARGS(help)
-    /* split printf for C89 compliance on string length */
-    printf(
-    "parrot [Options] <file>\n"
-    "  Options:\n"
-    "    -h --help\n"
-    "    -V --version\n"
-    "    -I --include add path to include search\n"
-    "    -L --library add path to library search\n"
-    "    -X --dynext add path to dynamic extension search\n"
-    "   <Run core options>\n"
-    "    -R --runcore slow|bounds|fast|cgoto|cgp\n"
-    "    -R --runcore switch|trace|profiling|gcdebug\n"
-    "    -t --trace [flags]\n"
-    "   <VM options>\n"
-    "    -D --parrot-debug[=HEXFLAGS]\n"
-    "       --help-debug\n");
-    printf(
-    "    -w --warnings\n"
-    "    -G --no-gc\n"
-    "       --gc-debug\n"
-    "       --leak-test|--destroy-at-end\n"
-    "    -. --wait    Read a keystroke before starting\n"
-    "       --runtime-prefix\n"
-    "   <Compiler options>\n"
-    "    -d --imcc-debug[=HEXFLAGS]\n"
-    "    -v --verbose\n"
-    "    -E --pre-process-only\n"
-    "    -o --output=FILE\n"
-    "       --output-pbc\n"
-    "    -O --optimize[=LEVEL]\n"
-    "    -a --pasm\n"
-    "    -c --pbc\n"
-    "    -r --run-pbc\n"
-    "    -y --yydebug\n"
-    "   <Language options>\n"
-    "see docs/running.pod for more\n");
-}
-
-
-/*
-
-=item C<static void Parrot_version(PARROT_INTERP)>
-
-Print out parrot version number.
-
-=cut
-
-*/
-
-static void
-Parrot_version(PARROT_INTERP)
-{
-    ASSERT_ARGS(Parrot_version)
-    printf("This is Parrot version " PARROT_VERSION);
-    printf(" built for " PARROT_ARCHNAME ".\n");
-    printf("Copyright (C) 2001-2010, Parrot Foundation.\n\
-\n\
-This code is distributed under the terms of the Artistic License 2.0.\
-\n\
-For more details, see the full text of the license in the LICENSE file\
-\n\
-included in the Parrot source tree.\n\n");
-
-    Parrot_exit(interp, 0);
-}
-
-#define SET_FLAG(flag)   Parrot_set_flag(interp, (flag))
-#define SET_DEBUG(flag)  Parrot_set_debug(interp, (flag))
-#define SET_TRACE(flag)  Parrot_set_trace(interp, (flag))
-
 #define OPT_GC_DEBUG       128
 #define OPT_DESTROY_FLAG   129
 #define OPT_HELP_DEBUG     130
 #define OPT_PBC_OUTPUT     131
 #define OPT_RUNTIME_PREFIX 132
 
-static struct longopt_opt_decl options[] = {
-    { '.', '.', (OPTION_flags)0, { "--wait" } },
-    { 'D', 'D', OPTION_optional_FLAG, { "--parrot-debug" } },
-    { 'E', 'E', (OPTION_flags)0, { "--pre-process-only" } },
-    { 'G', 'G', (OPTION_flags)0, { "--no-gc" } },
-    { 'I', 'I', OPTION_required_FLAG, { "--include" } },
-    { 'L', 'L', OPTION_required_FLAG, { "--library" } },
-    { 'O', 'O', OPTION_optional_FLAG, { "--optimize" } },
-    { 'R', 'R', OPTION_required_FLAG, { "--runcore" } },
-    { 'V', 'V', (OPTION_flags)0, { "--version" } },
-    { 'X', 'X', OPTION_required_FLAG, { "--dynext" } },
-    { '\0', OPT_DESTROY_FLAG, (OPTION_flags)0,
-                                 { "--leak-test", "--destroy-at-end" } },
-    { '\0', OPT_GC_DEBUG, (OPTION_flags)0, { "--gc-debug" } },
-    { 'a', 'a', (OPTION_flags)0, { "--pasm" } },
-    { 'c', 'c', (OPTION_flags)0, { "--pbc" } },
-    { 'd', 'd', OPTION_optional_FLAG, { "--imcc-debug" } },
-    { '\0', OPT_HELP_DEBUG, (OPTION_flags)0, { "--help-debug" } },
-    { 'h', 'h', (OPTION_flags)0, { "--help" } },
-    { 'o', 'o', OPTION_required_FLAG, { "--output" } },
-    { '\0', OPT_PBC_OUTPUT, (OPTION_flags)0, { "--output-pbc" } },
-    { 'r', 'r', (OPTION_flags)0, { "--run-pbc" } },
-    { '\0', OPT_RUNTIME_PREFIX, (OPTION_flags)0, { "--runtime-prefix" } },
-    { 't', 't', OPTION_optional_FLAG, { "--trace" } },
-    { 'v', 'v', (OPTION_flags)0, { "--verbose" } },
-    { 'w', 'w', (OPTION_flags)0, { "--warnings" } },
-    { 'y', 'y', (OPTION_flags)0, { "--yydebug" } },
-    { 0, 0, (OPTION_flags)0, { NULL } }
-};
-
 /*
 
 =item C<static int is_all_hex_digits(const char *s)>
@@ -342,223 +149,122 @@
 
 /*
 
-=item C<const char * parseflags(PARROT_INTERP, int *argc, char **argv[])>
+=item C<void imcc_start_handling_flags(PARROT_INTERP)>
 
-Parse Parrot's command line for options and set appropriate flags.
+Initialize handling of IMCC related command line flags.
 
 =cut
 
 */
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-const char *
-parseflags(PARROT_INTERP, int *argc, char **argv[])
+void
+imcc_start_handling_flags(PARROT_INTERP)
 {
-    struct longopt_opt_info opt  = LONGOPT_OPT_INFO_INIT;
-    INTVAL                  core = 0;
-    int                     status;
-
-    if (*argc == 1) {
-        usage(stderr);
-        exit(EXIT_SUCCESS);
-    }
-
     SET_STATE_RUN_PBC(interp);
+}
 
-    while ((status = longopt_get(interp, *argc, (const char **)*argv, options,
-            &opt)) > 0) {
-        switch (opt.opt_id) {
-          case 'R':
-            if (STREQ(opt.opt_arg, "slow") || STREQ(opt.opt_arg, "bounds"))
-                core = PARROT_SLOW_CORE;
-            else if (STREQ(opt.opt_arg, "fast") || STREQ(opt.opt_arg, "function"))
-                core = PARROT_FAST_CORE;
-            else if (STREQ(opt.opt_arg, "switch"))
-                core = PARROT_SWITCH_CORE;
-            else if (STREQ(opt.opt_arg, "cgp"))
-                core = PARROT_CGP_CORE;
-            else if (STREQ(opt.opt_arg, "cgoto"))
-                core = PARROT_CGOTO_CORE;
-            else if (STREQ(opt.opt_arg, "jit"))
-                core = PARROT_FAST_CORE;
-            else if (STREQ(opt.opt_arg, "cgp-jit"))
-                core = PARROT_CGP_CORE;
-            else if (STREQ(opt.opt_arg, "switch-jit"))
-                core = PARROT_SWITCH_CORE;
-            else if (STREQ(opt.opt_arg, "exec"))
-                core = PARROT_EXEC_CORE;
-            else if (STREQ(opt.opt_arg, "trace"))
-                core = PARROT_SLOW_CORE;
-            else if (STREQ(opt.opt_arg, "profiling"))
-                core = PARROT_PROFILING_CORE;
-            else if (STREQ(opt.opt_arg, "gcdebug"))
-                core = PARROT_GC_DEBUG_CORE;
-            else
-                Parrot_ex_throw_from_c_args(interp, NULL, 1,
-                        "main: Unrecognized runcore '%s' specified."
-                        "\n\nhelp: parrot -h\n", opt.opt_arg);
-            break;
-          case 't':
-            if (opt.opt_arg && is_all_hex_digits(opt.opt_arg))
-                SET_TRACE(strtoul(opt.opt_arg, NULL, 16));
-            else
-                SET_TRACE(PARROT_TRACE_OPS_FLAG);
-            break;
-          case 'd':
-            if (opt.opt_arg && is_all_hex_digits(opt.opt_arg)) {
-                IMCC_INFO(interp)->debug = strtoul(opt.opt_arg, NULL, 16);
-            }
-            else {
-                IMCC_INFO(interp)->debug++;
-            }
-            break;
-          case 'D':
-            if (opt.opt_arg && is_all_hex_digits(opt.opt_arg)) {
-                SET_DEBUG(strtoul(opt.opt_arg, NULL, 16));
-            }
-            else
-                SET_DEBUG(PARROT_MEM_STAT_DEBUG_FLAG);
-            break;
-          case 'w':
-            Parrot_setwarnings(interp, PARROT_WARNINGS_ALL_FLAG);
-            IMCC_INFO(interp)->imcc_warn = 1;
-            break;
-          case 'G':
-            IMCC_INFO(interp)->gc_off = 1;
-            break;
-          case '.':  /* Give Windows Parrot hackers an opportunity to
-                      * attach a debuggger. */
-            fgetc(stdin);
-            break;
-          case 'a':
-            SET_STATE_PASM_FILE(interp);
-            break;
-          case 'h':
-            help();
-            exit(EX_USAGE);
-            break;
-          case OPT_HELP_DEBUG:
-            help_debug();
-            exit(EX_USAGE);
-            break;
-          case OPT_RUNTIME_PREFIX:
-            Parrot_io_printf(interp, "%Ss\n",
-                    Parrot_get_runtime_path(interp));
-            exit(EXIT_SUCCESS);
-          case 'V':
-            Parrot_version(interp);
-            break;
-          case 'r':
-            if (STATE_RUN_PBC(interp))
-                SET_STATE_RUN_FROM_FILE(interp);
-            SET_STATE_RUN_PBC(interp);
-            break;
-          case 'c':
-            SET_STATE_LOAD_PBC(interp);
-            break;
-          case 'v':
-            IMCC_INFO(interp)->verbose++;
-            break;
-          case 'y':
-            yydebug = 1;
-            break;
-          case 'E':
-            SET_STATE_PRE_PROCESS(interp);
-            break;
-          case 'o':
-            UNSET_STATE_RUN_PBC(interp);
-            interp->output_file = opt.opt_arg;
-            break;
+/*
 
-          case OPT_PBC_OUTPUT:
-            UNSET_STATE_RUN_PBC(interp);
-            SET_STATE_WRITE_PBC(interp);
-            if (!interp->output_file)
-                interp->output_file = "-";
-            break;
+=item C<int imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt,
+Parrot_Run_core_t *core)>
 
-          case 'O':
-            if (!opt.opt_arg) {
-                IMCC_INFO(interp)->optimizer_level |= OPT_PRE;
-                break;
-            }
-            if (strchr(opt.opt_arg, 'p'))
-                IMCC_INFO(interp)->optimizer_level |= OPT_PASM;
-            if (strchr(opt.opt_arg, 'c'))
-                IMCC_INFO(interp)->optimizer_level |= OPT_SUB;
-
-            IMCC_INFO(interp)->allocator = IMCC_GRAPH_ALLOCATOR;
-            /* currently not ok due to different register allocation */
-            if (strchr(opt.opt_arg, '1')) {
-                IMCC_INFO(interp)->optimizer_level |= OPT_PRE;
-            }
-            if (strchr(opt.opt_arg, '2')) {
-                IMCC_INFO(interp)->optimizer_level |= (OPT_PRE | OPT_CFG);
-            }
-            if (strchr(opt.opt_arg, 't')) {
-#ifdef HAVE_COMPUTED_GOTO
-                core = PARROT_CGP_CORE;
-#else
-                core = PARROT_SWITCH_CORE;
-#endif
-            }
-            break;
+Handle Parrot's command line for IMCC related option and set appropriate flags.
 
-          case OPT_GC_DEBUG:
-#if DISABLE_GC_DEBUG
-            Parrot_warn(interp, PARROT_WARNINGS_ALL_FLAG,
-                        "PARROT_GC_DEBUG is set but the binary was "
-                        "compiled with DISABLE_GC_DEBUG.");
-#endif
-            SET_FLAG(PARROT_GC_DEBUG_FLAG);
-            break;
-          case OPT_DESTROY_FLAG:
-            SET_FLAG(PARROT_DESTROY_FLAG);
-            break;
-          case 'I':
-            Parrot_lib_add_path_from_cstring(interp, opt.opt_arg,
-                    PARROT_LIB_PATH_INCLUDE);
-            break;
-          case 'L':
-            Parrot_lib_add_path_from_cstring(interp, opt.opt_arg,
-                    PARROT_LIB_PATH_LIBRARY);
-            break;
-          case 'X':
-            Parrot_lib_add_path_from_cstring(interp, opt.opt_arg,
-                    PARROT_LIB_PATH_DYNEXT);
-            break;
-          default:
-            Parrot_ex_throw_from_c_args(interp, NULL, 1,
-                    "main: Invalid flag '%s' used.\n\nhelp: parrot -h\n",
-                    (*argv)[0]);
-        }
-    }
+Return 1 if flag handled, 0 if not.
 
-    if (status == -1) {
-        fprintf(stderr, "%s\n", opt.opt_error);
-        usage(stderr);
-        exit(EX_USAGE);
-    }
+=cut
 
-    /* reached the end of the option list and consumed all of argv */
-    if (*argc == opt.opt_index) {
-        if (interp->output_file) {
-            fprintf(stderr, "Missing program name or argument for -o\n");
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+int
+imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt,
+    Parrot_Run_core_t *core)
+{
+    PARROT_ASSERT(opt);
+    PARROT_ASSERT(core);
+
+    switch (opt->opt_id) {
+      case 'd':
+        if (opt->opt_arg && is_all_hex_digits(opt->opt_arg)) {
+            IMCC_INFO(interp)->debug = strtoul(opt->opt_arg, NULL, 16);
         }
         else {
-            /* We are not looking at an option, so it must be a program name */
-            fprintf(stderr, "Missing program name\n");
+            IMCC_INFO(interp)->debug++;
         }
-        usage(stderr);
-        exit(EX_USAGE);
-    }
+        break;
+      case 'w':
+        /* FIXME It's not best way to set warnings... */
+        Parrot_setwarnings(interp, PARROT_WARNINGS_ALL_FLAG);
+        IMCC_INFO(interp)->imcc_warn = 1;
+        break;
+      case 'G':
+        IMCC_INFO(interp)->gc_off = 1;
+        break;
+      case 'a':
+        SET_STATE_PASM_FILE(interp);
+        break;
+      case 'r':
+        if (STATE_RUN_PBC(interp))
+            SET_STATE_RUN_FROM_FILE(interp);
+        SET_STATE_RUN_PBC(interp);
+        break;
+      case 'c':
+        SET_STATE_LOAD_PBC(interp);
+        break;
+      case 'v':
+        IMCC_INFO(interp)->verbose++;
+        break;
+      case 'y':
+        yydebug = 1;
+        break;
+      case 'E':
+        SET_STATE_PRE_PROCESS(interp);
+        break;
+      case 'o':
+        UNSET_STATE_RUN_PBC(interp);
+        interp->output_file = opt->opt_arg;
+        break;
+
+      case OPT_PBC_OUTPUT:
+        UNSET_STATE_RUN_PBC(interp);
+        SET_STATE_WRITE_PBC(interp);
+        if (!interp->output_file)
+            interp->output_file = "-";
+        break;
+
+      case 'O':
+        if (!opt->opt_arg) {
+            IMCC_INFO(interp)->optimizer_level |= OPT_PRE;
+            break;
+        }
+        if (strchr(opt->opt_arg, 'p'))
+            IMCC_INFO(interp)->optimizer_level |= OPT_PASM;
+        if (strchr(opt->opt_arg, 'c'))
+            IMCC_INFO(interp)->optimizer_level |= OPT_SUB;
+
+        IMCC_INFO(interp)->allocator = IMCC_GRAPH_ALLOCATOR;
+        /* currently not ok due to different register allocation */
+        if (strchr(opt->opt_arg, '1')) {
+            IMCC_INFO(interp)->optimizer_level |= OPT_PRE;
+        }
+        if (strchr(opt->opt_arg, '2')) {
+            IMCC_INFO(interp)->optimizer_level |= (OPT_PRE | OPT_CFG);
+        }
+        if (strchr(opt->opt_arg, 't')) {
+#ifdef HAVE_COMPUTED_GOTO
+            *core = PARROT_CGP_CORE;
+#else
+            *core = PARROT_SWITCH_CORE;
+#endif
+        }
+        break;
 
-    *argc -= opt.opt_index;
-    *argv += opt.opt_index;
+      default:
+        return 0;
+    }
 
-    Parrot_set_run_core(interp, (Parrot_Run_core_t) core);
-    return (*argv)[0];
+    return 1;
 }
 
 /*
@@ -828,7 +534,7 @@
             "Couldn't write %s\n", output_file);
     fclose(fp);
     IMCC_info(interp, 1, "%s written.\n", output_file);
-    free(packed);
+    mem_sys_free(packed);
 }
 
 /*
@@ -940,7 +646,7 @@
     IMCC_push_parser_state(interp);
     IMCC_INFO(interp)->state->file = mem_sys_strdup(sourcefile);
 
-    emit_open(interp, per_pbc, per_pbc ? NULL : (void*)output_file);
+    emit_open(interp, per_pbc, per_pbc ? NULL : output_file);
 
     IMCC_info(interp, 1, "Starting parse...\n");
 

Modified: branches/ops_pct/compilers/imcc/optimizer.c
==============================================================================
--- branches/ops_pct/compilers/imcc/optimizer.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/optimizer.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -366,7 +366,7 @@
                               last->symregs, args, 0, 0);
                     last->opnum = tmp->opnum;
                     last->opsize = tmp->opsize;
-                    free(last->opname);
+                    mem_sys_free(last->opname);
                     last->opname = mem_sys_strdup(tmp->opname);
                     free_ins(tmp);
 
@@ -802,7 +802,7 @@
     int i;
     op_info_t *op_info;
 
-    opnum = interp->op_lib->op_code(op, 1);
+    opnum = interp->op_lib->op_code(interp, op, 1);
     if (opnum < 0)
         IMCC_fatal(interp, 1, "eval_ins: op '%s' not found\n", op);
     op_info = interp->op_info_table + opnum;
@@ -1293,7 +1293,7 @@
             changed = 1;
         }
 
-        free(label);
+        mem_sys_free(label);
     }
 
     return changed;

Modified: branches/ops_pct/compilers/imcc/parser_util.c
==============================================================================
--- branches/ops_pct/compilers/imcc/parser_util.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/parser_util.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -154,7 +154,7 @@
     SymReg *regs[3];
     SymReg *pmc;
     int nargs;
-    const int pmc_num = pmc_type(interp,
+    const int pmc_num = Parrot_pmc_get_type_str(interp,
             Parrot_str_new(interp, *type == '.' ? type + 1 : type, 0));
 
     snprintf(fmt, sizeof (fmt), "%d", pmc_num);
@@ -285,7 +285,7 @@
     ASSERT_ARGS(check_op)
     op_fullname(fullname, name, r, narg, keyvec);
 
-    return interp->op_lib->op_code(fullname, 1);
+    return interp->op_lib->op_code(interp, fullname, 1);
 }
 
 /*
@@ -303,8 +303,8 @@
 is_op(PARROT_INTERP, ARGIN(const char *name))
 {
     ASSERT_ARGS(is_op)
-    return interp->op_lib->op_code(name, 0) >= 0
-        || interp->op_lib->op_code(name, 1) >= 0;
+    return interp->op_lib->op_code(interp, name, 0) >= 0
+        || interp->op_lib->op_code(interp, name, 1) >= 0;
 }
 
 /*
@@ -341,7 +341,7 @@
     r[0]->pmc_type = enum_class_FixedIntegerArray;
 
     op_fullname(fullname, name, r, 1, 0);
-    op = interp->op_lib->op_code(fullname, 1);
+    op = interp->op_lib->op_code(interp, fullname, 1);
 
     PARROT_ASSERT(op >= 0);
 
@@ -404,11 +404,11 @@
         return var_arg_ins(interp, unit, name, r, n, emit);
 
     op_fullname(fullname, name, r, n, keyvec);
-    op = interp->op_lib->op_code(fullname, 1);
+    op = interp->op_lib->op_code(interp, fullname, 1);
 
     /* maybe we have a fullname */
     if (op < 0)
-        op = interp->op_lib->op_code(name, 1);
+        op = interp->op_lib->op_code(interp, name, 1);
 
     /* still wrong, try reverse compare */
     if (op < 0) {
@@ -416,7 +416,7 @@
         if (n_name) {
             name = n_name;
             op_fullname(fullname, name, r, n, keyvec);
-            op   = interp->op_lib->op_code(fullname, 1);
+            op   = interp->op_lib->op_code(interp, fullname, 1);
         }
     }
 
@@ -548,7 +548,7 @@
         }
     }
 
-    if (op_info->jump && op_info->jump != PARROT_JUMP_ENEXT) {
+    if (op_info->jump) {
         ins->type |= ITBRANCH;
         /* TODO use opnum constants */
         if (STREQ(name, "branch")
@@ -638,7 +638,7 @@
 
     if (IMCC_INFO(interp)->last_unit) {
         /* a reentrant compile */
-        imc_info          = mem_allocate_zeroed_typed(imc_info_t);
+        imc_info          = mem_gc_allocate_zeroed_typed(interp, imc_info_t);
         imc_info->ghash   = IMCC_INFO(interp)->ghash;
         imc_info->prev    = IMCC_INFO(interp);
         IMCC_INFO(interp) = imc_info;
@@ -703,7 +703,7 @@
          *
          * TODO if a sub was denoted :main return that instead
          */
-        sub                  = pmc_new(interp, enum_class_Eval);
+        sub                  = Parrot_pmc_new(interp, enum_class_Eval);
         PMC_get_sub(interp, sub, sub_data);
         sub_data->seg        = new_cs;
         sub_data->start_offs = 0;
@@ -868,16 +868,7 @@
     STRING *error_message;
     PMC *sub;
 
-    /* We need to clear the current_results from the current context. This is
-     * in order to prevent any RetContinuations that get promoted to full
-     * Continuations (this happens when something is the target of a :outer)
-     * trying to return values using them when invoked. (See TT #500 for the
-     * report of the bug this fixes). */
-    opcode_t *save_results = Parrot_pcc_get_results(interp, CURRENT_CONTEXT(interp));
-    Parrot_pcc_set_results(interp, CURRENT_CONTEXT(interp), NULL);
     sub = imcc_compile(interp, s, 0, &error_message);
-    Parrot_pcc_set_results(interp, CURRENT_CONTEXT(interp), save_results);
-
     if (sub)
         return sub;
 
@@ -916,7 +907,7 @@
 
     if (IMCC_INFO(interp)->last_unit) {
         /* a reentrant compile */
-        imc_info          = mem_allocate_zeroed_typed(imc_info_t);
+        imc_info          = mem_gc_allocate_zeroed_typed(interp, imc_info_t);
         imc_info->prev    = IMCC_INFO(interp);
         imc_info->ghash   = IMCC_INFO(interp)->ghash;
         IMCC_INFO(interp) = imc_info;
@@ -1202,7 +1193,7 @@
 
     if (changed) {
         op_fullname(fullname, name, r, n, keyvec);
-        return interp->op_lib->op_code(fullname, 1);
+        return interp->op_lib->op_code(interp, fullname, 1);
     }
 
     return -1;
@@ -1290,9 +1281,8 @@
 imcc_init(PARROT_INTERP)
 {
     ASSERT_ARGS(imcc_init)
-    PARROT_ASSERT(IMCC_INFO(interp) == NULL);
+    PARROT_ASSERT(IMCC_INFO(interp) != NULL);
 
-    IMCC_INFO(interp) = mem_allocate_zeroed_typed(imc_info_t);
     /* register PASM and PIR compilers to parrot core */
     register_compilers(interp);
 }

Modified: branches/ops_pct/compilers/imcc/pbc.c
==============================================================================
--- branches/ops_pct/compilers/imcc/pbc.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/pbc.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
  * $Id$
  */
 
@@ -357,11 +357,11 @@
     /* Update the constant count and reallocate */
     if (interp->code->const_table->constants)
         interp->code->const_table->constants =
-            mem_realloc_n_typed(interp->code->const_table->constants,
-                newcount, PackFile_Constant *);
+            mem_gc_realloc_n_typed_zeroed(interp, interp->code->const_table->constants,
+                newcount, oldcount, PackFile_Constant *);
     else
         interp->code->const_table->constants =
-            mem_allocate_n_typed(newcount, PackFile_Constant *);
+            mem_gc_allocate_n_zeroed_typed(interp, newcount, PackFile_Constant *);
 
     interp->code->const_table->constants[oldcount] = new_constant;
     interp->code->const_table->const_count         = newcount;
@@ -420,7 +420,7 @@
 
 /*
 
-=item C<int e_pbc_open(PARROT_INTERP, void *param)>
+=item C<int e_pbc_open(PARROT_INTERP, const char *param)>
 
 Opens a compilation unit to emit PBC.
 
@@ -429,13 +429,13 @@
 */
 
 int
-e_pbc_open(PARROT_INTERP, SHIM(void *param))
+e_pbc_open(PARROT_INTERP, SHIM(const char *param))
 {
     ASSERT_ARGS(e_pbc_open)
-    code_segment_t * const cs = mem_allocate_zeroed_typed(code_segment_t);
+    code_segment_t * const cs = mem_gc_allocate_zeroed_typed(interp, code_segment_t);
 
     if (!IMCC_INFO(interp)->globals)
-        IMCC_INFO(interp)->globals = mem_allocate_zeroed_typed(imcc_globals);
+        IMCC_INFO(interp)->globals = mem_gc_allocate_zeroed_typed(interp, imcc_globals);
 
     if (IMCC_INFO(interp)->globals->cs)
         clear_sym_hash(&IMCC_INFO(interp)->globals->cs->key_consts);
@@ -445,7 +445,7 @@
     }
 
     /* free previous cached key constants if any */
-    create_symhash(&cs->key_consts);
+    create_symhash(interp, &cs->key_consts);
 
     cs->next     = NULL;
     cs->prev     = IMCC_INFO(interp)->globals->cs;
@@ -496,7 +496,7 @@
 make_new_sub(PARROT_INTERP, ARGIN(IMC_Unit *unit))
 {
     ASSERT_ARGS(make_new_sub)
-    subs_t * const s = mem_allocate_zeroed_typed(subs_t);
+    subs_t * const s = mem_gc_allocate_zeroed_typed(interp, subs_t);
 
     s->prev          = IMCC_INFO(interp)->globals->cs->subs;
     s->unit          = unit;
@@ -510,7 +510,7 @@
 
     IMCC_INFO(interp)->globals->cs->subs = s;
 
-    create_symhash(&s->fixup);
+    create_symhash(interp, &s->fixup);
 }
 
 
@@ -615,7 +615,7 @@
 {
     ASSERT_ARGS(store_key_const)
     SymReg * const c =
-        _mk_const(&IMCC_INFO(interp)->globals->cs->key_consts, str, 0);
+        _mk_const(interp, &IMCC_INFO(interp)->globals->cs->key_consts, str, 0);
     c->color = idx;
 }
 
@@ -826,7 +826,7 @@
                     SymReg * const nam = mk_const(interp, fixup->name,
                             fixup->type & VT_ENCODED ? 'U' : 'S');
 
-                    const int op = interp->op_lib->op_code("find_sub_not_null_p_sc", 1);
+                    const int op = interp->op_lib->op_code(interp, "find_sub_not_null_p_sc", 1);
                     PARROT_ASSERT(op);
 
                     interp->code->base.data[addr] = op;
@@ -981,14 +981,32 @@
 add_const_str(PARROT_INTERP, ARGIN(const SymReg *r))
 {
     ASSERT_ARGS(add_const_str)
-    const int      k = add_const_table(interp);
-    STRING * const s = IMCC_string_from_reg(interp, r);
-    PackFile_Constant * const constant = interp->code->const_table->constants[k];
-
-    constant->type     = PFC_STRING;
-    constant->u.string = s;
-
 
+    PackFile_ConstTable *table = interp->code->const_table;
+    STRING * const s = IMCC_string_from_reg(interp, r);
+    int k = -1;
+    int i;
+    for (i = 0; i < table->const_count; ++i) {
+        PackFile_Constant * const constant = table->constants[i];
+        if (constant->type == PFC_STRING) {
+            STRING * const sc = constant->u.string;
+            if (Parrot_charset_number_of_str(interp, s) ==
+                    Parrot_charset_number_of_str(interp, sc) &&
+                    Parrot_encoding_number_of_str(interp, s) ==
+                    Parrot_encoding_number_of_str(interp, sc) &&
+                    Parrot_str_equal(interp, s, sc)) {
+                k = i;
+                break;
+            }
+        }
+    }
+    if (k < 0) {
+        PackFile_Constant * constant;
+        k = add_const_table(interp);
+        constant = table->constants[k];
+        constant->type     = PFC_STRING;
+        constant->u.string = s;
+    }
     return k;
 }
 
@@ -1044,9 +1062,9 @@
 
     /* a :multi sub with no arguments */
     if (!pcc_sub->multi[0])
-        return pmc_new(interp, enum_class_FixedIntegerArray);
+        return Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
 
-    multi_sig = pmc_new(interp, enum_class_FixedPMCArray);
+    multi_sig = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
     VTABLE_set_integer_native(interp, multi_sig, n);
     ct        = interp->code->const_table;
 
@@ -1058,14 +1076,14 @@
 
         if (r->set == 'S') {
             STRING * const type_name = ct->constants[r->color]->u.string;
-            const INTVAL type_num    = pmc_type(interp, type_name);
+            const INTVAL type_num    = Parrot_pmc_get_type_str(interp, type_name);
 
             if (type_num == enum_type_undef) {
-                sig_pmc = pmc_new(interp, enum_class_String);
+                sig_pmc = Parrot_pmc_new(interp, enum_class_String);
                 VTABLE_set_string_native(interp, sig_pmc, type_name);
             }
             else {
-                sig_pmc = pmc_new(interp, enum_class_Integer);
+                sig_pmc = Parrot_pmc_new(interp, enum_class_Integer);
                 VTABLE_set_integer_native(interp, sig_pmc, type_num);
             }
         }
@@ -1116,7 +1134,7 @@
             if (r->set == 'P' && r->usage & U_LEXICAL) {
                 SymReg *n;
                 if (!lex_info) {
-                    lex_info = pmc_new_noinit(interp, lex_info_id);
+                    lex_info = Parrot_pmc_new_noinit(interp, lex_info_id);
                     VTABLE_init_pmc(interp, lex_info, sub_pmc);
                 }
 
@@ -1149,7 +1167,7 @@
     }
 
     if (!lex_info && (unit->outer || need_lex)) {
-        lex_info = pmc_new_noinit(interp, lex_info_id);
+        lex_info = Parrot_pmc_new_noinit(interp, lex_info_id);
         VTABLE_init_pmc(interp, lex_info, sub_pmc);
     }
 
@@ -1276,7 +1294,7 @@
 
         if (real_name) {
             char * const p = mem_sys_strdup(real_name + 1);
-            free(r->name);
+            mem_sys_free(r->name);
             r->name = p;
         }
     }
@@ -1292,12 +1310,12 @@
         if (!PMC_IS_NULL(classobj))
             sub_pmc = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type(interp, classname);
+            const INTVAL type = Parrot_pmc_get_type_str(interp, classname);
             if (type <= 0)
                 Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_NO_CLASS,
                     "Class '%Ss' specified in :instanceof(...) not found",
                     classname);
-            sub_pmc = pmc_new(interp, type);
+            sub_pmc = Parrot_pmc_new(interp, type);
         }
     }
     else {
@@ -1305,7 +1323,7 @@
         type = Parrot_get_ctx_HLL_type(interp, type);
 
         /* TODO create constant - see also src/packfile.c */
-        sub_pmc = pmc_new(interp, type);
+        sub_pmc = Parrot_pmc_new(interp, type);
     }
 
     /* Set flags and get the sub info. */
@@ -1348,7 +1366,7 @@
             ns_pmc = ct->constants[ns_const]->u.key;
             break;
           case PFC_STRING:
-            ns_pmc = constant_pmc_new(interp, enum_class_String);
+            ns_pmc = Parrot_pmc_new_constant(interp, enum_class_String);
             VTABLE_set_string_native(interp, ns_pmc, ct->constants[ns_const]->u.string);
             break;
           default:
@@ -1478,7 +1496,7 @@
     if (r)
         return r->color;
 
-    pfc = mem_allocate_typed(PackFile_Constant);
+    pfc = mem_gc_allocate_typed(interp, PackFile_Constant);
     rc  = PackFile_Constant_unpack_key(interp,
             interp->code->const_table, pfc, key);
 
@@ -1805,7 +1823,7 @@
     else
         s = Parrot_str_unescape(interp, r->name, 0, NULL);
 
-    p  = constant_pmc_new(interp, r->pmc_type);
+    p  = Parrot_pmc_new_constant(interp, r->pmc_type);
 
     switch (r->pmc_type) {
       case enum_class_Integer:
@@ -2188,7 +2206,7 @@
             /* need a dummy to hold register usage */
             SymReg * const r = mk_sub_label(interp, "(null)");
             r->type          = VT_PCC_SUB;
-            r->pcc_sub       = mem_allocate_zeroed_typed(pcc_sub_t);
+            r->pcc_sub       = mem_gc_allocate_zeroed_typed(interp, pcc_sub_t);
 
             add_const_pmc_sub(interp, r, oldsize, oldsize + code_size);
         }

Modified: branches/ops_pct/compilers/imcc/pbc.h
==============================================================================
--- branches/ops_pct/compilers/imcc/pbc.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/pbc.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -28,7 +28,7 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(3);
 
-int e_pbc_open(PARROT_INTERP, SHIM(void *param))
+int e_pbc_open(PARROT_INTERP, SHIM(const char *param))
         __attribute__nonnull__(1);
 
 PARROT_WARN_UNUSED_RESULT

Modified: branches/ops_pct/compilers/imcc/pcc.c
==============================================================================
--- branches/ops_pct/compilers/imcc/pcc.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/pcc.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -108,9 +108,12 @@
         __attribute__nonnull__(3)
         __attribute__nonnull__(4);
 
-static void unshift_self(ARGIN(SymReg *sub), ARGIN(SymReg *obj))
+static void unshift_self(PARROT_INTERP,
+    ARGIN(SymReg *sub),
+    ARGIN(SymReg *obj))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 #define ASSERT_ARGS_insert_tail_call __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -143,7 +146,8 @@
     , PARROT_ASSERT_ARG(ins) \
     , PARROT_ASSERT_ARG(sub))
 #define ASSERT_ARGS_unshift_self __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(sub) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(sub) \
     , PARROT_ASSERT_ARG(obj))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
@@ -267,15 +271,15 @@
     SymReg *regcache[PCC_GET_ARGS_LIMIT + 1];
     char bufcache[sizeof (pref) + sizeof (item) * PCC_GET_ARGS_LIMIT + sizeof (subf)];
 
-    SymReg ** const regs  = n < PCC_GET_ARGS_LIMIT ?
-        regcache :
-        mem_allocate_n_zeroed_typed(n + 1, SymReg *);
+    SymReg ** const regs  = n < PCC_GET_ARGS_LIMIT
+                                ? regcache
+                                : mem_gc_allocate_n_zeroed_typed(interp, n + 1, SymReg *);
 
     unsigned int  bufpos  = 0;
     unsigned int  bufsize = lenpref + lenitem * n + lensubf;
-    char         *buf     = n < PCC_GET_ARGS_LIMIT ?
-        bufcache :
-        mem_allocate_n_typed(bufsize, char);
+    char         *buf     = n < PCC_GET_ARGS_LIMIT
+                                ? bufcache
+                                : mem_gc_allocate_n_typed(interp, bufsize, char);
 
     memcpy(buf, pref, lenpref);
     bufpos += lenpref;
@@ -362,7 +366,7 @@
 
 /*
 
-=item C<static void unshift_self(SymReg *sub, SymReg *obj)>
+=item C<static void unshift_self(PARROT_INTERP, SymReg *sub, SymReg *obj)>
 
 prepend the object to args or self to params
 
@@ -371,15 +375,15 @@
 */
 
 static void
-unshift_self(ARGIN(SymReg *sub), ARGIN(SymReg *obj))
+unshift_self(PARROT_INTERP, ARGIN(SymReg *sub), ARGIN(SymReg *obj))
 {
     ASSERT_ARGS(unshift_self)
     struct pcc_sub_t * const pcc_sub = sub->pcc_sub;
     const int                n       = pcc_sub->nargs;
     int                      i;
 
-    mem_realloc_n_typed(pcc_sub->args,      n + 1, SymReg *);
-    mem_realloc_n_typed(pcc_sub->arg_flags, n + 1, int);
+    pcc_sub->args       = mem_gc_realloc_n_typed(interp, pcc_sub->args,      n + 1, SymReg *);
+    pcc_sub->arg_flags  = mem_gc_realloc_n_typed(interp, pcc_sub->arg_flags, n + 1, int);
 
     for (i = n; i; --i) {
         pcc_sub->args[i]      = pcc_sub->args[i - 1];
@@ -419,7 +423,7 @@
             self->type = VTIDENTIFIER;
         }
 
-        unshift_self(sub, self);
+        unshift_self(interp, sub, self);
     }
 
     /* Don't generate any parameter checking code if there
@@ -821,7 +825,7 @@
     }
 
     if (sub->pcc_sub->object)
-        unshift_self(sub, sub->pcc_sub->object);
+        unshift_self(interp, sub, sub->pcc_sub->object);
 
     /* insert arguments */
     n   = sub->pcc_sub->nargs;

Modified: branches/ops_pct/compilers/imcc/reg_alloc.c
==============================================================================
--- branches/ops_pct/compilers/imcc/reg_alloc.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/reg_alloc.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -59,7 +59,8 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*unit);
 
-static void build_reglist(NULLOK_INTERP, ARGMOD(IMC_Unit *unit))
+static void build_reglist(PARROT_INTERP, ARGMOD(IMC_Unit *unit))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*unit);
 
@@ -73,11 +74,12 @@
         FUNC_MODIFIES(*r);
 
 PARROT_WARN_UNUSED_RESULT
-static unsigned int first_avail(
+static unsigned int first_avail(PARROT_INTERP,
     ARGIN(const IMC_Unit *unit),
     int reg_set,
     ARGOUT_NULLOK(Set **avail))
         __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
         FUNC_MODIFIES(*avail);
 
 PARROT_WARN_UNUSED_RESULT
@@ -162,7 +164,8 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void vanilla_reg_alloc(SHIM_INTERP, ARGMOD(IMC_Unit *unit))
+static void vanilla_reg_alloc(PARROT_INTERP, ARGMOD(IMC_Unit *unit))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*unit);
 
@@ -179,14 +182,16 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(unit))
 #define ASSERT_ARGS_build_reglist __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(unit))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(unit))
 #define ASSERT_ARGS_compute_du_chain __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(unit))
 #define ASSERT_ARGS_compute_one_du_chain __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(r) \
     , PARROT_ASSERT_ARG(unit))
 #define ASSERT_ARGS_first_avail __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(unit))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(unit))
 #define ASSERT_ARGS_ig_allocate __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_ig_find_color __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(unit) \
@@ -223,7 +228,8 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(unit))
 #define ASSERT_ARGS_vanilla_reg_alloc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(unit))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(unit))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
@@ -429,7 +435,7 @@
     fprintf(stderr, "reg_alloc.c: free_reglist\n");
 #endif
     if (unit->interference_graph) {
-        free(unit->interference_graph);
+        mem_sys_free(unit->interference_graph);
         unit->interference_graph = NULL;
     }
 
@@ -439,7 +445,7 @@
         for (i = 0; i < unit->n_symbols; i++)
             free_life_info(unit, unit->reglist[i]);
 
-        free(unit->reglist);
+        mem_sys_free(unit->reglist);
         unit->reglist   = NULL;
         unit->n_symbols = 0;
     }
@@ -607,8 +613,8 @@
 reg_sort_f(ARGIN(const void *a), ARGIN(const void *b))
 {
     ASSERT_ARGS(reg_sort_f)
-    const SymReg * const ra = *(SymReg**)a;
-    const SymReg * const rb = *(SymReg**)b;
+    const SymReg * const ra = *(const SymReg * const *)a;
+    const SymReg * const rb = *(const SymReg * const *)b;
 
     if (ra->first_ins->index < rb->first_ins->index)
         return -1;
@@ -636,7 +642,7 @@
 
 /*
 
-=item C<static void build_reglist(NULLOK_INTERP, IMC_Unit *unit)>
+=item C<static void build_reglist(PARROT_INTERP, IMC_Unit *unit)>
 
 make a linear list of IDENTs and VARs, set n_symbols
 TODO
@@ -654,7 +660,7 @@
 */
 
 static void
-build_reglist(NULLOK_INTERP, ARGMOD(IMC_Unit *unit))
+build_reglist(PARROT_INTERP, ARGMOD(IMC_Unit *unit))
 {
     ASSERT_ARGS(build_reglist)
     SymHash  const *hsh = &unit->hash;
@@ -670,7 +676,7 @@
     if (count == 0)
         return;
 
-    unit->reglist = mem_allocate_n_typed(count, SymReg *);
+    unit->reglist = mem_gc_allocate_n_typed(interp, count, SymReg *);
 
     for (i = count = 0; i < hsh->size; i++) {
         SymReg *r;
@@ -1043,7 +1049,7 @@
     if (!n)
         return;
 
-    avail = mem_allocate_n_typed(n, char);
+    avail = mem_gc_allocate_n_typed(interp, n, char);
 
     for (i = 0; i < unit->n_symbols; ++i) {
         int     already_allocated, color;
@@ -1122,8 +1128,8 @@
 
 /*
 
-=item C<static unsigned int first_avail(const IMC_Unit *unit, int reg_set, Set
-**avail)>
+=item C<static unsigned int first_avail(PARROT_INTERP, const IMC_Unit *unit, int
+reg_set, Set **avail)>
 
 find first available register of the given reg_set
 
@@ -1133,13 +1139,15 @@
 
 PARROT_WARN_UNUSED_RESULT
 static unsigned int
-first_avail(ARGIN(const IMC_Unit *unit), int reg_set, ARGOUT_NULLOK(Set **avail))
+first_avail(PARROT_INTERP,
+        ARGIN(const IMC_Unit *unit), int reg_set,
+        ARGOUT_NULLOK(Set **avail))
 {
     ASSERT_ARGS(first_avail)
     int n                     = (int)unit->n_symbols > unit->max_color
                               ? (int)unit->n_symbols
                               : unit->max_color;
-    Set         *allocated    = set_make((unsigned int)n + 1);
+    Set         *allocated    = set_make(interp, (unsigned int)n + 1);
 
     const SymHash * const hsh = &unit->hash;
 
@@ -1205,7 +1213,7 @@
                 Set         *avail     = sets[j];
                 unsigned int first_reg = avail
                                        ? set_first_zero(avail)
-                                       : first_avail(unit, (int)r->set, &avail);
+                                       : first_avail(interp, unit, (int)r->set, &avail);
                 set_add(avail, first_reg);
                 r->color = first_reg++;
 
@@ -1244,7 +1252,7 @@
 */
 
 static void
-vanilla_reg_alloc(SHIM_INTERP, ARGMOD(IMC_Unit *unit))
+vanilla_reg_alloc(PARROT_INTERP, ARGMOD(IMC_Unit *unit))
 {
     ASSERT_ARGS(vanilla_reg_alloc)
     const char   type[] = "INSP";
@@ -1266,7 +1274,7 @@
     /* Assign new colors. */
     for (j = 0; j < 4; j++) {
         reg_set   = type[j];
-        first_reg = first_avail(unit, reg_set, &avail);
+        first_reg = first_avail(interp, unit, reg_set, &avail);
 
         /* XXX Use a different loop variable that doesn't shadow outer i */
         for (i = 0; i < hsh->size; i++) {
@@ -1276,7 +1284,7 @@
                     continue;
                 if (REG_NEEDS_ALLOC(r) && (r->color == -1) && r->use_count) {
                     if (set_contains(avail, first_reg))
-                        first_reg = first_avail(unit, reg_set, NULL);
+                        first_reg = first_avail(interp, unit, reg_set, NULL);
 
                     set_add(avail, first_reg);
                     r->color = first_reg++;

Modified: branches/ops_pct/compilers/imcc/sets.c
==============================================================================
--- branches/ops_pct/compilers/imcc/sets.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/sets.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -38,7 +38,7 @@
 
 /*
 
-=item C<Set* set_make(unsigned int length)>
+=item C<Set* set_make(PARROT_INTERP, unsigned int length)>
 
 Creates a new Set object.
 
@@ -49,13 +49,13 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 Set*
-set_make(unsigned int length)
+set_make(PARROT_INTERP, unsigned int length)
 {
     ASSERT_ARGS(set_make)
-    Set * const s = mem_allocate_zeroed_typed(Set);
+    Set * const s = mem_gc_allocate_zeroed_typed(interp, Set);
     s->length     = length;
-    s->bmp        = mem_allocate_n_zeroed_typed(NUM_BYTES(length),
-                        unsigned char);
+    s->bmp        = mem_gc_allocate_n_zeroed_typed(interp,
+                            NUM_BYTES(length), unsigned char);
 
     return s;
 }
@@ -63,7 +63,7 @@
 
 /*
 
-=item C<Set* set_make_full(unsigned int length)>
+=item C<Set* set_make_full(PARROT_INTERP, unsigned int length)>
 
 Creates a new Set object of C<length> items, setting them all to full.
 
@@ -74,10 +74,10 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 Set*
-set_make_full(unsigned int length)
+set_make_full(PARROT_INTERP, unsigned int length)
 {
     ASSERT_ARGS(set_make_full)
-    Set * const s      = set_make(length);
+    Set * const s      = set_make(interp, length);
     const size_t bytes = NUM_BYTES(length);
 
     if (bytes)
@@ -128,7 +128,7 @@
 
 /*
 
-=item C<Set* set_copy(const Set *s)>
+=item C<Set* set_copy(PARROT_INTERP, const Set *s)>
 
 Copies the set C<s>, returning a new set pointer.
 
@@ -139,10 +139,10 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 Set*
-set_copy(ARGIN(const Set *s))
+set_copy(PARROT_INTERP, ARGIN(const Set *s))
 {
     ASSERT_ARGS(set_copy)
-    Set * const d = set_make(s->length);
+    Set * const d = set_make(interp, s->length);
 
     memcpy(d->bmp, s->bmp, NUM_BYTES(d->length));
     return d;
@@ -286,7 +286,7 @@
 
 /*
 
-=item C<Set * set_union(const Set *s1, const Set *s2)>
+=item C<Set * set_union(PARROT_INTERP, const Set *s1, const Set *s2)>
 
 Computes the union of the two Set arguments, returning it as a new Set.
 
@@ -299,11 +299,11 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 Set *
-set_union(ARGIN(const Set *s1), ARGIN(const Set *s2))
+set_union(PARROT_INTERP, ARGIN(const Set *s1), ARGIN(const Set *s2))
 {
     ASSERT_ARGS(set_union)
     unsigned int i;
-    Set * const s = set_make(s1->length);
+    Set * const s = set_make(interp, s1->length);
 
     if (s1->length != s2->length)
         fatal(1, "set_union", "Sets don't have the same length\n");
@@ -318,7 +318,7 @@
 
 /*
 
-=item C<Set * set_intersec(const Set *s1, const Set *s2)>
+=item C<Set * set_intersec(PARROT_INTERP, const Set *s1, const Set *s2)>
 
 Creates a new Set object that is the intersection of the Set arguments (defined
 through the binary C<and> operator.)
@@ -332,11 +332,11 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 Set *
-set_intersec(ARGIN(const Set *s1), ARGIN(const Set *s2))
+set_intersec(PARROT_INTERP, ARGIN(const Set *s1), ARGIN(const Set *s2))
 {
     ASSERT_ARGS(set_intersec)
     unsigned int i;
-    Set * const  s = set_make(s1->length);
+    Set * const  s = set_make(interp, s1->length);
 
     if (s1->length != s2->length)
         fatal(1, "set_intersec", "Sets don't have the same length\n");

Modified: branches/ops_pct/compilers/imcc/sets.h
==============================================================================
--- branches/ops_pct/compilers/imcc/sets.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/sets.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -29,8 +29,9 @@
 
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
-Set* set_copy(ARGIN(const Set *s))
-        __attribute__nonnull__(1);
+Set* set_copy(PARROT_INTERP, ARGIN(const Set *s))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 int set_equal(ARGIN(const Set *s1), ARGIN(const Set *s2))
         __attribute__nonnull__(1)
@@ -47,9 +48,12 @@
 
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
-Set * set_intersec(ARGIN(const Set *s1), ARGIN(const Set *s2))
+Set * set_intersec(PARROT_INTERP,
+    ARGIN(const Set *s1),
+    ARGIN(const Set *s2))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 void set_intersec_inplace(ARGMOD(Set *s1), ARGIN(const Set *s2))
         __attribute__nonnull__(1)
@@ -58,17 +62,20 @@
 
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
-Set* set_make(unsigned int length);
+Set* set_make(PARROT_INTERP, unsigned int length)
+        __attribute__nonnull__(1);
 
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
-Set* set_make_full(unsigned int length);
+Set* set_make_full(PARROT_INTERP, unsigned int length)
+        __attribute__nonnull__(1);
 
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
-Set * set_union(ARGIN(const Set *s1), ARGIN(const Set *s2))
+Set * set_union(PARROT_INTERP, ARGIN(const Set *s1), ARGIN(const Set *s2))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 #define ASSERT_ARGS_set_add __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(s))
@@ -77,7 +84,8 @@
 #define ASSERT_ARGS_set_contains __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_set_copy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(s))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_set_equal __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(s1) \
     , PARROT_ASSERT_ARG(s2))
@@ -86,15 +94,19 @@
 #define ASSERT_ARGS_set_free __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_set_intersec __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(s1) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(s1) \
     , PARROT_ASSERT_ARG(s2))
 #define ASSERT_ARGS_set_intersec_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(s1) \
     , PARROT_ASSERT_ARG(s2))
-#define ASSERT_ARGS_set_make __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_set_make_full __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_set_make __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_set_make_full __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_set_union __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(s1) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(s1) \
     , PARROT_ASSERT_ARG(s2))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: compilers/imcc/sets.c */

Modified: branches/ops_pct/compilers/imcc/symreg.c
==============================================================================
--- branches/ops_pct/compilers/imcc/symreg.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/symreg.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
  * $Id$
  */
 
@@ -48,19 +48,21 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 PARROT_MALLOC
-static char * _mk_fullname(
+static char * _mk_fullname(PARROT_INTERP,
     ARGIN_NULLOK(const Namespace *ns),
     ARGIN(const char *name))
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3);
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-static SymReg * _mk_symreg(
+static SymReg * _mk_symreg(PARROT_INTERP,
     ARGMOD(SymHash *hsh),
     ARGIN(const char *name),
     int t)
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*hsh);
 
 PARROT_WARN_UNUSED_RESULT
@@ -95,17 +97,20 @@
         FUNC_MODIFIES(*unit)
         FUNC_MODIFIES(*rhs);
 
-static void resize_symhash(ARGMOD(SymHash *hsh))
+static void resize_symhash(PARROT_INTERP, ARGMOD(SymHash *hsh))
         __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
         FUNC_MODIFIES(*hsh);
 
 #define ASSERT_ARGS__get_sym_typed __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(hsh) \
     , PARROT_ASSERT_ARG(name))
 #define ASSERT_ARGS__mk_fullname __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(name))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(name))
 #define ASSERT_ARGS__mk_symreg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(hsh) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(hsh) \
     , PARROT_ASSERT_ARG(name))
 #define ASSERT_ARGS_add_ns __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -121,7 +126,8 @@
     , PARROT_ASSERT_ARG(left) \
     , PARROT_ASSERT_ARG(rhs))
 #define ASSERT_ARGS_resize_symhash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(hsh))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(hsh))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
@@ -139,7 +145,7 @@
 push_namespace(PARROT_INTERP, ARGIN(const char *name))
 {
     ASSERT_ARGS(push_namespace)
-    Namespace * const ns = mem_allocate_zeroed_typed(Namespace);
+    Namespace * const ns = mem_gc_allocate_zeroed_typed(interp, Namespace);
 
     ns->parent = IMCC_INFO(interp)->namespace_stack;
     ns->name   = mem_sys_strdup(name);
@@ -244,7 +250,8 @@
 
 /*
 
-=item C<static SymReg * _mk_symreg(SymHash *hsh, const char *name, int t)>
+=item C<static SymReg * _mk_symreg(PARROT_INTERP, SymHash *hsh, const char
+*name, int t)>
 
 Makes a new SymReg in the given SymHash from a varname and type.
 
@@ -255,20 +262,20 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static SymReg *
-_mk_symreg(ARGMOD(SymHash *hsh), ARGIN(const char *name), int t)
+_mk_symreg(PARROT_INTERP, ARGMOD(SymHash *hsh), ARGIN(const char *name), int t)
 {
     ASSERT_ARGS(_mk_symreg)
     SymReg * r = _get_sym_typed(hsh, name, t);
 
     if (!r) {
-        r             = mem_allocate_zeroed_typed(SymReg);
+        r             = mem_gc_allocate_zeroed_typed(interp, SymReg);
         r->set        = t;
         r->type       = VTREG;
         r->name       = mem_sys_strdup(name);
         r->color      = -1;
         r->want_regno = -1;
 
-        _store_symreg(hsh, r);
+        _store_symreg(interp, hsh, r);
     }
 
     return r;
@@ -296,7 +303,7 @@
     /* Check for the condition that fires up a segfault in TT #162 */
     PARROT_ASSERT(unit != NULL);
 
-    return _mk_symreg(&unit->hash, name, t);
+    return _mk_symreg(interp, &unit->hash, name, t);
 }
 
 
@@ -386,10 +393,10 @@
 {
     ASSERT_ARGS(mk_pcc_sub)
     IMC_Unit * const unit = IMCC_INFO(interp)->last_unit;
-    SymReg   * const r    = _mk_symreg(&unit->hash, name, proto);
+    SymReg   * const r    = _mk_symreg(interp, &unit->hash, name, proto);
 
     r->type    = VT_PCC_SUB;
-    r->pcc_sub = mem_allocate_zeroed_typed(pcc_sub_t);
+    r->pcc_sub = mem_gc_allocate_zeroed_typed(interp, pcc_sub_t);
 
     return r;
 }
@@ -420,7 +427,7 @@
     if (unit->prev && unit->prev->_namespace == ns)
         unit->_namespace = ns;
     else {
-        SymReg * const g = dup_sym(ns);
+        SymReg * const g = dup_sym(interp, ns);
         SymReg * const r = _get_sym(&IMCC_INFO(interp)->ghash, g->name);
 
         unit->_namespace     = g;
@@ -430,7 +437,7 @@
         /* this unit should free its namespace only if it's the only thing
          * holding onto it */
         if (!r || r->type != VT_CONSTP) {
-            _store_symreg(&IMCC_INFO(interp)->ghash, g);
+            _store_symreg(interp, &IMCC_INFO(interp)->ghash, g);
             unit->owns_namespace = 0;
         }
         else
@@ -441,7 +448,7 @@
 
 /*
 
-=item C<void add_pcc_arg(SymReg *r, SymReg *arg)>
+=item C<void add_pcc_arg(PARROT_INTERP, SymReg *r, SymReg *arg)>
 
 Adds a register or constant to the function arg list.
 
@@ -450,14 +457,14 @@
 */
 
 void
-add_pcc_arg(ARGMOD(SymReg *r), ARGMOD(SymReg *arg))
+add_pcc_arg(PARROT_INTERP, ARGMOD(SymReg *r), ARGMOD(SymReg *arg))
 {
     ASSERT_ARGS(add_pcc_arg)
     pcc_sub_t * const sub = r->pcc_sub;
     const int         n   = sub->nargs;
 
-    mem_realloc_n_typed(sub->args,      n + 1, SymReg *);
-    mem_realloc_n_typed(sub->arg_flags, n + 1, int);
+    sub->args       = mem_gc_realloc_n_typed(interp, sub->args,      n + 1, SymReg *);
+    sub->arg_flags  = mem_gc_realloc_n_typed(interp, sub->arg_flags, n + 1, int);
 
     sub->args[n]      = arg;
     sub->arg_flags[n] = arg->type;
@@ -470,7 +477,7 @@
 
 /*
 
-=item C<void add_pcc_result(SymReg *r, SymReg *arg)>
+=item C<void add_pcc_result(PARROT_INTERP, SymReg *r, SymReg *arg)>
 
 Adds a register or constant to the function's return list.
 
@@ -479,14 +486,14 @@
 */
 
 void
-add_pcc_result(ARGMOD(SymReg *r), ARGMOD(SymReg *arg))
+add_pcc_result(PARROT_INTERP, ARGMOD(SymReg *r), ARGMOD(SymReg *arg))
 {
     ASSERT_ARGS(add_pcc_result)
     pcc_sub_t * const sub = r->pcc_sub;
     const int         n   = sub->nret;
 
-    mem_realloc_n_typed(sub->ret,       n + 1, SymReg *);
-    mem_realloc_n_typed(sub->ret_flags, n + 1, int);
+    sub->ret        = mem_gc_realloc_n_typed(interp, sub->ret,       n + 1, SymReg *);
+    sub->ret_flags  = mem_gc_realloc_n_typed(interp, sub->ret_flags, n + 1, int);
 
     /* we can't keep the flags in the SymReg as the SymReg
      * maybe used with different flags for different calls */
@@ -501,7 +508,7 @@
 
 /*
 
-=item C<void add_pcc_multi(SymReg *r, SymReg *arg)>
+=item C<void add_pcc_multi(PARROT_INTERP, SymReg *r, SymReg *arg)>
 
 Adds a :multi signature to the sub.
 
@@ -510,13 +517,13 @@
 */
 
 void
-add_pcc_multi(ARGMOD(SymReg *r), ARGIN_NULLOK(SymReg *arg))
+add_pcc_multi(PARROT_INTERP, ARGMOD(SymReg *r), ARGIN_NULLOK(SymReg *arg))
 {
     ASSERT_ARGS(add_pcc_multi)
     pcc_sub_t * const sub = r->pcc_sub;
     const int n           = sub->nmulti;
 
-    mem_realloc_n_typed(sub->multi, n + 1, SymReg *);
+    sub->multi = mem_gc_realloc_n_typed(interp, sub->multi, n + 1, SymReg *);
     sub->multi[n] = arg;
     sub->nmulti++;
 }
@@ -592,7 +599,8 @@
 
 /*
 
-=item C<static char * _mk_fullname(const Namespace *ns, const char *name)>
+=item C<static char * _mk_fullname(PARROT_INTERP, const Namespace *ns, const
+char *name)>
 
 Combines the namespace and name together, separated by a C<::>.  If there's no
 namespace, the name is returned on its own.
@@ -607,12 +615,12 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_MALLOC
 static char *
-_mk_fullname(ARGIN_NULLOK(const Namespace *ns), ARGIN(const char *name))
+_mk_fullname(PARROT_INTERP, ARGIN_NULLOK(const Namespace *ns), ARGIN(const char *name))
 {
     ASSERT_ARGS(_mk_fullname)
     if (ns) {
         const size_t len = strlen(name) + strlen(ns->name) + 3;
-        char *result = (char *) mem_sys_allocate(len);
+        char *result = mem_gc_allocate_n_typed(interp, len, char);
         snprintf(result, len, "%s::%s", ns->name, name);
         return result;
     }
@@ -637,7 +645,7 @@
 mk_ident(PARROT_INTERP, ARGIN(const char *name), int t)
 {
     ASSERT_ARGS(mk_ident)
-    char   * const fullname = _mk_fullname(IMCC_INFO(interp)->namespace_stack, name);
+    char   * const fullname = _mk_fullname(interp, IMCC_INFO(interp)->namespace_stack, name);
     SymReg *r = get_sym_by_name(&(IMCC_INFO(interp)->last_unit->hash), name);
     if (r && r->set != t)
         IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -648,7 +656,7 @@
 
 
     if (IMCC_INFO(interp)->namespace_stack) {
-        Identifier * const ident = mem_allocate_zeroed_typed(Identifier);
+        Identifier * const ident = mem_gc_allocate_zeroed_typed(interp, Identifier);
 
         ident->name        = fullname;
         ident->next        = IMCC_INFO(interp)->namespace_stack->idents;
@@ -784,7 +792,7 @@
             IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
                     "global PMC constant not allowed");
 
-        r = _mk_symreg(&IMCC_INFO(interp)->ghash, name, t);
+        r = _mk_symreg(interp, &IMCC_INFO(interp)->ghash, name, t);
     }
     else {
         r = mk_ident(interp, name, t);
@@ -802,7 +810,8 @@
 
 /*
 
-=item C<SymReg * _mk_const(SymHash *hsh, const char *name, int t)>
+=item C<SymReg * _mk_const(PARROT_INTERP, SymHash *hsh, const char *name, int
+t)>
 
 Makes a new constant (internal use only).
 
@@ -813,10 +822,10 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 SymReg *
-_mk_const(ARGMOD(SymHash *hsh), ARGIN(const char *name), int t)
+_mk_const(PARROT_INTERP, ARGMOD(SymHash *hsh), ARGIN(const char *name), int t)
 {
     ASSERT_ARGS(_mk_const)
-    SymReg * const r = _mk_symreg(hsh, name, t);
+    SymReg * const r = _mk_symreg(interp, hsh, name, t);
     r->type          = VTCONST;
 
     if (t == 'U') {
@@ -902,9 +911,9 @@
     SymHash * const h = &IMCC_INFO(interp)->ghash;
 
     if (!h->data)
-        create_symhash(h);
+        create_symhash(interp, h);
 
-    return _mk_const(h, name, t);
+    return _mk_const(interp, h, name, t);
 }
 
 
@@ -981,10 +990,10 @@
         if (r && r->usage & U_LEXICAL)
             is_lexical = 1;
 
-        r       = mem_allocate_zeroed_typed(SymReg);
+        r       = mem_gc_allocate_zeroed_typed(interp, SymReg);
         r->type = VTADDRESS;
         r->name = mem_sys_strdup(name);
-        _store_symreg(hsh, r);
+        _store_symreg(interp, hsh, r);
 
         if (is_lexical)
             r->usage |= U_LEXICAL;
@@ -995,7 +1004,7 @@
         const char * const sub_name = (uniq == U_add_uniq_sub)
                        /* remember to free this name; add_ns malloc()s it */
                        ? (aux_name = add_ns(interp, name))
-                       : (char *)name;
+                       : name;
 
         r = _get_sym(hsh, sub_name);
 
@@ -1011,7 +1020,7 @@
             }
         }
 
-        r       = _mk_symreg(hsh, sub_name, 0);
+        r       = _mk_symreg(interp, hsh, sub_name, 0);
         r->type = VTADDRESS;
 
         if (uniq) {
@@ -1119,7 +1128,7 @@
 
 /*
 
-=item C<SymReg * dup_sym(const SymReg *r)>
+=item C<SymReg * dup_sym(PARROT_INTERP, const SymReg *r)>
 
 Links keys to a keys structure = SymReg
 
@@ -1164,15 +1173,15 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 SymReg *
-dup_sym(ARGIN(const SymReg *r))
+dup_sym(PARROT_INTERP, ARGIN(const SymReg *r))
 {
     ASSERT_ARGS(dup_sym)
-    SymReg * const new_sym = mem_allocate_zeroed_typed(SymReg);
+    SymReg * const new_sym = mem_gc_allocate_zeroed_typed(interp, SymReg);
     STRUCT_COPY(new_sym, r);
     new_sym->name = mem_sys_strdup(r->name);
 
     if (r->nextkey)
-        new_sym->nextkey = dup_sym(r->nextkey);
+        new_sym->nextkey = dup_sym(interp, r->nextkey);
 
     return new_sym;
 }
@@ -1236,7 +1245,7 @@
     }
 
     /* no, need a new one */
-    keychain       = mem_allocate_zeroed_typed(SymReg);
+    keychain       = mem_gc_allocate_zeroed_typed(interp, SymReg);
     keychain->type = VTCONST;
 
     ++keychain->use_count;
@@ -1249,7 +1258,7 @@
         if (REG_NEEDS_ALLOC(keys[i]))
             keychain->type |= VTREGKEY;
 
-        key->nextkey = dup_sym(keys[i]);
+        key->nextkey = dup_sym(interp, keys[i]);
         key          = key->nextkey;
 
         /* for registers, point ->reg to the original, needed by
@@ -1262,7 +1271,7 @@
     keychain->set   = 'K';
     keychain->color = -1;
 
-    _store_symreg(h, keychain);
+    _store_symreg(interp, h, keychain);
 
     return keychain;
 }
@@ -1316,7 +1325,7 @@
 
 /*
 
-=item C<void create_symhash(SymHash *hash)>
+=item C<void create_symhash(PARROT_INTERP, SymHash *hash)>
 
 Creates a symbol hash table with space for 16 entries.
 
@@ -1325,10 +1334,10 @@
 */
 
 void
-create_symhash(ARGOUT(SymHash *hash))
+create_symhash(PARROT_INTERP, ARGOUT(SymHash *hash))
 {
     ASSERT_ARGS(create_symhash)
-    hash->data    = mem_allocate_n_zeroed_typed(16, SymReg *);
+    hash->data    = mem_gc_allocate_n_zeroed_typed(interp, 16, SymReg *);
     hash->size    = 16;
     hash->entries = 0;
 }
@@ -1336,7 +1345,7 @@
 
 /*
 
-=item C<static void resize_symhash(SymHash *hsh)>
+=item C<static void resize_symhash(PARROT_INTERP, SymHash *hsh)>
 
 Resizes a symbol hash table.
 
@@ -1345,16 +1354,16 @@
 */
 
 static void
-resize_symhash(ARGMOD(SymHash *hsh))
+resize_symhash(PARROT_INTERP, ARGMOD(SymHash *hsh))
 {
     ASSERT_ARGS(resize_symhash)
     const int    new_size = hsh->size << 1; /* new size is twice as large */
     int          n_next   = 16;
-    SymReg     **next_r   = mem_allocate_n_zeroed_typed(n_next, SymReg *);
+    SymReg     **next_r   = mem_gc_allocate_n_zeroed_typed(interp, n_next, SymReg *);
     SymHash      nh;                        /* new symbol table */
     unsigned int i;
 
-    nh.data = mem_allocate_n_zeroed_typed(new_size, SymReg *);
+    nh.data = mem_gc_allocate_n_zeroed_typed(interp, new_size, SymReg *);
 
     for (i = 0; i < hsh->size; i++) {
         SymReg *r, *next;
@@ -1367,7 +1376,7 @@
             /* remember all the chained next pointers and clear r->next */
             if (j >= n_next) {
                 n_next <<= 1;
-                mem_realloc_n_typed(next_r, n_next, SymReg *);
+                next_r = mem_gc_realloc_n_typed(interp, next_r, n_next, SymReg *);
             }
 
             r->next     = NULL;
@@ -1396,7 +1405,7 @@
 
 /*
 
-=item C<void _store_symreg(SymHash *hsh, SymReg *r)>
+=item C<void _store_symreg(PARROT_INTERP, SymHash *hsh, SymReg *r)>
 
 Stores a symbol in the hash (internal use only).
 
@@ -1405,7 +1414,7 @@
 */
 
 void
-_store_symreg(ARGMOD(SymHash *hsh), ARGMOD(SymReg *r))
+_store_symreg(PARROT_INTERP, ARGMOD(SymHash *hsh), ARGMOD(SymReg *r))
 {
     ASSERT_ARGS(_store_symreg)
     const int i = hash_str(r->name) % hsh->size;
@@ -1418,7 +1427,7 @@
     hsh->entries++;
 
     if (hsh->entries >= hsh->size)
-        resize_symhash(hsh);
+        resize_symhash(interp, hsh);
 }
 
 
@@ -1436,7 +1445,7 @@
 store_symreg(PARROT_INTERP, ARGMOD(SymReg *r))
 {
     ASSERT_ARGS(store_symreg)
-    _store_symreg(&IMCC_INFO(interp)->cur_unit->hash, r);
+    _store_symreg(interp, &IMCC_INFO(interp)->cur_unit->hash, r);
 }
 
 
@@ -1512,7 +1521,7 @@
     SymReg          *p;
 
     for (ns = nspace; ns; ns = ns->parent) {
-        char * const fullname = _mk_fullname(ns, name);
+        char * const fullname = _mk_fullname(interp, ns, name);
         p                     = _get_sym(hsh, fullname);
 
         mem_sys_free(fullname);

Modified: branches/ops_pct/compilers/imcc/symreg.h
==============================================================================
--- branches/ops_pct/compilers/imcc/symreg.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/imcc/symreg.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -138,14 +138,19 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-SymReg * _mk_const(ARGMOD(SymHash *hsh), ARGIN(const char *name), int t)
+SymReg * _mk_const(PARROT_INTERP,
+    ARGMOD(SymHash *hsh),
+    ARGIN(const char *name),
+    int t)
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*hsh);
 
-void _store_symreg(ARGMOD(SymHash *hsh), ARGMOD(SymReg *r))
+void _store_symreg(PARROT_INTERP, ARGMOD(SymHash *hsh), ARGMOD(SymReg *r))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*hsh)
         FUNC_MODIFIES(*r);
 
@@ -154,9 +159,10 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*unit);
 
-void add_pcc_arg(ARGMOD(SymReg *r), ARGMOD(SymReg *arg))
+void add_pcc_arg(PARROT_INTERP, ARGMOD(SymReg *r), ARGMOD(SymReg *arg))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*r)
         FUNC_MODIFIES(*arg);
 
@@ -165,13 +171,17 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*r);
 
-void add_pcc_multi(ARGMOD(SymReg *r), ARGIN_NULLOK(SymReg *arg))
+void add_pcc_multi(PARROT_INTERP,
+    ARGMOD(SymReg *r),
+    ARGIN_NULLOK(SymReg *arg))
         __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
         FUNC_MODIFIES(*r);
 
-void add_pcc_result(ARGMOD(SymReg *r), ARGMOD(SymReg *arg))
+void add_pcc_result(PARROT_INTERP, ARGMOD(SymReg *r), ARGMOD(SymReg *arg))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*r)
         FUNC_MODIFIES(*arg);
 
@@ -188,8 +198,9 @@
         __attribute__nonnull__(1)
         FUNC_MODIFIES(*hsh);
 
-void create_symhash(ARGOUT(SymHash *hash))
+void create_symhash(PARROT_INTERP, ARGOUT(SymHash *hash))
         __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
         FUNC_MODIFIES(*hash);
 
 void debug_dump_sym_hash(ARGIN(const SymHash *hsh))
@@ -197,8 +208,9 @@
 
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
-SymReg * dup_sym(ARGIN(const SymReg *r))
-        __attribute__nonnull__(1);
+SymReg * dup_sym(PARROT_INTERP, ARGIN(const SymReg *r))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_CAN_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
@@ -338,24 +350,29 @@
     , PARROT_ASSERT_ARG(hsh) \
     , PARROT_ASSERT_ARG(name))
 #define ASSERT_ARGS__mk_const __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(hsh) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(hsh) \
     , PARROT_ASSERT_ARG(name))
 #define ASSERT_ARGS__store_symreg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(hsh) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(hsh) \
     , PARROT_ASSERT_ARG(r))
 #define ASSERT_ARGS_add_namespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(unit))
 #define ASSERT_ARGS_add_pcc_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(r) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(r) \
     , PARROT_ASSERT_ARG(arg))
 #define ASSERT_ARGS_add_pcc_cc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(r) \
     , PARROT_ASSERT_ARG(arg))
 #define ASSERT_ARGS_add_pcc_multi __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(r))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(r))
 #define ASSERT_ARGS_add_pcc_result __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(r) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(r) \
     , PARROT_ASSERT_ARG(arg))
 #define ASSERT_ARGS_add_pcc_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(r) \
@@ -366,11 +383,13 @@
 #define ASSERT_ARGS_clear_sym_hash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(hsh))
 #define ASSERT_ARGS_create_symhash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(hash))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(hash))
 #define ASSERT_ARGS_debug_dump_sym_hash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(hsh))
 #define ASSERT_ARGS_dup_sym __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(r))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(r))
 #define ASSERT_ARGS_find_sym __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(name))

Modified: branches/ops_pct/compilers/ncigen/t/NCIGENAST/struct_00.t
==============================================================================
--- branches/ops_pct/compilers/ncigen/t/NCIGENAST/struct_00.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/ncigen/t/NCIGENAST/struct_00.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,9 @@
-#!/usr/bin/perl
+#!perl
+# Copyright (C) 2008-2010, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
 
 use lib ('./lib', '../../lib');
 use Parrot::Test::NCIGENAST;
@@ -16,3 +21,10 @@
 CODE
 
 contains("<complex> => PMC 'NCIGENAST;Struct'");
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/compilers/ncigen/t/NCIGENAST/typedef_00.t
==============================================================================
--- branches/ops_pct/compilers/ncigen/t/NCIGENAST/typedef_00.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/ncigen/t/NCIGENAST/typedef_00.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,9 @@
-#!/usr/bin/perl
+#!perl
+# Copyright (C) 2008-2010, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
 
 use lib ('./lib', '../../lib');
 use Parrot::Test::NCIGENAST;
@@ -24,3 +29,10 @@
 
 parse('int a(), b(), c()');
 parse_failure;
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/compilers/ncigen/t/parse_00.t
==============================================================================
--- branches/ops_pct/compilers/ncigen/t/parse_00.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/ncigen/t/parse_00.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,9 @@
-#!/usr/bin/perl
+#!perl
+# Copyright (C) 2008-2010, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
 
 use lib ('./lib', '../../lib');
 use Parrot::Test::NCIGENAST;
@@ -120,7 +125,7 @@
 int a = 10 * sizeof(int) * 13;
 CODE
 
-parse_success(<<'CODE', 'times_04.c').c;
+parse_success(<<'CODE', 'times_04.c');
 int a = 8 * 3;
 CODE
 
@@ -173,3 +178,10 @@
 parse_success(<<'CODE', 'void_star.c');
 __extension__ typedef void * __timer_t;
 CODE
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/compilers/ncigen/t/parse_01.t
==============================================================================
--- branches/ops_pct/compilers/ncigen/t/parse_01.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/ncigen/t/parse_01.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,9 @@
-#!/usr/bin/perl
+#!perl
+# Copyright (C) 2008-2010, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
 
 use lib ('./lib', '../../lib');
 use Parrot::Test::NCIGENAST;
@@ -26,3 +31,10 @@
 int sqlite3_open( const char *filename, sqlite3 **ppDb);
 CODE
 
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/compilers/ncigen/t/parse_02.t
==============================================================================
--- branches/ops_pct/compilers/ncigen/t/parse_02.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/ncigen/t/parse_02.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,9 @@
-#!/usr/bin/perl
+#!perl
+# Copyright (C) 2008-2010, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
 
 use lib ('./lib', '../../lib');
 use Parrot::Test::NCIGENAST;
@@ -70,3 +75,10 @@
 parse_success(<<'CODE', 'Xlib.h 2');
 extern int (*XSetAfterFunction( Display* , int (*) ( Display*)))( Display*);
 CODE
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

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

Modified: branches/ops_pct/compilers/pirc/src/main.c
==============================================================================
--- branches/ops_pct/compilers/pirc/src/main.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/pirc/src/main.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -27,7 +27,7 @@
 
 #endif
 
-
+/* HEADERIZER HFILE: none */
 
 /* XXX use pthreads library to test thread safety.
    does not work currently on windows.
@@ -47,6 +47,26 @@
 
 void * process_file(void *a);
 
+/* HEADERIZER HFILE: none */
+
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static void print_help(ARGIN(char const * const program_name))
+        __attribute__nonnull__(1);
+
+static void runcode(PARROT_INTERP, int argc, ARGIN(char *argv[]))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3);
+
+#define ASSERT_ARGS_print_help __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(program_name))
+#define ASSERT_ARGS_runcode __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(argv))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
 /*
 
 =head1 FUNCTIONS
@@ -54,8 +74,7 @@
 =over 4
 
 
-=item C<static void
-print_help(char const * const program_name)>
+=item C<static void print_help(char const * const program_name)>
 
 Routine to print usage of this program.
 
@@ -63,7 +82,7 @@
 
 */
 static void
-print_help(char const * const program_name)
+print_help(ARGIN(char const * const program_name))
 {
     fprintf(stderr, "Usage: %s [options] <file>\n", program_name);
     fprintf(stderr, "Options:\n\n"
@@ -116,8 +135,10 @@
 Unpack the arguments and invoke parse_file().
 
 */
+PARROT_CAN_RETURN_NULL
 void *
-process_file(void *a) {
+process_file(ARGIN(void *a))
+{
 
 
     /* unpack the arguments from the structure parser_args */
@@ -137,8 +158,7 @@
 
 /*
 
-=item C<static void
-runcode(PARROT_INTERP, int argc, char *argv[])>
+=item C<static void runcode(PARROT_INTERP, int argc, char *argv[])>
 
 This function runs the code in the interpreter's (in C<PARROT_INTERP>)
 code segment.
@@ -147,7 +167,8 @@
 
 */
 static void
-runcode(PARROT_INTERP, int argc, char *argv[]) {
+runcode(PARROT_INTERP, int argc, ARGIN(char *argv[]))
+{
 
     /* runs :init functions */
     PackFile_fixup_subs(interp, PBC_MAIN, NULL);
@@ -159,8 +180,7 @@
 
 /*
 
-=item C<int
-main(int argc, char *argv[])>
+=item C<int main(int argc, char *argv[])>
 
 Main compiler driver.
 

Modified: branches/ops_pct/compilers/pirc/src/pir.y
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pir.y	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/pirc/src/pir.y	Sun Mar  7 19:33:20 2010	(r44743)
@@ -88,6 +88,14 @@
 
 #endif
 
+/* HEADERIZER HFILE: none */
+
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
 char *expand_macro(yyscan_t yyscanner, macro_def * const macro, macro_param * args);
 
 /* Enumeration of mathematical operator types; these are used to index the opnames array. */

Modified: branches/ops_pct/compilers/pirc/src/pircapi.c
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pircapi.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/pirc/src/pircapi.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -180,6 +180,7 @@
 parse_string(PARROT_INTERP, ARGIN(char *pirstring), int flags, int pasminput,
     unsigned macro_size)
 {
+    ASSERT_ARGS(parse_string)
     yyscan_t            yyscanner;
     lexer_state        *lexer = NULL;
     char                name[64];

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

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

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

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

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

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

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

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

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

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

Modified: branches/ops_pct/compilers/pirc/src/pirpcc.h
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pirpcc.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/pirc/src/pirpcc.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -9,10 +9,41 @@
 #include "pircompunit.h"
 #include "pircompiler.h"
 
-void convert_inv_to_instr(struct lexer_state * const lexer, invocation * const inv);
-void generate_parameters_instr(struct lexer_state * const lexer, unsigned num_parameters);
-void generate_getresults_instr(struct lexer_state * const lexer, target * const targetlist);
-void emit_sub_epilogue(struct lexer_state * const lexer);
+/* HEADERIZER BEGIN: compilers/pirc/src/pirpcc.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+void convert_inv_to_instr(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(invocation * const inv))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void emit_sub_epilogue(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+void generate_getresults_instr(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(target * const targetlist))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void generate_parameters_instr(
+    ARGIN(lexer_state * const lexer),
+    unsigned num_parameters)
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_convert_inv_to_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(inv))
+#define ASSERT_ARGS_emit_sub_epilogue __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_generate_getresults_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(targetlist))
+#define ASSERT_ARGS_generate_parameters_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: compilers/pirc/src/pirpcc.c */
 
 #endif /* PARROT_PIR_PIRPCC_H_GUARD */
 

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

Modified: branches/ops_pct/compilers/pirc/src/pirregalloc.h
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pirregalloc.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/pirc/src/pirregalloc.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -84,13 +84,41 @@
 
 } lsr_allocator;
 
-lsr_allocator *new_linear_scan_register_allocator(struct lexer_state *lexer);
+/* HEADERIZER BEGIN: compilers/pirc/src/pirregalloc.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-void destroy_linear_scan_register_allocator(lsr_allocator *lsr);
-
-live_interval * new_live_interval(lsr_allocator * const lsr, unsigned firstuse, pir_type type);
-
-void linear_scan_register_allocation(lsr_allocator * const lsr);
+void destroy_linear_scan_register_allocator(ARGMOD(lsr_allocator *lsr))
+        __attribute__nonnull__(1)
+        FUNC_MODIFIES(*lsr);
+
+void linear_scan_register_allocation(ARGIN(lsr_allocator * const lsr))
+        __attribute__nonnull__(1);
+
+PARROT_CAN_RETURN_NULL
+lsr_allocator * new_linear_scan_register_allocator(
+    ARGIN_NULLOK(struct lexer_state *lexer));
+
+PARROT_CAN_RETURN_NULL
+PARROT_MALLOC
+PARROT_WARN_UNUSED_RESULT
+live_interval * new_live_interval(
+    ARGIN(lsr_allocator * const lsr),
+    unsigned firstuse_location,
+    pir_type type)
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_destroy_linear_scan_register_allocator \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr))
+#define ASSERT_ARGS_linear_scan_register_allocation \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr))
+#define ASSERT_ARGS_new_linear_scan_register_allocator \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_new_live_interval __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: compilers/pirc/src/pirregalloc.c */
 
 #endif /* PARROT_PIR_PIRREGALLOC_H_GUARD */
 

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

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

Modified: branches/ops_pct/compilers/pirc/t/basic.t
==============================================================================
--- branches/ops_pct/compilers/pirc/t/basic.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/pirc/t/basic.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -2,6 +2,9 @@
 # Copyright (C) 2008-2009, Parrot Foundation.
 # $Id$
 
+use strict;
+use warnings;
+
 use lib qw(lib);
 use Parrot::Test tests => 6;
 

Modified: branches/ops_pct/compilers/pirc/t/heredoc.t
==============================================================================
--- branches/ops_pct/compilers/pirc/t/heredoc.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/pirc/t/heredoc.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -2,6 +2,9 @@
 # Copyright (C) 2008-2009, Parrot Foundation.
 # $Id$
 
+use strict;
+use warnings;
+
 use lib qw(lib);
 use Parrot::Test tests => 1;
 

Modified: branches/ops_pct/compilers/pirc/t/macro.t
==============================================================================
--- branches/ops_pct/compilers/pirc/t/macro.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/pirc/t/macro.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -2,6 +2,9 @@
 # Copyright (C) 2008-2009, Parrot Foundation.
 # $Id$
 
+use strict;
+use warnings;
+
 use lib qw(lib);
 use Parrot::Test tests => 1;
 

Modified: branches/ops_pct/compilers/pirc/t/stmts.t
==============================================================================
--- branches/ops_pct/compilers/pirc/t/stmts.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/pirc/t/stmts.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -2,6 +2,9 @@
 # Copyright (C) 2008-2009, Parrot Foundation.
 # $Id$
 
+use strict;
+use warnings;
+
 use lib qw(lib);
 use Parrot::Test tests => 5;
 

Modified: branches/ops_pct/compilers/pirc/t/subflags.t
==============================================================================
--- branches/ops_pct/compilers/pirc/t/subflags.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/compilers/pirc/t/subflags.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -2,6 +2,9 @@
 # Copyright (C) 2008-2009, Parrot Foundation.
 # $Id$
 
+use strict;
+use warnings;
+
 use lib qw(lib);
 use Parrot::Test tests => 1;
 

Modified: branches/ops_pct/config/auto/cgoto.pm
==============================================================================
--- branches/ops_pct/config/auto/cgoto.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/auto/cgoto.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -22,10 +22,10 @@
 
 sub _init {
     my $self = shift;
-    my %data;
-    $data{description} = q{Does your compiler support computed goto};
-    $data{result}      = q{};
-    return \%data;
+    return {
+        'description' => 'Does your compiler support computed goto',
+        'result'      => '',
+    };
 }
 
 sub runstep {
@@ -58,29 +58,6 @@
     my $verbose = $conf->options->get('verbose');
     if ($test) {
         $conf->data->set(
-            TEMP_cg_h => '$(INC_DIR)/oplib/core_ops_cg.h $(INC_DIR)/oplib/core_ops_cgp.h',
-            TEMP_cg_c => <<'EOF',
-# generated by config/auto/cgoto.pm
-
-src/ops/core_ops_cg$(O): $(GENERAL_H_FILES) src/ops/core_ops_cg.c \
-	include/pmc/pmc_parrotlibrary.h
-src/ops/core_ops_cgp$(O): $(GENERAL_H_FILES) src/ops/core_ops_cgp.c \
-	include/pmc/pmc_parrotlibrary.h
-src/runcore/cores.c: $(INC_DIR)/oplib/core_ops_cgp.h
-
-$(INC_DIR)/oplib/core_ops_cg.h: src/ops/core_ops_cg.c
-
-src/ops/core_ops_cg.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGoto.pm lib/Parrot/OpLib/core.pm
-	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGoto --core
-
-$(INC_DIR)/oplib/core_ops_cgp.h: src/ops/core_ops_cgp.c
-
-src/ops/core_ops_cgp.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGP.pm lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/CPrederef.pm
-	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGP --core
-EOF
-            TEMP_cg_o => 'src/ops/core_ops_cg$(O) src/ops/core_ops_cgp$(O)',
-            TEMP_cg_r => '$(RM_F) $(INC_DIR)/oplib/core_ops_cg.h src/ops/core_ops_cg.c \
-                    $(INC_DIR)/oplib/core_ops_cgp.h src/ops/core_ops_cgp.c',
             cg_flag => '-DHAVE_COMPUTED_GOTO'
         );
         print " (yes) " if $verbose;
@@ -88,10 +65,6 @@
     }
     else {
         $conf->data->set(
-            TEMP_cg_h => '',
-            TEMP_cg_c => '',
-            TEMP_cg_o => '',
-            TEMP_cg_r => '',
             cg_flag   => ''
         );
         print " (no) " if $verbose;

Modified: branches/ops_pct/config/auto/gcc.pm
==============================================================================
--- branches/ops_pct/config/auto/gcc.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/auto/gcc.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -85,14 +85,15 @@
     $gccversion .= ".$minor" if defined $minor;
     $self->set_result("yes, $gccversion");
 
-    my $ccwarn = $conf->data->get('ccwarn');
-
     $conf->data->set( sym_export => '__attribute__ ((visibility("default")))' )
         if $gccversion >= 4.0 && !$conf->data->get('sym_export');
 
+    # sneaky check for g++
+    my $gpp = (index($conf->data->get('cc'), '++') > 0) ? 1 : 0;
+
     $conf->data->set(
-        ccwarn              => "$ccwarn",
-        gccversion          => $gccversion,
+        gccversion => $gccversion,
+        'g++'      => $gpp,
     );
     return 1;
 }

Modified: branches/ops_pct/config/auto/icu.pm
==============================================================================
--- branches/ops_pct/config/auto/icu.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/auto/icu.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -339,8 +339,7 @@
         if (! -d $icuheaders) {
             $without = 1;
         }
-        my $slash = $conf->data->get('slash');
-        $icuheaders .= "${slash}include";
+        $icuheaders .= "/include";
         if (! -d $icuheaders) {
             $without = 1;
         }

Modified: branches/ops_pct/config/auto/perldoc.pm
==============================================================================
--- branches/ops_pct/config/auto/perldoc.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/auto/perldoc.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -36,7 +36,8 @@
 sub runstep {
     my ( $self, $conf ) = @_;
 
-    my $cmd = $conf->data->get('scriptdirexp_provisional') . q{/perldoc};
+    my $slash = $conf->data->get('slash');
+    my $cmd = $conf->data->get('scriptdirexp_provisional') . $slash . q{perldoc};
     my ( $fh, $filename ) = tempfile( UNLINK => 1 );
     my $content = capture_output("$cmd -ud $filename perldoc") || undef;
 
@@ -59,7 +60,6 @@
     my $TEMP_pod = join q{ } =>
         map { my $t = $_; $t =~ s/\.ops$/.pod/; "ops/$t" } @ops;
 
-    my $slash       = $conf->data->get('slash');
     my $new_perldoc = $conf->data->get('new_perldoc');
 
     foreach my $ops (@ops) {
@@ -67,17 +67,17 @@
         $pod =~ s/\.ops$/.pod/;
         if ( $new_perldoc ) {
             $TEMP_pod_build .= <<"END"
-ops$slash$pod: ..${slash}src${slash}ops${slash}$ops
-\t\$(PERLDOC) -ud ops${slash}$pod ..${slash}src${slash}ops${slash}$ops
-\t\$(CHMOD) 0644 ops${slash}$pod
+ops/$pod: ../src/ops/$ops
+\t\$(PERLDOC_BIN) -ud ops/$pod ../src/ops/$ops
+\t\$(CHMOD) 0644 ops/$pod
 
 END
         }
         else {
             $TEMP_pod_build .= <<"END"
-ops$slash$pod: ..${slash}src${slash}ops${slash}$ops
-\t\$(PERLDOC) -u ..${slash}ops${slash}$ops > ops${slash}$pod
-\t\$(CHMOD) 0644 ..${slash}ops${slash}$pod
+ops/$pod: ../src/ops/$ops
+\t\$(PERLDOC_BIN) -u ../ops/$ops > ops/$pod
+\t\$(CHMOD) 0644 ../ops/$pod
 
 END
         }

Modified: branches/ops_pct/config/auto/pmc.pm
==============================================================================
--- branches/ops_pct/config/auto/pmc.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/auto/pmc.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -90,6 +90,10 @@
             }
         }
         my $include_headers = get_includes($pmc_fname);
+        my $cc_shared = $conf->data->get('cc_shared');
+        my $cc_o_out  = $conf->data->get('cc_o_out');
+        my $warnings  = $conf->data->get('ccwarn');
+        my $optimize  = $conf->data->get('optimize');
 
         $TEMP_pmc_build .= <<END
 src/pmc/$pmc.c : src/pmc/$pmc.dump
@@ -100,20 +104,21 @@
 
 include/pmc/pmc_$pmc.h: src/pmc/$pmc.c
 
-src/pmc/$pmc\$(O): include/pmc/pmc_${pmc}.h src/pmc/$pmc.str \$(NONGEN_HEADERS) \\
+## SUFFIX OVERRIDE -Warnings
+src/pmc/$pmc\$(O): include/pmc/pmc_$pmc.h src/pmc/$pmc.str \$(NONGEN_HEADERS) \\
     $parent_headers $include_headers include/pmc/pmc_continuation.h \\
-    include/pmc/pmc_callcontext.h include/pmc/pmc_fixedintegerarray.h
+    include/pmc/pmc_callcontext.h include/pmc/pmc_fixedintegerarray.h \\
+    src/pmc/$pmc.c
+\t\$(CC) \$(CFLAGS) $optimize $cc_shared $warnings -I\$(\@D) $cc_o_out\$@ -c src/pmc/$pmc.c
 
 END
     }
 
-    # src/pmc/$pmc\$(O): \$(NONGEN_HEADERS) $parent_headers include/pmc/pmc_$pmc.h
 
     # build list of libraries for link line in Makefile
-    my $slash = $conf->data->get('slash');
-    ( my $TEMP_pmc_classes_o   = $TEMP_pmc_o )   =~ s/^| / src${slash}pmc${slash}/g;
-    ( my $TEMP_pmc_classes_str = $TEMP_pmc_str ) =~ s/^| / src${slash}pmc${slash}/g;
-    ( my $TEMP_pmc_classes_pmc = $pmc_list )     =~ s/^| / src${slash}pmc${slash}/g;
+    ( my $TEMP_pmc_classes_o   = $TEMP_pmc_o )   =~ s{^| }{ src/pmc/}g;
+    ( my $TEMP_pmc_classes_str = $TEMP_pmc_str ) =~ s{^| }{ src/pmc/}g;
+    ( my $TEMP_pmc_classes_pmc = $pmc_list )     =~ s{^| }{ src/pmc/}g;
 
     # Gather the actual names (with MixedCase) of all of the non-abstract
     # built-in PMCs in rough hierarchical order.

Modified: branches/ops_pct/config/auto/warnings.pm
==============================================================================
--- branches/ops_pct/config/auto/warnings.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/auto/warnings.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,17 +1,14 @@
-# Copyright (C) 2007-2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
 
-config/auto/warnings.pm - Warning flags detection
+config/auto/warnings.pm - Warning flags probing.
 
 =head1 DESCRIPTION
 
-Automagically detect what warning flags, like -Wall, -Wextra,
--Wchar-subscripts, etc., that the compiler can support.  Directly hacked
-from F<config/auto/attributes.pm>.
-
-=head1 SUBROUTINES
+Given a list of potential warnings available for a certain type of
+compiler, probe to see which of those are valid for this particular version.
 
 =over 4
 
@@ -22,21 +19,86 @@
 use strict;
 use warnings;
 
-
 use base qw(Parrot::Configure::Step);
 
 use Parrot::Configure::Utils ();
 use Parrot::BuildUtil;
 
+=item C<_init>
+
+Declare potential warnings for various compilers.  Note that the compiler
+key used here doesn't really exist in a unified way in Configure - would
+be nice if it did so we could simplify our checks in runstep().
+
+We create a data structure here that breaks out the warnings by compiler,
+using this structure:
+
+warnings:
+  gcc:
+    basic:
+      - -Warning1
+      - -Warning2
+    cage:
+      - -Warning3
+      - -Warning4
+    only:
+      - -Warning5:
+        - foo.c
+        - bar.c
+    never:
+      - -Warning6:
+        - baz.c
+        - frob.c
+    todo:
+      - -Warning7:
+        - cow.c
+        - pig.c
+  g++:
+    ...
+
+'basic' warnings are always used.
+
+'cage' warnings are added only if --cage is specified during
+Configure. This can be used to hold warnings that aren't ready to be
+added to the default run yet.
+
+'only' should be used as we add new warnings to the build, it will let
+us insure that files we know are clean for a new warning stay clean.
+
+'never' should be used when a particular file contains generated code
+(e.g. imcc) and we cannot update it to conform to the standards.
+
+'todo' functions just like never does, but it indicates that these
+files are expected to eventually be free of this warning.
+
+Note that there is no actual requirement that the 'file' be a full path
+to a .c file; the file could be "PMCS" or "OPS" or some other identifier;
+whatever the value, it will generate a Config entry prefixed with
+C<ccwarn::>, which will probably be used via @@ expansion in a makefile.
+
+It is tempting to put this into a config file, but having it in
+perl gives us the ability to dynamically setup certain warnings based
+on any criteria already discovered via Config.
+
+Order is important - some warnings are invalid unless they are specified
+after other warnings.
+
+=cut
+
 sub _init {
     my $self = shift;
-    my %data;
-    $data{description} = q{Detect supported compiler warnings};
-    $data{result}      = q{};
-
-    # Please keep these sorted by flag name, such that "-Wno-foo" is
-    # sorted as "-Wfoo", so we can turn off/on as needed.
-    my @potential_warnings = qw(
+
+    my $data = {
+        description => 'Detect supported compiler warnings',
+        result      => '',
+        validated   => [],
+    };
+
+    # begin gcc/g++
+    my $gcc = {};
+    my $gpp = {};
+
+    my @gcc_or_gpp = qw(
         -falign-functions=16
         -fvisibility=hidden
         -funit-at-a-time
@@ -49,6 +111,7 @@
         -Wchar-subscripts
         -Wcomment
         -Wdisabled-optimization
+        -Wdiv-by-zero
         -Wendif-labels
         -Wextra
         -Wformat
@@ -66,9 +129,11 @@
         -Wmissing-field-initializers
         -Wno-missing-format-attribute
         -Wmissing-include-dirs
+        -Wmultichar
         -Wpacked
         -Wparentheses
         -Wpointer-arith
+        -Wpointer-sign
         -Wreturn-type
         -Wsequence-point
         -Wno-shadow
@@ -79,13 +144,17 @@
         -Wswitch-default
         -Wtrigraphs
         -Wundef
-        -Wunknown-pragmas
         -Wno-unused
+        -Wunknown-pragmas
         -Wvariadic-macros
         -Wwrite-strings
-        -Wnot-a-real-warning
     );
-    my @potential_warnings_no_cpp = qw(
+
+    $gcc->{'basic'} = [ @gcc_or_gpp ];
+    $gpp->{'basic'} = [ @gcc_or_gpp ];
+
+    # Add some gcc only warnings that would break g++
+    push @{$gcc->{'basic'}}, qw(
         -Wbad-function-cast
         -Wc++-compat
         -Wdeclaration-after-statement
@@ -101,7 +170,7 @@
         -Wstrict-prototypes
     );
 
-    my @cage_warnings = qw(
+    my $gcc_or_gpp_cage = [ qw(
         -std=c89
         -Werror-implicit-function-declaration
         -Wformat=2
@@ -109,41 +178,51 @@
         -Wlong-long
         -Wmissing-format-attribute
         -Wdeprecated-declarations
-        -Wdiv-by-zero
         -Wno-format-extra-args
         -Wno-import
-        -Wno-multichar
-        -Wno-pointer-sign
-        -Wold-style-definition
         -Wunreachable-code
+        -Wunused
         -Wunused-function
         -Wunused-label
         -Wunused-value
         -Wunused-variable
-    );
+    ) ];
 
-    my @may_not_even_be_interesting = qw(
-        -Wpadded
-        -Wredundant-decls
-        -Wswitch-enum
-        -Wsystem-headers
-    );
+    $gcc->{'cage'} = $gcc_or_gpp_cage;
+    $gpp->{'cage'} = $gcc_or_gpp_cage;
 
-    my @nice_to_have_but_too_noisy_for_now = qw(
-        -pedantic
-        -Wconversion
-        -Wint-to-pointer-cast
-        -Wmissing-noreturn
-        -Wshadow
-        -Wunused-macros
-        -Wunused-parameter
-    );
+    $gcc->{'todo'} = $gpp->{'todo'} = {
+        '-Wformat-nonliteral' => [
+            'src/spf_render.c',
+            'compilers/imcc/optimizer.c',
+        ],
+        '-Wstrict-prototypes' => [
+            'src/nci/extra_thunks.c',
+            'src/extra_nci_thunks.c',
+        ],
+    };
+
+    $gcc->{'never'} = $gpp->{'never'} = {
+        '-Wformat-nonliteral' => [
+            'compilers/imcc/imclexer.c',
+        ],
+        '-Wswitch-default' => [
+            'compilers/imcc/imclexer.c',
+        ],
+        '-Wcast-qual' => [
+            'compilers/imcc/imcparser.c',
+        ],
+        '-Wlogical-op' => [
+            'compilers/imcc/imcparser.c',
+        ],
+    };
+
+    $data->{'warnings'}{'gcc'} = $gcc;
+    $data->{'warnings'}{'g++'} = $gpp;
 
-    $data{potential_warnings}        = \@potential_warnings;
-    $data{potential_warnings_no_cpp} = \@potential_warnings_no_cpp;
-    $data{cage_warnings}             = \@cage_warnings;
+    ## end gcc/g++
 
-    return \%data;
+    return $data;
 }
 
 sub runstep {
@@ -151,53 +230,64 @@
 
     my $verbose = $conf->options->get('verbose');
     print "\n" if $verbose;
+
+    my $compiler = '';
     if ( defined $conf->data->get('gccversion') ) {
+        $compiler = $conf->data->get('g++') ? 'g++' : 'gcc';
+    }
 
-        # Dirty way of checking if compiling with c++
-        my $nocpp = index($conf->data->get('cc'), '++') < 0;
+    if ($compiler eq '') {
+        print "We do not (yet) probe for warnings for your compiler\n"
+            if $verbose;
+        $self->set_result('skipped');
+        return 1;
+    }
 
-        # add on some extra warnings if requested
-        $self->_add_cage_warnings($conf);
-        $self->_add_maintainer_warnings($conf);
-
-        # now try out our warnings
-        for my $maybe_warning (@{ $self->{potential_warnings} }) {
-            $self->try_warning( $conf, $maybe_warning, $verbose );
-        }
-        if ($nocpp) {
-            for my $maybe_warning (@{ $self->{potential_warnings_no_cpp} }) {
-                $self->try_warning( $conf, $maybe_warning, $verbose );
+    # standard warnings.
+    my @warnings = grep {$self->valid_warning($conf, $_)}
+        @{$self->{'warnings'}{$compiler}{'basic'}};
+
+    # --cage?
+    if ($conf->options->get('cage')) {
+        push @warnings, grep {$self->valid_warning($conf, $_)}
+            @{$self->{'warnings'}{$compiler}{'cage'}}
+    }
+
+    # -- only?
+    my %per_file;
+    if (exists $self->{'warnings'}{$compiler}{'only'}) {
+        my %only = %{$self->{'warnings'}{$compiler}{'only'}};
+        foreach my $warning (keys %only) {
+            next unless $self->valid_warning($conf, $warning);
+            foreach my $file (@{$only{$warning}}) {
+                $per_file{$file} = [ @warnings ] unless exists $per_file{$file};
+                push @{$per_file{$file}}, $warning;
             }
         }
+    }
 
-        if ($nocpp) {
-           $self->set_result("set for gcc");
-        }
-        else {
-           $self->set_result("set for g++");
+    foreach my $key (qw/todo never/) {
+        if (exists $self->{'warnings'}{$compiler}{$key}) {
+            my %dont = %{$self->{'warnings'}{$compiler}{$key}};
+            foreach my $warning (keys %dont) {
+                foreach my $file (@{$dont{$warning}}) {
+                    $per_file{$file} = [ @warnings ] unless exists $per_file{$file};
+                    @{$per_file{$file}} = grep {$warning ne $_} @{$per_file{$file}};
+                }
+            }
         }
     }
-    else {
-        print "Currently we only set warnings if using gcc as C compiler\n"
-            if $verbose;
-        $self->set_result("skipped");
-    }
-    return 1;
-}
 
-sub _add_cage_warnings {
-    my ($self, $conf) = @_;
-    push @{ $self->{potential_warnings} }, @{ $self->{cage_warnings} }
-        if $conf->options->get('cage');
-}
+    $conf->data->set('ccwarn', join(' ', @warnings));
+    foreach my $file (keys %per_file) {
+        $conf->data->set("ccwarn::$file", join(' ', @{$per_file{$file}}));
+    }
 
-sub _add_maintainer_warnings {
-    my ($self, $conf) = @_;
-    push @{ $self->{potential_warnings} }, '-Wlarger-than-4096'
-        if $conf->options->get('maintainer');
+    $self->set_result('done');
+    return 1;
 }
 
-=item C<try_warning>
+=item C<valid_warning>
 
 Try a given warning to see if it is supported by the compiler.  The compiler
 is determined by the C<cc> value of the C<Parrot::Configure> object passed
@@ -207,11 +297,17 @@
 Returns true if the warning flag is recognized by the compiler and undef
 otherwise.
 
+Use the running set of known valid options, since some options may depend
+on previous options.
+
 =cut
 
-sub try_warning {
-    my ( $self, $conf, $warning, $verbose ) = @_;
+sub valid_warning {
+    my ( $self, $conf, $warning ) = @_;
+
+    my $verbose = $conf->options->get('verbose');
 
+    # This should be using a temp file name.
     my $output_file = 'test.cco';
 
     $verbose and print "trying attribute '$warning'\n";
@@ -220,17 +316,18 @@
     $conf->cc_gen('config/auto/warnings/test_c.in');
 
     my $ccflags  = $conf->data->get('ccflags');
-    my $tryflags = "$ccflags $warning";
+    my $warnings = join(' ', @{$self->{'validated'}});
+    my $tryflags = "$ccflags $warnings $warning";
 
     my $command_line = Parrot::Configure::Utils::_build_compile_command( $cc, $tryflags );
-    $verbose and print "  ", $command_line, "\n";
+    $verbose and print '  ', $command_line, "\n";
 
     # Don't use cc_build, because failure is expected.
     my $exit_code = Parrot::Configure::Utils::_run_command(
         $command_line, $output_file, $output_file
     );
-    _set_warning($conf, $warning, $exit_code, $verbose);
 
+    # Cleanup any remnants of the test compilation
     $conf->cc_clean();
 
     if ($exit_code) {
@@ -240,35 +337,22 @@
 
     my $output = Parrot::BuildUtil::slurp_file($output_file);
     unlink $output_file or die "Unable to unlink $output_file: $!";
-    return _set_ccflags($conf, $output, $tryflags, $verbose);
-}
-
-sub _set_warning {
-    my ($conf, $warning, $exit_code, $verbose) = @_;
-    $verbose and print "  exit code: $exit_code\n";
-    $conf->data->set( $warning => !$exit_code || 0 );
-}
 
-sub _set_ccflags {
-    my ($conf, $output, $tryflags, $verbose) = @_;
     $verbose and print "  output: $output\n";
 
     if ( $output !~ /error|warning|not supported/i ) {
-        $conf->data->set( ccflags => $tryflags );
-        $verbose and print "  ccflags: ", $conf->data->get("ccflags"), "\n";
+        push @{$self->{'validated'}}, $warning;
+        $verbose and print "    valid warning: '$warning'\n";
         return 1;
     }
     else {
+        $verbose and print "  invalid warning: '$warning'\n";
         return 0;
     }
 }
 
 =back
 
-=head1 AUTHOR
-
-Paul Cochrane <paultcochrane at gmail dot com>
-
 =cut
 
 1;

Modified: branches/ops_pct/config/auto/warnings/test_c.in
==============================================================================
--- branches/ops_pct/config/auto/warnings/test_c.in	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/auto/warnings/test_c.in	Sun Mar  7 19:33:20 2010	(r44743)
@@ -6,11 +6,10 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include "parrot/compiler.h"
 
 /* as long as the file compiles, everything is okay */
 int
-main()
+main(void)
 {
     return EXIT_SUCCESS;
 }

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

Modified: branches/ops_pct/config/gen/crypto/digest_pmc.in
==============================================================================
--- branches/ops_pct/config/gen/crypto/digest_pmc.in	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/crypto/digest_pmc.in	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2008, Parrot Foundation.
+Copyright (C) 2008-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -34,7 +34,7 @@
 */
     VTABLE void init() {
 @TEMP_md_guard@
-        @TEMP_md_ctx@ *c    = mem_allocate_zeroed_typed(@TEMP_md_ctx@);
+        @TEMP_md_ctx@ *c    = mem_gc_allocate_zeroed_typed(INTERP, @TEMP_md_ctx@);
         PMC_data(SELF) = c;
         PObj_custom_destroy_SET(SELF);
 #else
@@ -54,7 +54,7 @@
 @TEMP_md_guard@
         @TEMP_md_ctx@ *c = PMC_data_typed(SELF, @TEMP_md_ctx@ *);
         if (c) {
-            mem_sys_free(c);
+            mem_gc_free(INTERP, c);
             PMC_data(SELF) = NULL;
         }
 #endif
@@ -69,7 +69,7 @@
 */
     VTABLE PMC* clone() {
 @TEMP_md_guard@
-        PMC     *retval  = pmc_new_noinit(INTERP, SELF->vtable->base_type);
+        PMC     *retval  = Parrot_pmc_new_noinit(INTERP, SELF->vtable->base_type);
         @TEMP_md_ctx@ *c       = mem_allocate_zeroed_typed(@TEMP_md_ctx@);
 
         memcpy(c, PMC_data(SELF), sizeof (@TEMP_md_ctx@));

Modified: branches/ops_pct/config/gen/makefiles.pm
==============================================================================
--- branches/ops_pct/config/gen/makefiles.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/makefiles.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -27,12 +27,18 @@
     $data{description} = q{Generate makefiles and other build files};
     $data{result}      = q{};
     $data{makefiles}   = {
-        'Makefile' => { SOURCE => 'config/gen/makefiles/root.in' },
-        'ext/Makefile' => { SOURCE => 'config/gen/makefiles/ext.in', },
+        'Makefile' => {
+            SOURCE => 'config/gen/makefiles/root.in',
+        },
+        'ext/Makefile' => {
+            SOURCE => 'config/gen/makefiles/ext.in',
+        },
+        'compilers/imcc/Rules.mak' => {
+             SOURCE => 'compilers/imcc/Rules.in',
+        },
 
         'ext/Parrot-Embed/Makefile.PL' => {
             SOURCE            => 'config/gen/makefiles/parrot_embed_pl.in',
-            replace_slashes   => 0,
             conditioned_lines => 1,
         },
 
@@ -48,7 +54,6 @@
         'parrot.pc'     => { SOURCE => 'config/gen/makefiles/parrot_pc.in' },
         'docs/Makefile' => { SOURCE => 'config/gen/makefiles/docs.in' },
     };
-    $data{CFLAGS_source} = 'config/gen/makefiles/CFLAGS.in';
     return \%data;
 }
 
@@ -56,36 +61,10 @@
     my ( $self, $conf ) = @_;
 
     $self->makefiles($conf);
-    $self->cflags($conf);
 
     return 1;
 }
 
-sub cflags {
-    my ( $self, $conf ) = @_;
-
-    $conf->genfile( $self->{CFLAGS_source} => 'CFLAGS',
-        comment_type                     => '#'
-    );
-
-    open( my $CFLAGS, ">>", "CFLAGS" ) or die "open >> CFLAGS: $!";
-
-    # Why is this here?  I'd think this information belongs
-    # in the CFLAGS.in file. -- A.D.  March 12, 2004
-    if ( $conf->data->get('cpuarch') =~ /sun4|sparc64/ ) {
-
-        # CFLAGS entries must be left-aligned.
-        print {$CFLAGS} <<"EOF";
-src/jit_cpu.c -{-Wcast-align}        # lots of noise!
-src/nci.c     -{-Wstrict-prototypes} # lots of noise!
-EOF
-    }
-
-    close $CFLAGS;
-
-    return;
-}
-
 sub makefiles {
     my ( $self, $conf ) = @_;
 
@@ -96,7 +75,6 @@
         : keys %{ $self->{makefiles} };
 
     foreach my $target (@targets) {
-        $target =~ s/\\/\//g if $^O eq 'MSWin32';
         my $args   = $self->{makefiles}->{$target};
         my $source = delete $args->{SOURCE};
 

Deleted: branches/ops_pct/config/gen/makefiles/CFLAGS.in
==============================================================================
--- branches/ops_pct/config/gen/makefiles/CFLAGS.in	Sun Mar  7 19:33:20 2010	(r44742)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,37 +0,0 @@
-# [ filename | {regex} ] -{removed options} +{added options} s/// ...
-#
-# Avoid using non-configure controlled +{} directly in this file, as
-# it'll most likely break on other platforms.
-#
-# Note, empty regex/options are just ignored.
-#
-src/platform.c      -{-Wcast-qual}          # noisy
-src/spf_render.c    -{-Wformat-nonliteral}  # noisy
-src/tsq.c           -{@optimize@}           # never optimize tsq.c!
-
-# The src/ops/core_ops*.c files are challenging to optimize.
-# gcc can usually handle it, but don't assume any other compilers can,
-# until there is specific evidence otherwise.
-#UNLESS(gccversion):src/ops/core_ops_cg.c      -{@optimize@}
-#UNLESS(gccversion):src/ops/core_ops_cgp.c     -{@optimize@}
-#UNLESS(gccversion):src/ops/core_ops_switch.c  -{@optimize@}
-
-#IF(cpuarch==amd64):src/gc/system.c  -{@optimize@}              # TT #405 amd64 --optimize problem
-
-# io should be -Wunused clean
-{^src/io/}              s/-Wno-unused/-Wunused/
-
-# files which make their way into dynamically loaded files should be compiled
-# with shared library options
-src/extend.c        +{@cc_shared@}
-src/nci_test.c      +{@cc_shared@}
-
-# imcc file settings
-{^compilers/imcc/}            -{-Wwrite-strings -Wcast-qual}
-{^compilers/imcc/(?!imclexer)}      s/-Wno-unused/-Wunused/
-compilers/imcc/instructions.c -{-Wformat-nonliteral} # noisy
-compilers/imcc/debug.c        -{-Wformat-nonliteral} # noisy
-compilers/imcc/optimizer.c    -{-Wformat-nonliteral} # noisy
-compilers/imcc/parser_util.c  -{-Wformat-nonliteral} # noisy
-compilers/imcc/imclexer.c     -{-Wunused}  # noisy
-compilers/imcc/imclexer.c     -{-Wswitch-default}  # occurs in generated code

Modified: branches/ops_pct/config/gen/makefiles/docs.in
==============================================================================
--- branches/ops_pct/config/gen/makefiles/docs.in	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/makefiles/docs.in	Sun Mar  7 19:33:20 2010	(r44743)
@@ -8,7 +8,7 @@
 TOUCH   = @touch@
 RM_F    = @rm_f@
 RM_RF   = @rm_rf@
-PERLDOC = @perldoc@
+PERLDOC_BIN = @perldoc@
 VERSION = @VERSION@@DEVEL@
 
 # long list of .pod files
@@ -41,8 +41,8 @@
 	$(TOUCH) doc-prep
 
 packfile-c.pod: ../src/packfile.c
-#IF(new_perldoc):	$(PERLDOC) -ud packfile-c.pod ../src/packfile.c
-#ELSE:	$(PERLDOC) -u ../src/packfile.c > packfile-c.pod
+#IF(new_perldoc):	$(PERLDOC_BIN) -ud packfile-c.pod ../src/packfile.c
+#ELSE:	$(PERLDOC_BIN) -u ../src/packfile.c > packfile-c.pod
 
 clean:
 	$(RM_F) packfile-c.pod $(POD) doc-prep

Modified: branches/ops_pct/config/gen/makefiles/dynoplibs.in
==============================================================================
--- branches/ops_pct/config/gen/makefiles/dynoplibs.in	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/makefiles/dynoplibs.in	Sun Mar  7 19:33:20 2010	(r44743)
@@ -14,12 +14,12 @@
 LD            = @ld@
 LDFLAGS       = @ldflags@ @ld_debug@ @rpath_blib@ @linkflags@
 LD_LOAD_FLAGS = @ld_load_flags@
-CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@
+CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@ @optimize@
 LIBPARROT     = @libparrot_ldflags@
 
-BUILD_TOOLS_DIR = $(BUILD_DIR)@slash at tools@slash at build
-OPS2C           = $(PERL) -I$(BUILD_DIR)@slash at lib $(BUILD_TOOLS_DIR)@slash at ops2c.pl
-INCLUDES        = -I$(BUILD_DIR)@slash at include -I at build_dir@@slash at src@slash at pmc
+BUILD_TOOLS_DIR = $(BUILD_DIR)/tools/build
+OPS2C           = $(PERL) -I$(BUILD_DIR)/lib $(BUILD_TOOLS_DIR)/ops2c.pl
+INCLUDES        = -I$(BUILD_DIR)/include -I at build_dir@/src/pmc
 LINKARGS        = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) @icu_shared@ @libs@
 
 OPS_TARGETS = \

Modified: branches/ops_pct/config/gen/makefiles/dynpmc.in
==============================================================================
--- branches/ops_pct/config/gen/makefiles/dynpmc.in	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/makefiles/dynpmc.in	Sun Mar  7 19:33:20 2010	(r44743)
@@ -8,19 +8,19 @@
 LOAD_EXT      = @load_ext@
 BUILD_DIR     = @build_dir@
 RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
-INSTALL_DIR   = $(BUILD_DIR)@slash at runtime@slash at parrot@slash at dynext
+INSTALL_DIR   = $(BUILD_DIR)/runtime/parrot/dynext
 O             = @o@
 CC            = @cc@
 LD            = @ld@
 LDFLAGS       = @ldflags@ @ld_debug@ @rpath_blib@
 LD_LOAD_FLAGS = @ld_load_flags@
-CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@
+CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@ @optimize@
 LIBPARROT     = @libparrot_ldflags@
 
-BUILD_TOOLS_DIR = $(BUILD_DIR)@slash at tools@slash at build
-BUILD_LIB_DIR   = $(BUILD_DIR)@slash at blib@slash at lib
-PMC2C           = $(PERL) $(BUILD_TOOLS_DIR)@slash at pmc2c.pl
-INCLUDES        = -I$(BUILD_DIR)@slash at include -I at build_dir@@slash at include@slash at pmc
+BUILD_TOOLS_DIR = $(BUILD_DIR)/tools/build
+BUILD_LIB_DIR   = $(BUILD_DIR)/blib/lib
+PMC2C           = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl
+INCLUDES        = -I$(BUILD_DIR)/include -I at build_dir@/include/pmc
 LINKARGS        = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) @icu_shared@ @libs@
 
 PMC2CD = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --dump

Modified: branches/ops_pct/config/gen/makefiles/root.in
==============================================================================
--- branches/ops_pct/config/gen/makefiles/root.in	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/makefiles/root.in	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 ###############################################################################
@@ -82,7 +82,9 @@
 CC_INC           = @cc_inc@
 C_LIBS           = @libs@
 CC_SHARED        = @cc_shared@
-CFLAGS           = $(CC_INC) @ccflags@ @cc_build_call_frames@ @cc_debug@ @ccwarn@ @cg_flag@ @gc_flag@ @clock_best@ $(CC_SHARED)
+CC_O_OUT         = @cc_o_out@
+CC_WARN          = @ccwarn@
+CFLAGS           = $(CC_INC) @ccflags@ @cc_build_call_frames@ @cc_debug@ @cg_flag@ @gc_flag@ @clock_best@ $(CC_SHARED)
 LINK_DYNAMIC     = @link_dynamic@
 LINK             = @link@
 LINKFLAGS        = @linkflags@ @link_debug@ @ld_debug@
@@ -141,7 +143,8 @@
     editor/Makefile \
     ext/Makefile \
     src/dynoplibs/Makefile \
-    src/dynpmc/Makefile
+    src/dynpmc/Makefile \
+    compilers/imcc/Rules.mak
 
 GEN_CONFIGS = \
     $(INC_DIR)/config.h \
@@ -159,7 +162,7 @@
     $(LIBRARY_DIR)/config.pir \
     src/platform.c \
 #IF(platform_asm):    src/platform_asm.s \
-#IF(has_opengl):    config/gen/call_list/opengl.in \
+#IF(has_opengl):    src/glut_nci_thunks.nci \
 #IF(has_glut):    src/glut_callbacks.c \
     src/core_pmcs.c \
 #IF(has_crypto):    src/dynpmc/md2.pmc \
@@ -178,8 +181,6 @@
 #IF(has_crypto):    t/dynpmc/sha1.t \
 #IF(has_crypto):    t/dynpmc/sha256.t \
 #IF(has_crypto):    t/dynpmc/sha512.t \
-    CFLAGS \
-    compilers/imcc/CFLAGS \
     config_lib.pasm \
     parrot.pc \
     compilers/imcc/imcc.y.flag \
@@ -192,7 +193,6 @@
 	runtime/parrot/include/datatypes.pasm \
 	runtime/parrot/include/iterator.pasm \
 	runtime/parrot/include/call_bits.pasm \
-	runtime/parrot/include/io_thr_msg.pasm \
 	runtime/parrot/include/timer.pasm \
 	runtime/parrot/include/except_types.pasm \
 	runtime/parrot/include/except_severity.pasm \
@@ -227,10 +227,11 @@
     $(GEN_MAKEFILES) \
     ext/Parrot-Embed/Makefile.PL \
     myconfig  \
-    src/call_list.txt \
     MANIFEST.configure.generated \
     .configure_trace.sto \
     .parrot_current_rev \
+#IF(has_opengl):    runtime/parrot/include/opengl_defines.pasm \
+#IF(has_opengl):    runtime/parrot/library/OpenGL_funcs.pir \
     runtime/parrot/include/signal.pasm
 
 
@@ -257,6 +258,7 @@
 GEN_SOURCES = \
     src/core_ops.c \
     src/nci.c \
+    src/glut_nci_thunks.c \
     src/core_ops_switch.c \
     src/parrot_config.c \
     src/null_config.c \
@@ -282,8 +284,6 @@
     $(LIBRARY_DIR)/Getopt/Obj.pbc \
     $(LIBRARY_DIR)/Iter.pbc \
     $(LIBRARY_DIR)/JSON.pbc \
-    $(LIBRARY_DIR)/data_json.pbc \
-    $(LIBRARY_DIR)/Math/Random/mt19937ar.pbc \
     $(LIBRARY_DIR)/Math/Rand.pbc \
     $(LIBRARY_DIR)/MIME/Base64.pbc \
     $(LIBRARY_DIR)/NCI/Utils.pbc \
@@ -376,7 +376,6 @@
         $(INC_DIR)/io.h \
         $(INC_DIR)/op.h \
         $(INC_DIR)/pmc.h \
-        $(INC_DIR)/events.h \
         $(INC_DIR)/gc_api.h \
         $(INC_DIR)/string_funcs.h \
         $(INC_DIR)/misc.h \
@@ -387,7 +386,6 @@
         $(INC_DIR)/nci.h \
         $(INC_DIR)/thread.h \
         $(INC_DIR)/scheduler.h \
-        $(INC_DIR)/tsq.h \
         $(INC_DIR)/longopt.h \
         $(INC_DIR)/oo.h \
         $(INC_DIR)/vtables.h \
@@ -407,10 +405,13 @@
         $(INC_DIR)/core_pmcs.h \
         $(INC_DIR)/compiler.h \
         $(INC_DIR)/cclass.h \
-        include/pmc/pmc_callcontext.h
+        include/pmc/pmc_callcontext.h \
+        include/pmc/pmc_parrotinterpreter.h
 
 # generated list of header files
-GENERAL_H_FILES   = $(NONGEN_HEADERS) $(GEN_HEADERS) @TEMP_cg_h@
+GENERAL_H_FILES   = $(NONGEN_HEADERS) $(GEN_HEADERS) \
+#IF(cg_flag): $(INC_DIR)/oplib/core_ops_cg.h $(INC_DIR)/oplib/core_ops_cgp.h
+
 
 CHARSET_O_FILES   = @TEMP_charset_o@
 CLASS_PMC_FILES   = @TEMP_pmc_classes_pmc@
@@ -446,7 +447,6 @@
     src/dynext$(O) \
     src/embed$(O) \
     src/string/encoding$(O) \
-    src/events$(O) \
     src/exceptions$(O) \
     src/exit$(O) \
     src/extend$(O) \
@@ -475,7 +475,9 @@
     src/misc$(O) \
     src/multidispatch$(O) \
     src/frame_builder$(O) \
-    src/nci$(O) \
+    src/nci/api$(O) \
+    src/nci/core_thunks$(O) \
+    src/nci/extra_thunks$(O) \
     src/oo$(O) \
     src/packfile$(O) \
     src/packout$(O) \
@@ -492,17 +494,15 @@
     src/sub$(O) \
     src/thread$(O) \
     src/runcore/trace$(O) \
-    src/tsq$(O) \
     src/utils$(O) \
     src/vtables$(O) \
     src/warnings$(O) \
-    \
     src/packfile/pf_items$(O) \
-    \
-    @TEMP_cg_o@ \
     @TEMP_atomic_o@ \
     @TEMP_gc_o@ \
 #IF(platform_asm):    src/platform_asm$(O) \
+#IF(cg_flag):     src/ops/core_ops_cg$(O) src/ops/core_ops_cgp$(O) \
+
 
 OPS_FILES = @ops@ $(GEN_OPSFILES)
 
@@ -513,26 +513,28 @@
 ###############################################################################
 
 # Executables
-PARROT              = ./@test_prog@$(EXE)
-MINIPARROT          = ./miniparrot$(EXE)
-DIS                 = ./pbc_disassemble$(EXE)
-PDUMP               = ./pbc_dump$(EXE)
-PBC_MERGE           = ./pbc_merge$(EXE)
-PDB                 = ./parrot_debugger$(EXE)
-PBC_TO_EXE          = ./pbc_to_exe$(EXE)
-PARROT_CONFIG       = ./parrot_config$(EXE)
-PIRC                = ./pirc$(EXE)
-NQP_RX              = ./parrot-nqp$(EXE)
+PARROT              = . at slash@@test_prog@$(EXE)
+MINIPARROT          = . at slash@miniparrot$(EXE)
+DIS                 = . at slash@pbc_disassemble$(EXE)
+PDUMP               = . at slash@pbc_dump$(EXE)
+PBC_MERGE           = . at slash@pbc_merge$(EXE)
+PDB                 = . at slash@parrot_debugger$(EXE)
+PBC_TO_EXE          = . at slash@pbc_to_exe$(EXE)
+PARROT_CONFIG       = . at slash@parrot_config$(EXE)
+PIRC                = . at slash@pirc$(EXE)
+NQP_RX              = . at slash@parrot-nqp$(EXE)
+NCI_THUNK_GEN       = . at slash@parrot_nci_thunk_gen$(EXE)
 
 # Installable executables
-INSTALLABLEPARROT    = ./installable_parrot$(EXE)
-INSTALLABLEDIS       = ./installable_pbc_disassemble$(EXE)
-INSTALLABLEPDUMP     = ./installable_pbc_dump$(EXE)
-INSTALLABLEPBC_MERGE = ./installable_pbc_merge$(EXE)
-INSTALLABLEPBCTOEXE  = ./installable_pbc_to_exe$(EXE)
-INSTALLABLEPDB       = ./installable_parrot_debugger$(EXE)
-INSTALLABLECONFIG    = ./installable_parrot_config$(EXE)
-INSTALLABLENQP       = ./installable_parrot-nqp$(EXE)
+INSTALLABLEPARROT    = . at slash@installable_parrot$(EXE)
+INSTALLABLEDIS       = . at slash@installable_pbc_disassemble$(EXE)
+INSTALLABLEPDUMP     = . at slash@installable_pbc_dump$(EXE)
+INSTALLABLEPBC_MERGE = . at slash@installable_pbc_merge$(EXE)
+INSTALLABLEPBCTOEXE  = . at slash@installable_pbc_to_exe$(EXE)
+INSTALLABLEPDB       = . at slash@installable_parrot_debugger$(EXE)
+INSTALLABLECONFIG    = . at slash@installable_parrot_config$(EXE)
+INSTALLABLENQP       = . at slash@installable_parrot-nqp$(EXE)
+INSTALLABLENCITHUNKGEN = . at slash@installable_parrot_nci_thunk_gen$(EXE)
 
 # Libraries
 LIBPARROT_STATIC    = @blib_dir@/@libparrot_static@
@@ -552,6 +554,7 @@
 DYNEXT_DIR          = runtime/parrot/dynext
 LIBNCI_TEST_SO      = $(DYNEXT_DIR)/libnci_test$(LOAD_EXT)
 LIBGLUTCB_SO        = $(DYNEXT_DIR)/libglutcb$(LOAD_EXT)
+EXTRANCITHUNKS_SO   = $(DYNEXT_DIR)/extra_nci_thunks$(LOAD_EXT)
 
 ###############################################################################
 #
@@ -569,24 +572,27 @@
 
 .SUFFIXES : .c .S .s .pmc .dump $(O) .str .pir .pbc
 
-# Passing an empty argument in @ARGV to cc_flags.pl to indicate where extra -Is
-# (etc) should go. Otherwise it will insert them after the first space, which
-# makes life go horribly wrong if $(CC) contains spaces but can't have -I
-# arguments (etc) injected in the middle.
-# There is probably a better way to do this, but I can't work it out right now.
 .c$(O) : # suffix rule (limited support)
-	@$(PERL) tools/build/cc_flags.pl ./CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
-
-# XXX probably should detect assembler, but right now this is only used on Sparc
+	$(CC) $(CFLAGS) @optimize@ $(CC_WARN) -I$(@D) @cc_o_out@$@ -c $<
 
 .s$(O) : # suffix rule (limited support)
-	@$(PERL) tools/build/cc_flags.pl ./CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
+	$(CC) $(CFLAGS) @optimize@ $(CC_WARN) -I$(@D) @cc_o_out@$@ -c $<
 #UNLESS(win32).S$(O) : # suffix rule (limited support)
-#UNLESS(win32)	@$(PERL) tools/build/cc_flags.pl ./CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
+#UNLESS(win32)	$(CC) $(CFLAGS) @optimize@ $(CC_WARN) -I$(@D) @cc_o_out@$@ -c $<
 
 .pir.pbc : # suffix rule (limited support)
 	$(PARROT) -o $@ $<
 
+# Note: Several rules in this makefile are tagged with a "SUFFIX OVERRIDE"
+# comment; this indicates that we have an explicit compilation rule for
+# that particular C file; this is done so that we override various
+# options for that file - to change optimization levels, or twiddle
+# warnings. Each of those overrides should use the most specific settings
+# possible for that file. When file-specific overrides are added during
+# Configure, the override must be allowed for in this file.
+# These will eventually be automatically generated.
+
+
 ###############################################################################
 #
 # USER TARGETS:
@@ -599,6 +605,7 @@
     corevm \
     docs \
 #IF(has_glut):    $(LIBGLUTCB_SO) \
+    $(EXTRANCITHUNKS_SO) \
     $(DIS) \
     $(PARROT_CONFIG) \
     $(PBC_TO_EXE) \
@@ -610,10 +617,10 @@
     $(PGE_LIB_PBCS) \
     $(PCT_LIB_PBCS) \
     $(JSON_LIB_PBCS) \
+    $(DATA_JSON_LIB_PBCS) \
     $(NQP_LIB_PBCS)
 
 corevm : \
-    flags_dummy \
 	$(GEN_PM_INCLUDES) \
     PARROT_LIBS \
     $(PARROT) \
@@ -633,7 +640,6 @@
 STR_FILES = \
     src/debug.str \
     src/dynext.str \
-    src/events.str \
     src/exceptions.str \
     src/global.str \
     src/global_setup.str \
@@ -648,7 +654,9 @@
     src/library.str \
     src/multidispatch.str \
     src/frame_builder.str \
-    src/nci.str \
+    src/nci/api.str \
+    src/nci/core_thunks.str \
+    src/nci/extra_thunks.str \
     src/packfile.str \
     src/pmc.str \
     src/pmc_freeze.str \
@@ -799,12 +807,8 @@
 
 parrot_utils : $(PDUMP) $(DIS) $(PDB) $(PBC_MERGE) $(PBC_TO_EXE) $(PARROT_CONFIG) src/install_config$(O)
 
-installable: all $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) $(INSTALLABLEPDB) $(INSTALLABLEPBC_MERGE) $(INSTALLABLEPBCTOEXE) $(INSTALLABLECONFIG) $(INSTALLABLENQP)
-
+installable: all $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) $(INSTALLABLEPDB) $(INSTALLABLEPBC_MERGE) $(INSTALLABLEPBCTOEXE) $(INSTALLABLECONFIG) $(INSTALLABLENQP) $(INSTALLABLENCITHUNKGEN)
 
-flags_dummy :
-	@echo "Compiling with:"
-	@$(PERL) tools/build/cc_flags.pl ./CFLAGS echo $(CC) $(CFLAGS) -I$(@D) @cc_o_out@ xx$(O) -c xx.c
 
 runtime/parrot/include/parrotlib.pbc: runtime/parrot/library/parrotlib.pir $(PARROT) $(GEN_PASM_INCLUDES)
 	$(PARROT) -o $@ runtime/parrot/library/parrotlib.pir
@@ -812,7 +816,7 @@
 runtime/parrot/include/config.fpmc : myconfig config_lib.pasm $(MINIPARROT)
 	$(MINIPARROT) config_lib.pasm > $@
 
-$(PARROT) : src/main$(O) $(GEN_HEADERS) $(LIBPARROT) CFLAGS \
+$(PARROT) : src/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
     lib/Parrot/OpLib/core.pm src/parrot_config$(O) \
     $(MINIPARROT)
 	$(LINK) @ld_out@$@ \
@@ -824,6 +828,12 @@
 	$(PARROT) -o pbc_to_exe.pbc tools/dev/pbc_to_exe.pir
 	$(PARROT) pbc_to_exe.pbc pbc_to_exe.pbc
 
+parrot_nci_thunk_gen.pbc : tools/dev/nci_thunk_gen.pir $(DATA_JSON_LIB_PBCS) $(PARROT)
+	$(PARROT) -o parrot_nci_thunk_gen.pbc tools/dev/nci_thunk_gen.pir
+
+$(NCI_THUNK_GEN) : parrot_nci_thunk_gen.pbc $(PBC_TO_EXE)
+	$(PBC_TO_EXE) parrot_nci_thunk_gen.pbc
+
 $(PARROT_CONFIG) : tools/util/parrot-config.pir $(PARROT) $(PBC_TO_EXE)
 	$(PARROT) -o parrot_config.pbc tools/util/parrot-config.pir
 	$(PARROT) pbc_to_exe.pbc parrot_config.pbc
@@ -936,6 +946,9 @@
 $(INSTALLABLEPBCTOEXE) : $(PBC_TO_EXE) src/install_config$(O)
 	$(PBC_TO_EXE) pbc_to_exe.pbc --install
 
+$(INSTALLABLENCITHUNKGEN) : parrot_nci_thunk_gen.pbc $(PBC_TO_EXE) src/install_config$(O)
+	$(PBC_TO_EXE) parrot_nci_thunk_gen.pbc --install
+
 #
 # Parrot Debugger
 #
@@ -1064,9 +1077,6 @@
 runtime/parrot/include/socket.pasm : $(INC_DIR)/io.h $(H2INC)
 	$(PERL) $(H2INC) $(INC_DIR)/io.h $@
 
-runtime/parrot/include/io_thr_msg.pasm : $(INC_DIR)/events.h $(H2INC)
-	$(PERL) $(H2INC) $(INC_DIR)/events.h $@
-
 runtime/parrot/include/hash_key_type.pasm : $(INC_DIR)/hash.h $(H2INC)
 	$(PERL) $(H2INC) $(INC_DIR)/hash.h $@
 
@@ -1139,16 +1149,21 @@
 
 # hello
 hello: test_prep examples/pasm/hello$(EXE)
-	./examples/pasm/hello$(EXE) "from your friendly makefile"
+	. at slash@examples at slash@pasm at slash@hello$(EXE) "from your friendly makefile"
 
 examples/pasm/hello.pbc: examples/pasm/hello.pasm
 	$(PARROT) -o examples/pasm/hello.pbc examples/pasm/hello.pasm
 
-examples/pasm/hello$(O): examples/pasm/hello.pbc
-	$(PARROT) -o examples/pasm/hello$(O) examples/pasm/hello.pbc
-
-examples/pasm/hello$(EXE): examples/pasm/hello$(O)
-	$(MAKE) . EXEC=examples/pasm/hello exec
+# The -o option of parrot did not work with the object file extension ".o"
+# so as work around pbc_to_exe is used and the original commands are only
+# commented out so it can easily switched back.
+#examples/pasm/hello$(O): examples/pasm/hello.pbc
+#	$(PARROT) -o examples/pasm/hello$(O) examples/pasm/hello.pbc
+#
+#examples/pasm/hello$(EXE): examples/pasm/hello$(O)
+#	$(MAKE) . EXEC=examples/pasm/hello exec
+examples/pasm/hello$(EXE): examples/pasm/hello.pbc $(PBC_TO_EXE)
+	$(PBC_TO_EXE) examples/pasm/hello.pbc
 
 
 
@@ -1235,14 +1250,14 @@
         src/exceptions.str \
 	include/pmc/pmc_continuation.h
 
-src/events$(O) : $(PARROT_H_HEADERS) src/events.str
-
 src/thread$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic.h \
         include/pmc/pmc_sub.h \
 	include/pmc/pmc_parrotinterpreter.h
 
+## SUFFIX OVERRIDE - dynloaded files need cc_shared
 src/extend$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/extend.h \
-	include/pmc/pmc_sub.h $(INC_DIR)/extend_vtable.h
+    include/pmc/pmc_sub.h $(INC_DIR)/extend_vtable.h src/extend.c
+	$(CC) $(CFLAGS) @optimize::src/extend.c@ @ccwarn::src/extend.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/extend.c
 
 src/runcore/main$(O) : \
 	src/runcore/main.str \
@@ -1357,8 +1372,6 @@
         $(INC_DIR)/runcore_api.h $(INC_DIR)/runcore_trace.h \
         $(PARROT_H_HEADERS)
 
-src/tsq$(O) : $(PARROT_H_HEADERS)
-
 src/embed$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/embed.h \
         $(INC_DIR)/oplib/ops.h $(INC_DIR)/runcore_api.h \
         compilers/imcc/imc.h \
@@ -1374,12 +1387,23 @@
 
 src/exit$(O) : $(PARROT_H_HEADERS)
 
-src/nci$(O) : src/nci.str \
-        $(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS) \
-        src/frame_builder.h \
-        include/pmc/pmc_managedstruct.h \
-        include/pmc/pmc_nci.h \
-        include/pmc/pmc_pointer.h
+src/nci/api$(O) : src/nci/api.str \
+        $(PARROT_H_HEADERS) \
+        include/pmc/pmc_unmanagedstruct.h \
+        include/pmc/pmc_nci.h
+
+src/nci/core_thunks$(O) : src/nci/core_thunks.str \
+        $(PARROT_H_HEADERS) \
+        include/pmc/pmc_unmanagedstruct.h \
+        include/pmc/pmc_nci.h
+
+## SUFFIX OVERRIDE
+src/nci/extra_thunks$(O) : src/nci/extra_thunks.str \
+    $(PARROT_H_HEADERS) \
+    include/pmc/pmc_unmanagedstruct.h \
+    include/pmc/pmc_nci.h \
+    src/nci/extra_thunks.c
+	$(CC) $(CFLAGS) @optimize::src/nci/extra_thunks.c@ @ccwarn::src/nci/extra_thunks.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/nci/extra_thunks.c
 
 src/frame_builder$(O) : $(PARROT_H_HEADERS) src/frame_builder.h \
         include/pmc/pmc_fixedintegerarray.h \
@@ -1389,12 +1413,11 @@
 
 src/vtables$(O) : $(PARROT_H_HEADERS)
 
+## SUFFIX OVERRIDE
 src/gc/system$(O) : $(PARROT_H_HEADERS)  src/gc/gc_private.h
-src/gc/gc_private.h : $(INC_DIR)/settings.h
+	$(CC) $(CFLAGS) @optimize::src/gc/system.c@ @ccwarn::src/gc/system.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/gc/system.c
 
-src/nci.c : src/call_list.txt $(BUILD_TOOLS_DIR)/nativecall.pl \
-	include/pmc/pmc_nci.h
-	$(PERL) $(BUILD_TOOLS_DIR)/nativecall.pl src/call_list.txt
+src/gc/gc_private.h : $(INC_DIR)/settings.h
 
 src/warnings$(O) : $(PARROT_H_HEADERS)
 
@@ -1402,7 +1425,9 @@
 
 src/utils$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_nci.h
 
+## SUFFIX OVERRIDE
 src/spf_render$(O) : $(PARROT_H_HEADERS) src/spf_render.str
+	$(CC) $(CFLAGS) @optimize::src/spf_render.c@ @ccwarn::src/spf_render.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/spf_render.c
 
 src/spf_vtable$(O) : $(PARROT_H_HEADERS) src/spf_vtable.str
 
@@ -1435,15 +1460,14 @@
 
 src/atomic/gcc_x86$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic/gcc_x86.h
 
-src/ops/core_ops$(O) : src/ops/core_ops.c \
-	include/pmc/pmc_callcontext.h \
-	include/pmc/pmc_continuation.h \
-        include/pmc/pmc_parrotlibrary.h \
-        src/io/io_private.h $(INC_DIR)/dynext.h $(INC_DIR)/embed.h \
-        $(INC_DIR)/oplib/core_ops.h $(INC_DIR)/runcore_api.h
-
 # core_ops depends upon config.h so that it gets updated along with
 # updates to config.h's version numbers
+src/ops/core_ops$(O) : src/ops/core_ops.c \
+    include/pmc/pmc_callcontext.h \
+    include/pmc/pmc_continuation.h \
+    include/pmc/pmc_parrotlibrary.h \
+    src/io/io_private.h $(INC_DIR)/dynext.h $(INC_DIR)/embed.h \
+    $(INC_DIR)/oplib/core_ops.h $(INC_DIR)/runcore_api.h
 
 # .h files are built along with .c
 $(INC_DIR)/oplib/core_ops.h: src/ops/core_ops.c
@@ -1454,8 +1478,10 @@
 	include/pmc/pmc_continuation.h
 	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --core @no_lines_flag@
 
+## SUFFIX OVERRIDE
 src/ops/core_ops_switch$(O) : $(GENERAL_H_FILES) src/ops/core_ops_switch.c \
 	include/pmc/pmc_parrotlibrary.h
+	$(CC) $(CFLAGS) @optimize::src/ops/core_ops_switch.c@ @ccwarn::src/ops/core_ops_switch.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_switch.c
 
 $(INC_DIR)/oplib/core_ops_switch.h : src/ops/core_ops_switch.c
 
@@ -1465,7 +1491,27 @@
 	lib/Parrot/OpTrans/CPrederef.pm
 	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CSwitch --core @no_lines_flag@
 
- at TEMP_cg_c@
+## SUFFIX OVERRIDE
+src/ops/core_ops_cg$(O): $(GENERAL_H_FILES) src/ops/core_ops_cg.c \
+        include/pmc/pmc_parrotlibrary.h
+	$(CC) $(CFLAGS) @optimize::src/ops/core_ops_cg.c@ @ccwarn::src/ops/core_ops_cg.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_cg.c
+
+## SUFFIX OVERRIDE
+src/ops/core_ops_cgp$(O): $(GENERAL_H_FILES) src/ops/core_ops_cgp.c \
+        include/pmc/pmc_parrotlibrary.h
+	$(CC) $(CFLAGS) @optimize::src/ops/core_ops_cgp.c@ @ccwarn::src/ops/core_ops_cgp.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_cgp.c
+
+src/runcore/cores.c: $(INC_DIR)/oplib/core_ops_cgp.h
+
+$(INC_DIR)/oplib/core_ops_cg.h: src/ops/core_ops_cg.c
+
+src/ops/core_ops_cg.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGoto.pm lib/Parrot/OpLib/core.pm
+	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGoto --core
+
+$(INC_DIR)/oplib/core_ops_cgp.h: src/ops/core_ops_cgp.c
+
+src/ops/core_ops_cgp.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGP.pm lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/CPrederef.pm
+	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGP --core
 
 @TEMP_gc_c@
 
@@ -1796,13 +1842,14 @@
     ext-clean \
 #UNLESS(win32):    cover-clean \
     editor-clean
-	@TEMP_cg_r@
+	$(RM_F) $(INC_DIR)/oplib/core_ops_cg.h src/ops/core_ops_cg.c \
+    $(INC_DIR)/oplib/core_ops_cgp.h src/ops/core_ops_cgp.c
 	$(RM_F) chartypes "*.s" "*~"
 	$(RM_F) $(FLUID_FILES_1)
 	$(RM_F) $(FLUID_FILES_2)
 	$(RM_RF) lib/Parrot/OpLib
 	$(RM_F) $(NQP_CLEANUPS) $(PGE_CLEANUPS) $(TGE_CLEANUPS) $(JSON_CLEANUPS)
-	$(RM_F) $(PIRC_CLEANUPS) $(PCT_CLEANUPS)
+	$(RM_F) $(PIRC_CLEANUPS) $(PCT_CLEANUPS) $(DATA_JSON_CLEANUPS)
 	$(RM_F) $(GEN_PASM_INCLUDES) $(GEN_PM_INCLUDES)
 
 prog-clean :
@@ -1819,7 +1866,9 @@
     $(INSTALLABLEPDB) \
     $(INSTALLABLECONFIG) \
     $(INSTALLABLENQP) \
+    $(INSTALLABLENCITHUNKGEN) \
     pbc_to_exe.pbc pbc_to_exe.c pbc_to_exe$(O) pbc_to_exe$(EXE) \
+    $(NCI_THUNK_GEN) parrot_nci_thunk_gen.c parrot_nci_thunk_gen$(O) parrot_nci_thunk_gen.pbc \
     parrot_config$(EXE) parrot_config.c parrot_config$(O) parrot_config.pbc \
     compilers/imcc/main$(O) \
     $(PDUMP) src/pbc_dump$(O) src/packdump$(O) \
@@ -1834,7 +1883,10 @@
     src/nci_test$(O) \
     $(LIBNCI_TEST_SO) \
     src/glut_callbacks$(O) \
+    src/glut_nci_thunks$(O) \
     $(LIBGLUTCB_SO) \
+    src/extra_nci_thunks$(O) \
+    $(EXTRANCITHUNKS_SO) \
     install_config.fpmc
 	$(PERL) $(BUILD_TOOLS_DIR)/c2str.pl --init
 	$(RM_F) \
@@ -1872,6 +1924,8 @@
     $(LIBNCI_TEST_SO) \
     src/glut_callbacks$(O) \
     $(LIBGLUTCB_SO) \
+    src/extra_nci_thunks$(O) \
+    $(EXTRANCITHUNKS_SO) \
     $(LIBPARROT_STATIC) \
     $(LIBPARROT_SHARED)
 
@@ -2390,7 +2444,9 @@
 ###### OS depend targets ##########
 
 # for use by t/pmc/nci.t
-src/nci_test$(O): $(PARROT_H_HEADERS)
+## SUFFIX OVERRIDE - dynloaded files need cc_shared
+src/nci_test$(O): $(PARROT_H_HEADERS) src/nci_test.c
+	$(CC) $(CFLAGS) @optimize::src/nci_test.c@ @ccwarn::src/nci_test.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/nci_test.c
 
 $(LIBNCI_TEST_SO): src/nci_test$(O) $(LIBPARROT)
 	$(LD) $(LD_LOAD_FLAGS) @ncilib_link_extra@ $(LDFLAGS) \
@@ -2399,11 +2455,33 @@
 # for use by runtime/parrot/library/OpenGL.pir
 src/glut_callbacks$(O): $(GENERAL_H_FILES)
 
-$(LIBGLUTCB_SO): $(LIBPARROT) src/glut_callbacks$(O)
+src/glut_nci_thunks.c: $(NCI_THUNK_GEN)
+	$(NCI_THUNK_GEN) \
+	    --loader-name=Parrot_glut_nci_loader \
+	    --loader-storage-class=PARROT_DYNEXT_EXPORT \
+	    --output=src/glut_nci_thunks.c \
+	    <src/glut_nci_thunks.nci
+
+src/glut_nci_thunks$(O): $(GENERAL_H_FILES)
+
+$(LIBGLUTCB_SO): $(LIBPARROT) src/glut_callbacks$(O) src/glut_nci_thunks$(O)
 	$(LD) $(LD_LOAD_FLAGS) $(LDFLAGS) \
-    @ld_out@$@ src/glut_callbacks$(O) \
+    @ld_out@$@ src/glut_callbacks$(O) src/glut_nci_thunks$(O) \
     $(ALL_PARROT_LIBS) @opengl_lib@
 
+src/extra_nci_thunks.c : src/nci/extra_thunks.nci $(NCI_THUNK_GEN)
+	$(NCI_THUNK_GEN) --dynext --no-warn-dups \
+	    --output=src/extra_nci_thunks.c <src/nci/extra_thunks.nci
+
+## SUFFIX OVERRIDE
+src/extra_nci_thunks$(O) : $(GENERAL_H_FILES) src/extra_nci_thunks.c
+	$(CC) $(CFLAGS) @optimize::src/extra_nci_thunks.c@ @ccwarn::src/extra_nci_thunks.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/extra_nci_thunks.c
+
+$(EXTRANCITHUNKS_SO) : $(LIBPARROT) src/extra_nci_thunks$(O)
+	$(LD) $(LD_LOAD_FLAGS) $(LDFLAGS) \
+    @ld_out@$@ src/extra_nci_thunks$(O) \
+    $(ALL_PARROT_LIBS)
+
 # emacs etags
 # this needs exuberant-ctags
 

Modified: branches/ops_pct/config/gen/opengl.pm
==============================================================================
--- branches/ops_pct/config/gen/opengl.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/opengl.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -15,7 +15,7 @@
 
 =item F<runtime/parrot/library/OpenGL_funcs.pir>
 
-=item F<config/gen/call_list/opengl.in>
+=item F<src/glut_nci_thunks.nci>
 
 =item F<src/glut_callbacks.c>
 
@@ -436,7 +436,7 @@
 
 my $MACRO_FILE = 'runtime/parrot/include/opengl_defines.pasm';
 my $FUNCS_FILE = 'runtime/parrot/library/OpenGL_funcs.pir';
-my $SIGS_FILE  = 'config/gen/call_list/opengl.in';
+my $SIGS_FILE  = 'src/glut_nci_thunks.nci';
 my $C_FILE     = 'src/glut_callbacks.c';
 
 
@@ -812,6 +812,8 @@
 .sub _glutcb_func_list
     .local pmc glutcb_funcs
     glutcb_funcs = new 'ResizableStringArray'
+    push glutcb_funcs, 'Parrot_glut_nci_loader'
+    push glutcb_funcs, 'vJ'
     push glutcb_funcs, 'glutcbCloseFunc'
     push glutcb_funcs, 'vJP'
     push glutcb_funcs, 'glutcbDisplayFunc'

Modified: branches/ops_pct/config/gen/platform/generic/env.c
==============================================================================
--- branches/ops_pct/config/gen/platform/generic/env.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/platform/generic/env.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,6 +1,6 @@
 /*
  * $Id$
- * Copyright (C) 2004-2006, Parrot Foundation.
+ * Copyright (C) 2004-2010, Parrot Foundation.
  */
 
 /*
@@ -26,7 +26,9 @@
 
 /*
 
-=item C<void Parrot_setenv(const char *name, const char *value)>
+=item C<void Parrot_setenv(PARROT_INTERP, STRING *str_name, STRING *str_value)>
+
+Set up Environment vars
 
 =cut
 
@@ -61,7 +63,9 @@
 
 /*
 
-=item C<void Parrot_unsetenv(const char *name)>
+=item C<void Parrot_unsetenv(PARROT_INTERP, STRING *str_name)>
+
+UnSet Environment vars
 
 =cut
 
@@ -81,7 +85,9 @@
 
 /*
 
-=item C<char * Parrot_getenv(const char *name, int *free_it)>
+=item C<char * Parrot_getenv(PARROT_INTERP, STRING *str_name)>
+
+Get Environment vars
 
 =cut
 

Modified: branches/ops_pct/config/gen/platform/generic/exec.c
==============================================================================
--- branches/ops_pct/config/gen/platform/generic/exec.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/platform/generic/exec.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -106,7 +106,7 @@
         int status, i;
         STRING *s;
         char   *cmd;
-        char  **argv = mem_allocate_n_typed((len+1), char*);
+        char  **argv = mem_gc_allocate_n_typed(interp, (len+1), char*);
 
         for (i = 0; i < len; ++i) {
             s = VTABLE_get_string_keyed_int(interp, cmdargs, i);

Modified: branches/ops_pct/config/gen/platform/generic/memexec.c
==============================================================================
--- branches/ops_pct/config/gen/platform/generic/memexec.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/platform/generic/memexec.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,6 +1,6 @@
 /*
  * $Id$
- * Copyright (C) 2004-2006, Parrot Foundation.
+ * Copyright (C) 2004-2010, Parrot Foundation.
  */
 
 /*
@@ -59,7 +59,7 @@
 
 /*
 
-=item C<void mem_free_executable(void *p, size_t)>
+=item C<void mem_free_executable(void *p, size_t size)>
 
 Free a buffer allocated with mem_alloc_executable().
 
@@ -81,7 +81,8 @@
 
 /*
 
-=item C<void * mem_realloc_executable(void* oldp, size_t oldsize, size_t newsize)>
+=item C<void * mem_realloc_executable(void* oldp, size_t oldsize, size_t
+newsize)>
 
 Reallocate executable memory.
 Rounds up to page size because the whole page will be marked as executable.

Modified: branches/ops_pct/config/gen/platform/openbsd/memexec.c
==============================================================================
--- branches/ops_pct/config/gen/platform/openbsd/memexec.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/platform/openbsd/memexec.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,6 +1,6 @@
 /*
  * $Id$
- * Copyright (C) 2004-2006, Parrot Foundation.
+ * Copyright (C) 2004-2010, Parrot Foundation.
  */
 
 /*
@@ -65,7 +65,8 @@
 
 /*
 
-=item C<void * mem_realloc_executable(void* oldp, size_t oldsize, size_t newsize)>
+=item C<void * mem_realloc_executable(void* oldp, size_t oldsize, size_t
+newsize)>
 
 Reallocate executable memory
 Round up to page size because the whole page will be marked as executable

Modified: branches/ops_pct/config/gen/platform/platform_interface.h
==============================================================================
--- branches/ops_pct/config/gen/platform/platform_interface.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/gen/platform/platform_interface.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -44,9 +44,9 @@
 void mem_free_executable(void *, size_t);
 void *mem_realloc_executable(void *, size_t, size_t);
 #else
-#  define mem_alloc_executable mem_sys_allocate
-#  define mem_free_executable(a, b) mem_sys_free(a)
-#  define mem_realloc_executable(a, b, c) mem_sys_realloc((a), (c))
+#  define mem_alloc_executable mem_internal_allocate
+#  define mem_free_executable(a, b) mem_internal_free(a)
+#  define mem_realloc_executable(a, b, c) mem_internal_realloc((a), (c))
 #endif
 
 /*

Modified: branches/ops_pct/config/init/hints/darwin.pm
==============================================================================
--- branches/ops_pct/config/init/hints/darwin.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/init/hints/darwin.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -90,8 +90,7 @@
         rpath                  => "-L",
         libparrot_soname       => "-install_name "
             . $lib_dir
-            . $conf->data->get('slash')
-            . "libparrot"
+            . '/libparrot'
             . $conf->data->get('share_ext')
     );
 }

Modified: branches/ops_pct/config/init/hints/mswin32.pm
==============================================================================
--- branches/ops_pct/config/init/hints/mswin32.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/init/hints/mswin32.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -101,7 +101,6 @@
             ar_flags            => '',
             ar_out              => '-out:',
             slash               => '\\',
-            blib_dir            => 'blib\\lib',
             ccflags             => $ccflags,
             ccwarn              => $ccwarn,
             has_dynamic_linking => 1,
@@ -153,7 +152,6 @@
             ar_flags            => '',
             ar_out              => '-out:',
             slash               => '\\',
-            blib_dir            => 'blib\\lib',
             ccflags             => $ccflags,
             ccwarn              => '',
             has_dynamic_linking => 1
@@ -200,7 +198,6 @@
             ar_out   => '',
             ar_extra => '',
             slash    => '\\',
-            blib_dir => 'blib\\lib',
             make_and => "\n\t",
         );
     }
@@ -261,7 +258,6 @@
             sym_export          => '__declspec(dllexport)',
             sym_import          => '__declspec(dllimport)',
             slash               => '\\',
-            blib_dir            => 'blib\\lib',
         );
     }
 }

Modified: branches/ops_pct/config/init/hints/openbsd.pm
==============================================================================
--- branches/ops_pct/config/init/hints/openbsd.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/init/hints/openbsd.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -21,10 +21,17 @@
     if ( $libs !~ /-lpthread\b/ ) {
         $libs .= ' -lpthread';
     }
+
+    my $ldflags = $conf->data->get('ldflags');
+    if ( $ldflags !~ m|-L/usr/local/lib\b| ) {
+        $ldflags .= ' -L/usr/local/lib';
+    }
+
     $conf->data->set(
-        libs  => $libs,
-        link  => 'g++',
-        rpath => '-Wl,-R',
+        ldflags => $ldflags,
+        libs    => $libs,
+        link    => 'g++',
+        rpath   => '-Wl,-R',
 
         has_dynamic_linking    => 1,
         parrot_is_shared       => 1,

Modified: branches/ops_pct/config/init/optimize.pm
==============================================================================
--- branches/ops_pct/config/init/optimize.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/init/optimize.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2005, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -21,10 +21,10 @@
 
 sub _init {
     my $self = shift;
-    my %data;
-    $data{description} = q{Enable optimization};
-    $data{result}      = q{};
-    return \%data;
+    return {
+        'description', 'Enable optimization',
+        'result',      '',
+    };
 }
 
 our $verbose;
@@ -41,41 +41,53 @@
     # A plain --optimize means use perl5's $Config{optimize}.  If an argument
     # is given, however, use that instead.
     my $optimize = $conf->options->get('optimize');
-    if ( defined $optimize ) {
-        $self->set_result('yes');
 
-        # disable debug flags
-        $conf->data->set( cc_debug => '' );
-        $conf->data->add( ' ', ccflags => "-DDISABLE_GC_DEBUG=1 -DNDEBUG" );
-        if ( $optimize eq "1" ) {
-
-            # use perl5's value
-            # gcc 4.1 doesn't like -mcpu=xx, i.e. it's deprecated
-            my $opts = $conf->data->get('optimize_provisional');
-            my $gccversion = $conf->data->get( 'gccversion' );
-            my $arch_opt = 'cpu';
-            if ( defined $gccversion and $gccversion > 3.3 ) {
-                $arch_opt = 'arch';
-            }
-            $opts =~ s/-mcpu=/-m$arch_opt=/;
-            $conf->data->add( ' ', ccflags => $opts );
-            print "opts: ", $opts, "\n" if $verbose;
-
-            # record what optimization was enabled
-            $conf->data->set( optimize => $opts );
-        }
-        else {
+    if (! defined $optimize) {
+        $self->set_result('no');
+        print "(none requested) " if $conf->options->get('verbose');
+        return 1;
+    }
 
-            # use what was passed to --optimize on the CLI
-            $conf->data->add( ' ', ccflags => $optimize );
+    $self->set_result('yes');
+    my $gccversion = $conf->data->get( 'gccversion' );
 
-            # record what optimization was enabled
-            $conf->data->set( optimize => $optimize );
+    my $options;
+    if ( $optimize eq "1" ) {
+        # start with perl5's flags ...
+        $options = $conf->data->get('optimize_provisional');
+
+        # ... but gcc 4.1 doesn't like -mcpu=xx, i.e. it's deprecated
+        if ( defined $gccversion and $gccversion > 3.3 ) {
+            $options =~ s/-mcpu=/-march=/;
         }
     }
     else {
-        $self->set_result('no');
-        print "(none requested) " if $conf->options->get('verbose');
+        # use the command line verbatim
+        $options = $optimize;
+    }
+
+    # save the options, however we got them.
+    $conf->data->set( optimize => $options );
+    print "optimize options: ", $options, "\n" if $verbose;
+
+    # disable debug flags.
+    $conf->data->set( cc_debug => '' );
+    $conf->data->add( ' ', ccflags => "-DDISABLE_GC_DEBUG=1 -DNDEBUG" );
+
+    # per file overrides - not every compiler can optimize every file.
+
+    # The src/ops/core_ops*.c files are challenging to optimize.
+    # gcc can usually handle it, but don't assume any other compilers can,
+    # until there is specific evidence otherwise.
+    if ( ! defined($gccversion)) {
+        $conf->data->set('optimize::src/ops/core_ops_cg.c','');
+        $conf->data->set('optimize::src/ops/core_ops_cgp.c','');
+        $conf->data->set('optimize::src/ops/core_ops_switch.c','');
+    }
+
+    # TT #405
+    if ($conf->data->get('cpuarch') eq 'amd64') {
+        $conf->data->set('optimize::src/gc/system.c','');
     }
 
     return 1;

Modified: branches/ops_pct/config/inter/charset.pm
==============================================================================
--- branches/ops_pct/config/inter/charset.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/inter/charset.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -75,8 +75,7 @@
     }
 
     # build list of libraries for link line in Makefile
-    my $slash = $conf->data->get('slash');
-    $TEMP_charset_o =~ s/^| / src${slash}string${slash}charset${slash}/g;
+    $TEMP_charset_o =~ s{^| }{ src/string/charset/}g;
 
     $conf->data->set(
         charset            => $charset_list,

Modified: branches/ops_pct/config/inter/encoding.pm
==============================================================================
--- branches/ops_pct/config/inter/encoding.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/inter/encoding.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -75,8 +75,7 @@
     }
 
     # build list of libraries for link line in Makefile
-    my $slash = $conf->data->get('slash');
-    $TEMP_encoding_o =~ s/^| / src${slash}string${slash}encoding${slash}/g;
+    $TEMP_encoding_o =~ s{^| }{ src/string/encoding/}g;
 
     $conf->data->set(
         encoding            => $encoding_list,

Modified: branches/ops_pct/config/inter/libparrot.pm
==============================================================================
--- branches/ops_pct/config/inter/libparrot.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/config/inter/libparrot.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -105,7 +105,7 @@
                                      && $conf->data->get('rpath') )
         ? $conf->data->get('rpath')
             . $conf->data->get('build_dir')
-            . $conf->data->get('slash')
+            . '/'
             . $conf->data->get('blib_dir')
         : ''
     );
@@ -144,7 +144,7 @@
         $conf->data->set(libparrot_linkflags =>
         '-L'
         . $conf->data->get('build_dir')
-        . $conf->data->get('slash')
+        . '/'
         . $conf->data->get('blib_dir')
         . ' -lparrot'
         );

Modified: branches/ops_pct/docs/embed.pod
==============================================================================
--- branches/ops_pct/docs/embed.pod	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/docs/embed.pod	Sun Mar  7 19:33:20 2010	(r44743)
@@ -84,21 +84,7 @@
 
 =head2 Type signatures
 
-These are used with the Parrot_call_sub family of functions.
-
-=over 4
-
-=item v - void (return only)
-
-=item I - integer (return or argument)
-
-=item N - float (return or argument)
-
-=item S - string (return or argument)
-
-=item P - PMC (return or argument)
-
-=back
+    TODO: Write about signature strings
 
 =head2 Interpreter initialization and destruction
 
@@ -354,14 +340,6 @@
 with return values are passed as references in the varargs list, after all
 arguments.
 
-=item [DEPRECATED] C<void *Parrot_call_sub(PARROT_INTERP, Parrot_PMC sub, const_char *signature)>
-
-Call a Parrot subroutine that returns a pointer using the supplied signature.
-
-=item [DEPRECATED] C<Parrot_Int Parrot_call_sub_ret_int(PARROT_INTERP, Parrot_PMC sub, const_char *signature)>
-
-Call a Parrot subroutine that returns an integer using the supplied signature.
-
 =back
 
 =head2 Objects
@@ -504,7 +482,7 @@
         sub = Parrot_find_global_cur(interp, pstr);
 
         /* run foo(), which returns nothing */
-        Parrot_call_sub(interp, sub, "v");
+	Parrot_ext_call(interp, sub, "->");
 
         Parrot_destroy(interp);
 
@@ -601,10 +579,6 @@
 
 =item C<Parrot_ext_call>
 
-=item [DEPRECATED] C<Parrot_call_sub>
-
-=item [DEPRECATED] C<Parrot_call_sub_ret_int>
-
 =item C<Parrot_char_digit_value>
 
 =item C<Parrot_charset_c_name>
@@ -1053,46 +1027,6 @@
 
 =item C<Parrot_PMC_assign_string_native>
 
-=item C<Parrot_PMC_bitwise_and>
-
-=item C<Parrot_PMC_bitwise_and_int>
-
-=item C<Parrot_PMC_bitwise_ands>
-
-=item C<Parrot_PMC_bitwise_ands_str>
-
-=item C<Parrot_PMC_bitwise_lsr>
-
-=item C<Parrot_PMC_bitwise_lsr_int>
-
-=item C<Parrot_PMC_bitwise_not>
-
-=item C<Parrot_PMC_bitwise_nots>
-
-=item C<Parrot_PMC_bitwise_or>
-
-=item C<Parrot_PMC_bitwise_or_int>
-
-=item C<Parrot_PMC_bitwise_ors>
-
-=item C<Parrot_PMC_bitwise_ors_str>
-
-=item C<Parrot_PMC_bitwise_shl>
-
-=item C<Parrot_PMC_bitwise_shl_int>
-
-=item C<Parrot_PMC_bitwise_shr>
-
-=item C<Parrot_PMC_bitwise_shr_int>
-
-=item C<Parrot_PMC_bitwise_xor>
-
-=item C<Parrot_PMC_bitwise_xor_int>
-
-=item C<Parrot_PMC_bitwise_xors>
-
-=item C<Parrot_PMC_bitwise_xors_str>
-
 =item C<Parrot_PMC_can>
 
 =item C<Parrot_PMC_clone>
@@ -1163,8 +1097,6 @@
 
 =item C<Parrot_PMC_get_attr_str>
 
-=item C<Parrot_PMC_get_bignum>
-
 =item C<Parrot_PMC_get_bool>
 
 =item C<Parrot_PMC_get_class>
@@ -1253,46 +1185,6 @@
 
 =item C<Parrot_PMC_i_add_int>
 
-=item C<Parrot_PMC_i_bitwise_and>
-
-=item C<Parrot_PMC_i_bitwise_and_int>
-
-=item C<Parrot_PMC_i_bitwise_ands>
-
-=item C<Parrot_PMC_i_bitwise_ands_str>
-
-=item C<Parrot_PMC_i_bitwise_lsr>
-
-=item C<Parrot_PMC_i_bitwise_lsr_int>
-
-=item C<Parrot_PMC_i_bitwise_not>
-
-=item C<Parrot_PMC_i_bitwise_nots>
-
-=item C<Parrot_PMC_i_bitwise_or>
-
-=item C<Parrot_PMC_i_bitwise_or_int>
-
-=item C<Parrot_PMC_i_bitwise_ors>
-
-=item C<Parrot_PMC_i_bitwise_ors_str>
-
-=item C<Parrot_PMC_i_bitwise_shl>
-
-=item C<Parrot_PMC_i_bitwise_shl_int>
-
-=item C<Parrot_PMC_i_bitwise_shr>
-
-=item C<Parrot_PMC_i_bitwise_shr_int>
-
-=item C<Parrot_PMC_i_bitwise_xor>
-
-=item C<Parrot_PMC_i_bitwise_xor_int>
-
-=item C<Parrot_PMC_i_bitwise_xors>
-
-=item C<Parrot_PMC_i_bitwise_xors_str>
-
 =item C<Parrot_PMC_i_concatenate>
 
 =item C<Parrot_PMC_i_concatenate_str>
@@ -1661,14 +1553,6 @@
 
 =item C<Parrot_str_append>
 
-=item C<Parrot_str_bitwise_and>
-
-=item C<Parrot_str_bitwise_not>
-
-=item C<Parrot_str_bitwise_or>
-
-=item C<Parrot_str_bitwise_xor>
-
 =item C<Parrot_str_boolean>
 
 =item C<Parrot_str_byte_length>
@@ -1807,7 +1691,7 @@
 
 =item C<Parrot_warn>
 
-=item C<PMC_is_null>
+=item C<Parrot_pmc_is_null>
 
 =item C<pmc_new>
 

Modified: branches/ops_pct/docs/parrothist.pod
==============================================================================
--- branches/ops_pct/docs/parrothist.pod	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/docs/parrothist.pod	Sun Mar  7 19:33:20 2010	(r44743)
@@ -103,5 +103,5 @@
  Gerd        1.9.0          2009-Dec-15     "Blue-fronted Amazon"
 
  chromatic   2.0.0 *        2010-Jan-19     "Inevitable"
-
+ darbelo     2.1.0          2010-Feb-16     "As Scheduled"
 =cut

Modified: branches/ops_pct/docs/pdds/draft/pdd06_pasm.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd06_pasm.pod	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/docs/pdds/draft/pdd06_pasm.pod	Sun Mar  7 19:33:20 2010	(r44743)
@@ -989,8 +989,7 @@
 "Perl5", "Perl6", "Perl5RE", "Perl6RE", "Python", "Ruby"... you get the
 picture.
 
-Parrot knows of a "PASM1" compiler, i.e. a one statement PASM compiler
-implemented as PDB_eval. Imcc registers "PASM" and "PIR" compilers.
+Imcc registers "PASM" and "PIR" compilers automatically.
 
 This is a high-level op, with the assumption that the resulting sub will be
 called. It's the equivalent of perl 5's string eval, except for the actual

Modified: branches/ops_pct/docs/pdds/draft/pdd11_extending.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd11_extending.pod	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/docs/pdds/draft/pdd11_extending.pod	Sun Mar  7 19:33:20 2010	(r44743)
@@ -275,11 +275,7 @@
 
 =over 4
 
-=item C<Parrot_call_sub(interp, Parrot_PMC sub, Parrot_Int argcount, ...)>
-
-Calls a Parrot subroutine, with C<argcount> PMC parameters. This function sets
-up Parrot's registers in line with the Parrot calling conventions; see
-L<pdd03_calling_conventions.pod> for more details.
+    TODO: Add new call functions here
 
 =back
 

Modified: branches/ops_pct/docs/pdds/pdd17_pmc.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd17_pmc.pod	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/docs/pdds/pdd17_pmc.pod	Sun Mar  7 19:33:20 2010	(r44743)
@@ -628,12 +628,6 @@
 
 Return the native floating-point value of the PMC.
 
-=item get_bignum
-
-  PMC* get_bignum(INTERP, PMC *self)
-
-Return the extended precision numeric value of the PMC as a new bignum PMC.
-
 =item get_string
 
   STRING* get_string(INTERP, PMC *self)

Modified: branches/ops_pct/docs/pdds/pdd28_strings.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd28_strings.pod	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/docs/pdds/pdd28_strings.pod	Sun Mar  7 19:33:20 2010	(r44743)
@@ -666,10 +666,6 @@
 
 Return the floating-point representation of the string.
 
-=item get_bignum
-
-Return the big number representation of the string.
-
 =item get_string
 
 Return the string value of the String PMC.

Modified: branches/ops_pct/docs/project/release_manager_guide.pod
==============================================================================
--- branches/ops_pct/docs/project/release_manager_guide.pod	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/docs/project/release_manager_guide.pod	Sun Mar  7 19:33:20 2010	(r44743)
@@ -393,9 +393,11 @@
 visible at
 L<http://www.google.com/calendar/render?cid=ldhctdamsgfg5a1cord52po9h8@group.calendar.google.com>.
 
- - Feb 16, 2010      - 2.1  - darbelo
- - Mar 16, 2010      - 2.2  - cotto
- - Apr 20, 2010      - 2.3* - gerd
+ - Mar 16, 2010 - 2.2  - cotto
+ - Apr 20, 2010 - 2.3* - gerd
+ - May 18, 2010 - 2.4  - whiteknight
+ - Jun 15, 2010 - 2.5  - gerd
+ - Jul 20, 2010 - 2.6* - coke
 
 =cut
 

Modified: branches/ops_pct/docs/tests.pod
==============================================================================
--- branches/ops_pct/docs/tests.pod	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/docs/tests.pod	Sun Mar  7 19:33:20 2010	(r44743)
@@ -7,16 +7,16 @@
 
 =head1 A basic guide to writing and running tests for Parrot
 
-This is quick and dirty pointer to how the Parrot test suite is executed and
-to how new tests for Parrot should be written.
-The testing system is liable to change in the future, but tests written
-following the guidelines below should be easy to port into a new test suite.
+This is quick and dirty primer on to how the Parrot test suite is executed and
+to how new tests for Parrot should be written.  The testing system is liable to
+change in the future, but tests written following the guidelines below should be
+easy to port into a new test suite.
 
 =head1 How to test parrot
 
-The easy way to test parrot is running C<make test>. If you have
-updated your code recently and tests began failing, go for a C<make
-realclean> and recompile parrot before complaining.
+The easy way to test parrot is running C<make test>. If you have updated your
+code recently and tests began failing, go for a C<make realclean> and recompile
+parrot before complaining.
 
 C<make languages-test> runs the test suite for most language implementations
 in the languages directory.
@@ -26,41 +26,47 @@
 Parrot has a status page with smoke test results at
 L<http://smolder.plusthree.com/app/public_projects/details/8>.
 
-You can supply new tests results by just running C<make smoke>. 
-It will run the same tests as C<make test> would, but will upload
-the test results to the website.
+You can supply new tests results by just running C<make smoke>.  It will run the
+same tests as C<make test> would, but will upload the test results to the
+website.
 
 =head1 Location of the test files
 
 The parrot test files, the F<*.t> files, can be found in the F<t> directory.
-A quick overview over the subdirs in F<t> can be found in F<t/README>. 
+A quick overview over the subdirs in F<t> can be found in F<t/README>.
 
 The language implementations usually have their test files in F<languages/*/t>.
 
-New tests should be added to an existing F<*.t> file.
-If a previously untested feature is tested,
-it might also make sense to create a new F<*.t> file.
+New tests should be added to an existing F<*.t> file.  If a previously untested
+feature is tested, it might also make sense to create a new F<*.t> file. You
+may also see tests named like foo-old.t, which are Perl tests that are in the
+process of being translated to PIR.
 
 =head1 How to write a test
 
 Test scripts must emit text that conforms to the C<Test Anything Protocol>.
-Test scripts are currently usually written in Perl 5 or PIR.
-The Perl 5 module C<Parrot::Test>
-and the PIR module C<Test;More> help with writing tests.
+Test scripts are currently usually written in PIR or Perl 5.  The Perl 5 module
+C<Parrot::Test> and the PIR module C<Test;More> help with writing tests.
+Writing tests in PIR is preferred, but there are some cases where the
+proper framework is not available. If you can, write your tests in PIR.
 
 The testing framework needs to know how many tests it should expect.  So the
 number of planned tests needs to be incremented when adding a new test. This
 is done near the top of a test file, in a line that looks like:
 
+  plan(42)
+
+in PIR tests and
+
   use Parrot::Test tests => 8;
 
-for Perl 5 based test scripts.
+for Perl 5 test scripts.
 
 =head2 Testing Parrot Assembler
 
 PASM tests are mostly used for testing ops.  Appropriate test files for basic
-ops are F<t/op/*.t>.  Polymorphic Containers are tested in F<t/pmc/*.t>.  Add the
-new test like this:
+ops are F<t/op/*.t>.  Polymorphic Containers are tested in F<t/pmc/*.t>.  Add
+the new test like this:
 
     pasm_output_is(<<'CODE', <<'OUTPUT', "name for test");
         *** a big chunk of assembler, eg:

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

Modified: branches/ops_pct/examples/c/pbc_info.c
==============================================================================
--- branches/ops_pct/examples/c/pbc_info.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/c/pbc_info.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2003, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -27,6 +27,8 @@
 #include "parrot/embed.h"
 
 /*
+=item C<static INTVAL iter(PARROT_INTERP, PackFile_Segment *seg, void
+*user_data)>
 
 =item C<static INTVAL iter(PARROT_INTERP, PackFile_Segment *seg, void *user_data)>
 

Modified: branches/ops_pct/examples/embed/cotorra.c
==============================================================================
--- branches/ops_pct/examples/embed/cotorra.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/embed/cotorra.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -203,7 +203,7 @@
         Parrot_String compiler = create_string(interp, "PIR");
         Parrot_String errstr;
         Parrot_PMC code = Parrot_compile_string(interp, compiler, exec, &errstr);
-        void *discard = Parrot_call_sub(interp, code, "v");
+        Parrot_ext_call(interp, code, "->");
         return 0;
     }
 
@@ -224,8 +224,7 @@
         Parrot_PMC parrotns = Parrot_PMC_get_pmc_strkey(interp, rootns, parrotname);
         Parrot_String name = create_string(interp, stname);
         Parrot_PMC start = Parrot_PMC_get_pmc_strkey(interp, parrotns, name);
-        void *discard;
-        discard = Parrot_call_sub(interp, start, "v");
+        Parrot_ext_call(interp, start, "->");
     }
     else {
         Parrot_runcode(interp, argc - i, argv + i);

Modified: branches/ops_pct/examples/languages/abc/t/01-tests.t
==============================================================================
--- branches/ops_pct/examples/languages/abc/t/01-tests.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/languages/abc/t/01-tests.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -79,7 +79,7 @@
 # calculate total number of tests
 my $numtests = 0;
 foreach my $f (@test_files) {
-    open my( $TEST_FILE ), $f;
+    open my $TEST_FILE, '<', $f;
 
     # for each line in the given files if it's not a comment line
     # or an empty line, the it's a test
@@ -91,7 +91,7 @@
 
 # main loop
 foreach my $file (@test_files) {
-    open my $TEST_FILE, "<$file" or die "can't open file";
+    open my $TEST_FILE, '<', $file or die "can't open file";
     while (<$TEST_FILE>) {
         chomp;
         s/\r//g;

Modified: branches/ops_pct/examples/nci/QtHelloWorld.pasm
==============================================================================
--- branches/ops_pct/examples/nci/QtHelloWorld.pasm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/nci/QtHelloWorld.pasm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -21,7 +21,8 @@
 
 Note that this will either need JIT for building the NCI-functions on
 the fly. If this is not available try adding missing signatures to
-F<src/call_list.txt> and rebuilding Parrot.
+F<src/nci/extra_thunks.nci>, running F<tools/dev/mk_nci_thunks.pl>, and
+rebuilding Parrot.
 
 =cut
 

Modified: branches/ops_pct/examples/nci/QtHelloWorld.pir
==============================================================================
--- branches/ops_pct/examples/nci/QtHelloWorld.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/nci/QtHelloWorld.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -21,7 +21,8 @@
 
 Note that this will either need JIT for building the NCI-functions on
 the fly. If this is not available try adding missing signatures to
-F<src/call_list.txt> and rebuilding Parrot.
+F<src/nci/extra_thunks.nci>, running F<tools/dev/mk_nci_thunks.pl>, and
+rebuilding Parrot.
 
 =cut
 .sub main

Modified: branches/ops_pct/examples/nci/sdl_blue_rectangle.pir
==============================================================================
--- branches/ops_pct/examples/nci/sdl_blue_rectangle.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/nci/sdl_blue_rectangle.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -26,11 +26,11 @@
     .local pmc new_SDL_Rect
     .local object screen
 
-    SDL_Init       = global "SDL::SDL_Init"
-    SetVideoMode   = global "SDL::SDL_SetVideoMode"
-    SDL_Quit       = global "SDL::SDL_Quit"
-    SDL_UpdateRect = global "SDL::SDL_UpdateRect"
-    SDL_FillRect   = global "SDL::SDL_FillRect"
+    SDL_Init       = global ['SDL'; 'SDL_Init']
+    SetVideoMode   = global ['SDL'; 'SDL_SetVideoMode']
+    SDL_Quit       = global ['SDL'; 'SDL_Quit']
+    SDL_UpdateRect = global ['SDL'; 'SDL_UpdateRect']
+    SDL_FillRect   = global ['SDL'; 'SDL_FillRect']
     new_SDL_Rect   = global "new_SDL_Rect"
 
     .begin_call

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

Modified: branches/ops_pct/examples/sdl/anim_image.pir
==============================================================================
--- branches/ops_pct/examples/sdl/anim_image.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/anim_image.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -23,34 +23,34 @@
 
 
     .local pmc app
-    app = new 'SDL::App'
+    app = new ['SDL'; 'App']
     app.'init'( 'height' => 480, 'width' => 640, 'bpp' => 0, 'flags' => 1 )
 
     .local pmc main_screen
     main_screen = app.'surface'()
 
     .local pmc dest_rect
-    dest_rect   = new 'SDL::Rect'
+    dest_rect   = new ['SDL'; 'Rect']
     dest_rect.'init'( 'height' => 100, 'width' => 100, 'x' => 0, 'y' => 190 )
 
     .local pmc prev_rect
-    prev_rect   = new 'SDL::Rect'
+    prev_rect   = new ['SDL'; 'Rect']
     prev_rect.'init'( 'height' => 100, 'width' => 101, 'x' => 0, 'y' => 190 )
 
     .local pmc source_rect
-    source_rect = new 'SDL::Rect'
+    source_rect = new ['SDL'; 'Rect']
     source_rect.'init'( 'height' => 56, 'width' => 100, 'x' => 0, 'y' => 0 )
 
     .local pmc black
-    black = new 'SDL::Color'
+    black = new ['SDL'; 'Color']
     black.'init'( 'r' => 0, 'g' => 0, 'b' => 0 )
 
     .local pmc image
-    image    = new 'SDL::Image'
+    image    = new ['SDL'; 'Image']
     image.'init'( 'examples/sdl/parrot_small.png' )
 
     .local pmc sprite
-    sprite = new 'SDL::Sprite'
+    sprite = new ['SDL'; 'Sprite']
     sprite.'init'( 'surface' => image, 'source_x' => 0, 'source_y' => 0, 'dest_x' => 0, 'dest_y' => 190, 'bgcolor' => black )
 
     .local num start_time
@@ -96,7 +96,7 @@
     .local pmc rect
 
     .local pmc rect_array
-    rect_array = new 'Array'
+    rect_array = new 'ResizablePMCArray'
     set rect_array, 2
 
 _loop:

Modified: branches/ops_pct/examples/sdl/anim_image_dblbuf.pir
==============================================================================
--- branches/ops_pct/examples/sdl/anim_image_dblbuf.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/anim_image_dblbuf.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -22,34 +22,34 @@
     load_bytecode "SDL/Sprite.pir"
 
     .local pmc app
-    app = new 'SDL::App'
+    app = new ['SDL'; 'App']
     app.'init'( 'height' => 480, 'width' => 640, 'bpp' => 0, 'flags' => 1073741825 )
 
     .local pmc main_screen
     main_screen = app.'surface'()
 
     .local pmc dest_rect
-    dest_rect = new 'SDL::Rect'
+    dest_rect = new ['SDL'; 'Rect']
     dest_rect.'init'( 'height' => 100, 'width' => 100, 'x' => 0, 'y' => 190 )
 
     .local pmc prev_rect
-    prev_rect = new 'SDL::Rect'
+    prev_rect = new ['SDL'; 'Rect']
     prev_rect.'init'( 'height' => 100, 'width' => 101, 'x' => 0, 'y' => 190 )
 
     .local pmc source_rect
-    source_rect = new 'SDL::Rect'
+    source_rect = new ['SDL'; 'Rect']
     source_rect.'init'( 'height' => 56, 'width' => 100, 'x' => 0, 'y' => 0 )
 
     .local pmc black
-    black = new 'SDL::Color'
+    black = new ['SDL'; 'Color']
     black.'init'( 'r' => 0, 'g' => 0, 'b' => 0 )
 
     .local pmc image
-    image    = new 'SDL::Image'
+    image    = new ['SDL'; 'Image']
     image.'init'( 'examples/sdl/parrot_small.png' )
 
     .local pmc sprite
-    sprite = new 'SDL::Sprite'
+    sprite = new ['SDL'; 'Sprite']
     sprite.'init'( 'surface' => image, 'source_x' => 0, 'source_y' => 0, 'dest_x' => 0, 'dest_y' => 190, 'bgcolor' => black )
 
     .local num start_time

Modified: branches/ops_pct/examples/sdl/blue_font.pir
==============================================================================
--- branches/ops_pct/examples/sdl/blue_font.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/blue_font.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -29,7 +29,7 @@
 
     # create an SDL::App object
     .local pmc app
-    app = new 'SDL::App'
+    app = new ['SDL'; 'App']
     app.'init'( 'height' => 480, 'width' => 640, 'bpp' => 0, 'flags' => 1 )
 
     # fetch the SDL::Surface representing the main window
@@ -38,16 +38,16 @@
 
     # create an SDL::Rect object
     .local pmc rect
-    new rect, 'SDL::Rect'
+    new rect, ['SDL'; 'Rect']
     rect.'init'( 'height' => 100, 'width' => 100, 'x' => 194, 'y' => 208 )
 
     # create SDL::Color objects
     .local pmc blue
-    new blue, 'SDL::Color'
+    new blue, ['SDL'; 'Color']
     blue.'init'( 'r' => 0, 'g' => 0, 'b' => 255 )
 
     .local pmc white
-    new white, 'SDL::Color'
+    new white, ['SDL'; 'Color']
     white.'init'( 'r' => 255, 'g' => 255, 'b' => 255 )
 
     .local pmc file_pmc
@@ -62,11 +62,11 @@
 
   have_font:
     .local pmc font
-    new font,  'SDL::Font'
+    new font, ['SDL'; 'Font']
     font.'init'( 'font_file'  => 'times.ttf', 'point_size' => 48 )
 
     .local pmc full_rect
-    full_rect = new 'SDL::Rect'
+    full_rect = new ['SDL'; 'Rect']
     full_rect.'init'( 'width'  => 640, 'height' => 480, 'x' => 0, 'y' => 0 )
 
     main_screen.'fill_rect'( full_rect, white )

Modified: branches/ops_pct/examples/sdl/blue_rect.pir
==============================================================================
--- branches/ops_pct/examples/sdl/blue_rect.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/blue_rect.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -21,7 +21,7 @@
 
     # create an SDL::App object
     .local pmc app
-    app = new 'SDL::App'
+    app = new ['SDL'; 'App']
     app.'init'( 'height' => 480, 'width' => 640, 'bpp' => 32, 'flags' => 1 )
 
     # fetch the SDL::Surface representing the main window
@@ -30,12 +30,12 @@
 
     # create an SDL::Rect object
     .local pmc rect
-    new rect, 'SDL::Rect'
+    new rect, ['SDL'; 'Rect']
     rect.'init'( 'height' => 100, 'width'  => 100, 'x' => 270, 'y' => 190 )
 
     # create an SDL::Color object
     .local pmc color
-    new color, 'SDL::Color'
+    new color, ['SDL'; 'Color']
     color.'init'( 'r' => 0, 'g' => 0, 'b' => 255 )
 
     # draw the rectangle to the surface and update it

Modified: branches/ops_pct/examples/sdl/bounce_parrot_logo.pir
==============================================================================
--- branches/ops_pct/examples/sdl/bounce_parrot_logo.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/bounce_parrot_logo.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -27,22 +27,22 @@
     load_bytecode "SDL/Event.pir"
 
     .local pmc app
-    app = new 'SDL::App'
+    app = new ['SDL'; 'App']
     app.'init'( 'width' => 640, 'height' => 480, 'bpp' => 0, 'flags' => 0 )
 
     .local pmc main_screen
     main_screen = app.'surface'()
 
     .local pmc black
-    black = new 'SDL::Color'
+    black = new ['SDL'; 'Color']
     black.'init'( 'r' => 0, 'g' => 0, 'b' => 0 )
 
     .local pmc image
-    image = new 'SDL::Image'
+    image = new ['SDL'; 'Image']
     image.'init'( 'examples/sdl/parrot_small.png' )
 
     .local pmc sprite
-    sprite = new 'SDL::Sprite'
+    sprite = new ['SDL'; 'Sprite']
     sprite.'init'( 'surface' => image, 'source_x' => 0, 'source_y' => 0, 'dest_x' => 270, 'dest_y' => 212, 'bgcolor' => black )
 
     _main_loop( main_screen, sprite )
@@ -55,14 +55,14 @@
 
     .local pmc parent_class
     .local pmc class_type
-    get_class parent_class, 'SDL::EventHandler'
+    get_class parent_class, ['SDL'; 'EventHandler']
     subclass class_type, parent_class, 'MoveLogo::EventHandler'
 
     .local pmc event_handler
     event_handler = new 'MoveLogo::EventHandler'
 
     .local pmc event
-    event = new 'SDL::Event'
+    event = new ['SDL'; 'Event']
     event.'init'()
 
     .local pmc handler_args
@@ -176,7 +176,7 @@
     .local pmc prev_rect
     .local pmc rect
     .local pmc rect_array
-    rect_array = new 'Array'
+    rect_array = new 'ResizablePMCArray'
     set rect_array, 2
 
     (prev_rect, rect) = sprite.'draw_undraw'( screen )

Modified: branches/ops_pct/examples/sdl/lcd/clock.pir
==============================================================================
--- branches/ops_pct/examples/sdl/lcd/clock.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/lcd/clock.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -35,7 +35,7 @@
 
     # create the SDL application object
     .local pmc app
-    app = new 'SDL::App'
+    app = new ['SDL'; 'App']
     app.'init'( 'height' => 21, 'width' => 94, 'bpp' => 16, 'flags' => 5 )
 
     .local pmc screen
@@ -44,7 +44,7 @@
 
     # create the LCD
     .local pmc lcd
-    lcd = new 'SDL::LCD'
+    lcd = new ['SDL'; 'LCD']
     set_global 'LCD', lcd
 
     # draw the watch
@@ -67,8 +67,8 @@
     .local pmc eh
     .local pmc loop
 
-    eh   = new 'SDL::EventHandler'
-    loop = new 'SDL::Event'
+    eh   = new ['SDL'; 'EventHandler']
+    loop = new ['SDL'; 'Event']
     loop.'init'()
     loop.'process_events'( 0.1, eh )
 .end

Modified: branches/ops_pct/examples/sdl/mandel.pir
==============================================================================
--- branches/ops_pct/examples/sdl/mandel.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/mandel.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -72,7 +72,7 @@
     .param pmc opts
     # create an SDL::App subclass
     .local pmc app, cl
-    cl = subclass 'SDL::App', 'Mandel'
+    cl = subclass ['SDL'; 'App'], 'Mandel'
     addattribute cl, 'xstart'
     addattribute cl, 'ystart'
     addattribute cl, 'xend'
@@ -128,7 +128,7 @@
 
     # create an SDL::Rect representing the entire main screen
     .local pmc rect
-    rect = new 'SDL::Rect'
+    rect = new ['SDL'; 'Rect']
     rect.'init'( 'height' => h, 'width' => w, 'x' => 0, 'y' => 0 )
     setattribute self, 'rect', rect
 
@@ -397,11 +397,11 @@
 # init event system
 .sub 'init_events' :method
     .local pmc event, args, event_handler
-    event = new 'SDL::Event'
+    event = new ['SDL'; 'Event']
     event.'init'()
     setattribute self, 'event', event
 
-    $P0 = subclass 'SDL::EventHandler', ['Mandel'; 'EventHandler']
+    $P0 = subclass ['SDL'; 'EventHandler'], ['Mandel'; 'EventHandler']
     event_handler = new ['Mandel'; 'EventHandler']
     event_handler.'init'(self)	# XXX unused
     setattribute self, 'event_handler', event_handler
@@ -444,7 +444,7 @@
 loop_g:
     b = 0
 loop_b:
-    col = new 'SDL::Color'
+    col = new ['SDL'; 'Color']
     col.'init'( 'r' => r, 'g' => g, 'b' => b )
     push palette, col
     b += 36

Modified: branches/ops_pct/examples/sdl/minesweeper/eventhandler.pir
==============================================================================
--- branches/ops_pct/examples/sdl/minesweeper/eventhandler.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/minesweeper/eventhandler.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -6,7 +6,7 @@
 
 =head1 SYNOPSIS
 
-    $P0 = new "SDL::Event"
+    $P0 = new ['SDL'; 'Event']
 
     $P1 = new "Mines::EventHandler"
 

Modified: branches/ops_pct/examples/sdl/minesweeper/field.pir
==============================================================================
--- branches/ops_pct/examples/sdl/minesweeper/field.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/minesweeper/field.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -132,11 +132,11 @@
     field  = new 'ResizablePMCArray'
     cache  = new 'ResizablePMCArray'
 
-    watch = new 'SDL::StopWatch', screen
+    watch = new ['SDL'; 'StopWatch'], screen
     watch.'xpos'( 515 )
     watch.'ypos'( 5 )
 
-    lcd = new 'SDL::LCD'
+    lcd = new ['SDL'; 'LCD']
     # This seems to call __init() with too many parameters
     # lcd = 0
     lcd.'_digits'( 4 )
@@ -172,7 +172,7 @@
     # button
     $P0 = new 'String'
     $P0 = "examples/sdl/minesweeper/smiley.png"
-    $P0 = new "SDL::Button", $P0
+    $P0 = new ['SDL'; 'Button'], $P0
     $P0.'states'( 5 )
     $P0.'pos'( 305, 2 )
     $P0.'size'( 30, 30 )
@@ -324,10 +324,10 @@
     $P0['y'] = 0
     $P0['width']  = 0
     $P0['height'] = 0
-    dest_rect = new "SDL::Rect", $P0
+    dest_rect = new ['SDL'; 'Rect'], $P0
     $P0['width']  = FIELD_WIDTH
     $P0['height'] = FIELD_HEIGHT
-    src_rect = new "SDL::Rect", $P0
+    src_rect = new ['SDL'; 'Rect'], $P0
 
     set size, width
     mul size, height
@@ -975,12 +975,12 @@
 
     $P0 = new 'String'
     $P0 = "examples/sdl/minesweeper/mines.png"
-    image = new "SDL::Image", $P0
+    image = new ['SDL'; 'Image'], $P0
     set_hll_global [ "Mines::Field" ], "field", image
 
     $P0 = new 'String'
     $P0 = "examples/sdl/minesweeper/mines_debug.png"
-    image = new "SDL::Image", $P0
+    image = new ['SDL'; 'Image'], $P0
     set_hll_global [ "Mines::Field" ], "field_debug", image
 
     newclass $P0, "Mines::Field"

Modified: branches/ops_pct/examples/sdl/minesweeper/mines.pir
==============================================================================
--- branches/ops_pct/examples/sdl/minesweeper/mines.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/minesweeper/mines.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -48,7 +48,7 @@
     $P0["flags"]  =   5
 
     # create the SDL object
-    $P0 = new "SDL::App", $P0
+    $P0 = new ['SDL'; 'App'], $P0
     screen = $P0."surface"()
 
     # choose a "random" field
@@ -71,7 +71,7 @@
     field.'draw'()
 
     # runloop
-    $P0 = new "SDL::Event"
+    $P0 = new ['SDL'; 'Event']
     $P1 = new "Mines::EventHandler"
     $P0."process_events"( 0.1, $P1, field )
 

Modified: branches/ops_pct/examples/sdl/move_parrot_logo.pir
==============================================================================
--- branches/ops_pct/examples/sdl/move_parrot_logo.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/move_parrot_logo.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -25,7 +25,7 @@
 	.local pmc app
 	.local int app_type
 
-	app = new 'SDL::App'
+	app = new ['SDL'; 'App']
 
 	app.'init'( 'width' => 640, 'height' => 480, 'bpp' => 0, 'flags' => 0 )
 
@@ -35,7 +35,7 @@
 	.local pmc black
 	.local int color_type
 
-	black = new 'SDL::Color'
+	black = new ['SDL'; 'Color']
 	black.'init'( 'r' => 0, 'g' => 0, 'b' => 0 )
 
 	.local pmc    image
@@ -43,7 +43,7 @@
 	.local string filename
 
 
-	image    = new 'SDL::Image'
+	image    = new ['SDL'; 'Image']
 
 	filename = 'examples/sdl/parrot_small.png'
 	image.'init'( 'file' => filename )
@@ -53,12 +53,12 @@
 	.local pmc sprite
 	.local int sprite_type
 
-	sprite = new 'SDL::Sprite'
+	sprite = new ['SDL'; 'Sprite']
 	sprite.'init'( 'surface'  => image, 'source_x' =>     0, 'source_y' =>     0, 'dest_x'   =>   270, 'dest_y'   =>   212, 'bgcolor'  => black )
 
 	.local pmc parent_class
 	.local pmc class_type
-	get_class parent_class, 'SDL::EventHandler'
+	get_class parent_class, ['SDL'; 'EventHandler']
 	subclass class_type, parent_class, 'MoveLogo::EventHandler'
 
 	.local pmc event_handler
@@ -69,7 +69,7 @@
 	.local pmc event
 	.local int event_type
 
-	event = new 'SDL::Event'
+	event = new ['SDL'; 'Event']
 	event.'init'()
 
 	.local pmc handler_args
@@ -91,7 +91,7 @@
 	.local pmc prev_rect
 	.local pmc rect
 	.local pmc rect_array
-	rect_array = new 'Array'
+	rect_array = new 'ResizablePMCArray'
 	set rect_array, 2
 
 	(prev_rect, rect) = sprite.'draw_undraw'( screen )

Modified: branches/ops_pct/examples/sdl/raw_pixels.pir
==============================================================================
--- branches/ops_pct/examples/sdl/raw_pixels.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/raw_pixels.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -26,7 +26,7 @@
 	.local pmc app
 	.local int app_type
 
-	app = new 'SDL::App'
+	app = new ['SDL'; 'App']
 	app.'init'( 'height' => 480, 'width' => 640, 'bpp' => 0, 'flags' => 1 )
 
 	# fetch the SDL::Surface representing the main window
@@ -37,17 +37,17 @@
 	# create an SDL::Rect representing the entire main screen
 	.local pmc rect
 	.local int rect_type
-	rect = new 'SDL::Rect'
+	rect = new ['SDL'; 'Rect']
 	rect.'init'( 'height' => 480, 'width' => 640, 'x' => 0, 'y' => 0 )
 
 	# create a white color to paint the background; make new pixels show up
 	.local pmc white
-	white = new 'SDL::Color'
+	white = new ['SDL'; 'Color']
 	white.'init'( 'r' => 255, 'g' => 255, 'b' => 255 )
 
 	# create a blue color to paint the new pixels
 	.local pmc blue
-	blue = new 'SDL::Color'
+	blue = new ['SDL'; 'Color']
 	blue.'init'( 'r' => 0, 'g' => 0, 'b' => 255 )
 
 	# draw the background

Modified: branches/ops_pct/examples/sdl/tetris/app.pir
==============================================================================
--- branches/ops_pct/examples/sdl/tetris/app.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/tetris/app.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -92,7 +92,7 @@
     $P0["flags"]  =   1
 
     # create the SDL object
-    $P0 = new "SDL::App", $P0
+    $P0 = new ['SDL'; 'App'], $P0
 
     # store the SDL object
     setattribute self, 'SDL', $P0
@@ -177,7 +177,7 @@
 
     getattribute eh, self, 'EventHandler'
 
-    loop = new "SDL::Event"
+    loop = new ['SDL'; 'Event']
 
     self."enableTimer"()
     loop."process_events"( 0.1, eh, self )
@@ -329,7 +329,7 @@
     hash["r"] = r
     hash["g"] = g
     hash["b"] = b
-    color = new "SDL::Color", hash
+    color = new ['SDL'; 'Color'], hash
 
     push palette, color
     inc i
@@ -837,7 +837,7 @@
     rect["height"] = 480
     rect["x"] = 0
     rect["y"] = 0
-    temp = new "SDL::Rect", rect
+    temp = new ['SDL'; 'Rect'], rect
     color = self."color"( 3 )
 
     screen."fill_rect"( temp, color )
@@ -856,7 +856,7 @@
     rect["height"] = 480
     rect["x"] = 0
     rect["y"] = 0
-    temp = new "SDL::Rect", rect
+    temp = new ['SDL'; 'Rect'], rect
     screen."update_rect"( temp )
 
     self."enableTimer"()

Modified: branches/ops_pct/examples/sdl/tetris/block.pir
==============================================================================
--- branches/ops_pct/examples/sdl/tetris/block.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/tetris/block.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -439,7 +439,7 @@
     rect["y"] = yp
     rect["width"] = i
     rect["height"] = i
-    temp = new "SDL::Rect", rect
+    temp = new ['SDL'; 'Rect'], rect
 
     surface."fill_rect"( temp, color )
     sub i, 2
@@ -450,7 +450,7 @@
     rect["y"] = yp
     rect["width"] = i
     rect["height"] = i
-    temp = new "SDL::Rect", rect
+    temp = new ['SDL'; 'Rect'], rect
 
     # lookup the color value
     $P0 = app."color"( 0 )
@@ -478,7 +478,7 @@
     rect["y"] = yp
     rect["width"] = extent
     rect["height"] = extent
-    temp = new "SDL::Rect", rect
+    temp = new ['SDL'; 'Rect'], rect
     inc extent
     surface."fill_rect"( temp, color )
 SKIP:

Modified: branches/ops_pct/examples/sdl/tetris/board.pir
==============================================================================
--- branches/ops_pct/examples/sdl/tetris/board.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/tetris/board.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -648,7 +648,7 @@
     rect["y"] = ypos
     rect["width"] = xp
     rect["height"] = yp
-    temp = new "SDL::Rect", rect
+    temp = new ['SDL'; 'Rect'], rect
     color = palette[15]
     surface."fill_rect"( temp, color )
 NO_FIELDBACKGROUND:
@@ -682,7 +682,7 @@
     rect["y"] = yp
     rect["width"] = $I0
     rect["height"] = $I0
-    temp = new "SDL::Rect", rect
+    temp = new ['SDL'; 'Rect'], rect
 
     $I0 = self[i]
     $I1 = cache[i]
@@ -734,7 +734,7 @@
     rect["y"] = yp
     rect["width"] = w
     rect["height"] = h
-    temp = new "SDL::Rect", rect
+    temp = new ['SDL'; 'Rect'], rect
     color = palette[15]
     surface."fill_rect"( temp, color )
     inc xp
@@ -745,7 +745,7 @@
     rect["y"] = yp
     rect["width"] = w
     rect["height"] = h
-    temp = new "SDL::Rect", rect
+    temp = new ['SDL'; 'Rect'], rect
     color = palette[0]
     surface."fill_rect"( temp, color )
     getprop temp, "nextblock", self

Modified: branches/ops_pct/examples/sdl/tetris/eventhandler.pir
==============================================================================
--- branches/ops_pct/examples/sdl/tetris/eventhandler.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/examples/sdl/tetris/eventhandler.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -13,7 +13,7 @@
     unless null $P0 goto END
     load_bytecode "library/SDL/EventHandler.pir"
 
-    get_class $P0, "SDL::EventHandler"
+    get_class $P0, ['SDL'; 'EventHandler']
     subclass $P0, $P0, "Tetris::EventHandler"
     $P1 = new 'String'
     $P1 = "BUILD"
@@ -41,7 +41,7 @@
 
     app = self."app"()
     app."setTimer"( 0 )
-    $P0 = get_hll_global [ "SDL::Event" ], "disptach_event"
+    $P0 = get_hll_global ['SDL'; 'Event'], "disptach_event"
     ret = $P0()
     app."setTimer"( 1 )
     .return (ret)

Modified: branches/ops_pct/ext/Parrot-Embed/lib/Parrot/Embed.xs
==============================================================================
--- branches/ops_pct/ext/Parrot-Embed/lib/Parrot/Embed.xs	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/ext/Parrot-Embed/lib/Parrot/Embed.xs	Sun Mar  7 19:33:20 2010	(r44743)
@@ -223,7 +223,7 @@
     pmc_actual = pmc->pmc;
     interp     = get_interp( pmc->interp );
     arg_string = Parrot_str_new_constant( interp, argument );
-    out_pmc    = Parrot_call_sub( interp, pmc_actual, signature, arg_string );
+    Parrot_ext_call( interp, pmc_actual, signature, arg_string, &out_pmc );
     RETVAL     = make_pmc( aTHX_ pmc->interp, out_pmc );
 OUTPUT:
     RETVAL

Modified: branches/ops_pct/ext/Parrot-Embed/t/pipp.t
==============================================================================
--- branches/ops_pct/ext/Parrot-Embed/t/pipp.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/ext/Parrot-Embed/t/pipp.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2008-2009, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -33,8 +33,8 @@
     isa_ok( $pipp_x, 'Parrot::PMC' );
 }
 
-# TODO: get hll id of Pipp
-# TODO: set hll namespace root to 'pipp'
+# todo: get hll id of Pipp
+# todo: set hll namespace root to 'pipp'
 # find sub 'eval' and hll namespace 'pipp'
 my $pipp_eval = $interp->find_global( 'pipp', 'eval' );
 # isa_ok( $pipp_eval, 'Parrot::PMC', todo => '$pipp_eval is not found'  );
@@ -73,3 +73,11 @@
     ok( $pmc, 'invoke() should return a PMC, given that signature' );
     is( $pmc->get_string(), 42, 'value returned in the PMC' );
 }
+
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/ops_pct/ext/nqp-rx/src/stage0/HLL-s0.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/ext/nqp-rx/src/stage0/HLL-s0.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -854,7 +854,7 @@
 ### .include 'gen/hllgrammar-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064003.48945")
+.sub "_block11"  :anon :subid("10_1267204683.33533")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
     capture_lex $P14
@@ -868,9 +868,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post94") :outer("10_1261064003.48945")
+.sub "" :load :init :subid("post94") :outer("10_1267204683.33533")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064003.48945" 
+    .const 'Sub' $P12 = "10_1267204683.33533" 
     .local pmc block
     set block, $P12
     $P297 = get_root_global ["parrot"], "P6metaclass"
@@ -879,78 +879,78 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block13"  :subid("11_1261064003.48945") :outer("10_1261064003.48945")
+.sub "_block13"  :subid("11_1267204683.33533") :outer("10_1267204683.33533")
 .annotate "line", 5
-    .const 'Sub' $P286 = "92_1261064003.48945" 
+    .const 'Sub' $P286 = "92_1267204683.33533" 
     capture_lex $P286
-    .const 'Sub' $P279 = "90_1261064003.48945" 
+    .const 'Sub' $P279 = "90_1267204683.33533" 
     capture_lex $P279
-    .const 'Sub' $P266 = "87_1261064003.48945" 
+    .const 'Sub' $P266 = "87_1267204683.33533" 
     capture_lex $P266
-    .const 'Sub' $P261 = "85_1261064003.48945" 
+    .const 'Sub' $P261 = "85_1267204683.33533" 
     capture_lex $P261
-    .const 'Sub' $P255 = "83_1261064003.48945" 
+    .const 'Sub' $P255 = "83_1267204683.33533" 
     capture_lex $P255
-    .const 'Sub' $P249 = "81_1261064003.48945" 
+    .const 'Sub' $P249 = "81_1267204683.33533" 
     capture_lex $P249
-    .const 'Sub' $P244 = "79_1261064003.48945" 
+    .const 'Sub' $P244 = "79_1267204683.33533" 
     capture_lex $P244
-    .const 'Sub' $P239 = "77_1261064003.48945" 
+    .const 'Sub' $P239 = "77_1267204683.33533" 
     capture_lex $P239
-    .const 'Sub' $P234 = "75_1261064003.48945" 
+    .const 'Sub' $P234 = "75_1267204683.33533" 
     capture_lex $P234
-    .const 'Sub' $P229 = "73_1261064003.48945" 
+    .const 'Sub' $P229 = "73_1267204683.33533" 
     capture_lex $P229
-    .const 'Sub' $P224 = "71_1261064003.48945" 
+    .const 'Sub' $P224 = "71_1267204683.33533" 
     capture_lex $P224
-    .const 'Sub' $P219 = "69_1261064003.48945" 
+    .const 'Sub' $P219 = "69_1267204683.33533" 
     capture_lex $P219
-    .const 'Sub' $P208 = "65_1261064003.48945" 
+    .const 'Sub' $P208 = "65_1267204683.33533" 
     capture_lex $P208
-    .const 'Sub' $P195 = "63_1261064003.48945" 
+    .const 'Sub' $P195 = "63_1267204683.33533" 
     capture_lex $P195
-    .const 'Sub' $P183 = "61_1261064003.48945" 
+    .const 'Sub' $P183 = "61_1267204683.33533" 
     capture_lex $P183
-    .const 'Sub' $P176 = "59_1261064003.48945" 
+    .const 'Sub' $P176 = "59_1267204683.33533" 
     capture_lex $P176
-    .const 'Sub' $P167 = "57_1261064003.48945" 
+    .const 'Sub' $P167 = "57_1267204683.33533" 
     capture_lex $P167
-    .const 'Sub' $P160 = "55_1261064003.48945" 
+    .const 'Sub' $P160 = "55_1267204683.33533" 
     capture_lex $P160
-    .const 'Sub' $P151 = "53_1261064003.48945" 
+    .const 'Sub' $P151 = "53_1267204683.33533" 
     capture_lex $P151
-    .const 'Sub' $P144 = "51_1261064003.48945" 
+    .const 'Sub' $P144 = "51_1267204683.33533" 
     capture_lex $P144
-    .const 'Sub' $P135 = "49_1261064003.48945" 
+    .const 'Sub' $P135 = "49_1267204683.33533" 
     capture_lex $P135
-    .const 'Sub' $P128 = "47_1261064003.48945" 
+    .const 'Sub' $P128 = "47_1267204683.33533" 
     capture_lex $P128
-    .const 'Sub' $P121 = "45_1261064003.48945" 
+    .const 'Sub' $P121 = "45_1267204683.33533" 
     capture_lex $P121
-    .const 'Sub' $P111 = "43_1261064003.48945" 
+    .const 'Sub' $P111 = "43_1267204683.33533" 
     capture_lex $P111
-    .const 'Sub' $P103 = "41_1261064003.48945" 
+    .const 'Sub' $P103 = "41_1267204683.33533" 
     capture_lex $P103
-    .const 'Sub' $P93 = "40_1261064003.48945" 
+    .const 'Sub' $P93 = "40_1267204683.33533" 
     capture_lex $P93
-    .const 'Sub' $P87 = "38_1261064003.48945" 
+    .const 'Sub' $P87 = "38_1267204683.33533" 
     capture_lex $P87
-    .const 'Sub' $P82 = "36_1261064003.48945" 
+    .const 'Sub' $P82 = "36_1267204683.33533" 
     capture_lex $P82
-    .const 'Sub' $P74 = "34_1261064003.48945" 
+    .const 'Sub' $P74 = "34_1267204683.33533" 
     capture_lex $P74
-    .const 'Sub' $P68 = "32_1261064003.48945" 
+    .const 'Sub' $P68 = "32_1267204683.33533" 
     capture_lex $P68
-    .const 'Sub' $P62 = "30_1261064003.48945" 
+    .const 'Sub' $P62 = "30_1267204683.33533" 
     capture_lex $P62
-    .const 'Sub' $P56 = "28_1261064003.48945" 
+    .const 'Sub' $P56 = "28_1267204683.33533" 
     capture_lex $P56
-    .const 'Sub' $P23 = "14_1261064003.48945" 
+    .const 'Sub' $P23 = "14_1267204683.33533" 
     capture_lex $P23
-    .const 'Sub' $P15 = "12_1261064003.48945" 
+    .const 'Sub' $P15 = "12_1267204683.33533" 
     capture_lex $P15
 .annotate "line", 33
-    .const 'Sub' $P286 = "92_1261064003.48945" 
+    .const 'Sub' $P286 = "92_1267204683.33533" 
     capture_lex $P286
 .annotate "line", 5
     .return ($P286)
@@ -958,7 +958,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "ws"  :subid("12_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "ws"  :subid("12_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 5
     .local string rx16_tgt
     .local int rx16_pos
@@ -1042,7 +1042,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__ws"  :subid("13_1261064003.48945") :method
+.sub "!PREFIX__ws"  :subid("13_1267204683.33533") :method
 .annotate "line", 5
     new $P18, "ResizablePMCArray"
     push $P18, ""
@@ -1051,7 +1051,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "termish"  :subid("14_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "termish"  :subid("14_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 5
     .local string rx24_tgt
     .local int rx24_pos
@@ -1143,7 +1143,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish"  :subid("15_1261064003.48945") :method
+.sub "!PREFIX__termish"  :subid("15_1267204683.33533") :method
 .annotate "line", 5
     new $P26, "ResizablePMCArray"
     push $P26, ""
@@ -1152,7 +1152,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term"  :subid("16_1261064003.48945") :method
+.sub "term"  :subid("16_1267204683.33533") :method
 .annotate "line", 13
     $P33 = self."!protoregex"("term")
     .return ($P33)
@@ -1160,7 +1160,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term"  :subid("17_1261064003.48945") :method
+.sub "!PREFIX__term"  :subid("17_1267204683.33533") :method
 .annotate "line", 13
     $P35 = self."!PREFIX__!protoregex"("term")
     .return ($P35)
@@ -1168,7 +1168,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infix"  :subid("18_1261064003.48945") :method
+.sub "infix"  :subid("18_1267204683.33533") :method
 .annotate "line", 14
     $P37 = self."!protoregex"("infix")
     .return ($P37)
@@ -1176,7 +1176,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infix"  :subid("19_1261064003.48945") :method
+.sub "!PREFIX__infix"  :subid("19_1267204683.33533") :method
 .annotate "line", 14
     $P39 = self."!PREFIX__!protoregex"("infix")
     .return ($P39)
@@ -1184,7 +1184,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefix"  :subid("20_1261064003.48945") :method
+.sub "prefix"  :subid("20_1267204683.33533") :method
 .annotate "line", 15
     $P41 = self."!protoregex"("prefix")
     .return ($P41)
@@ -1192,7 +1192,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefix"  :subid("21_1261064003.48945") :method
+.sub "!PREFIX__prefix"  :subid("21_1267204683.33533") :method
 .annotate "line", 15
     $P43 = self."!PREFIX__!protoregex"("prefix")
     .return ($P43)
@@ -1200,7 +1200,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfix"  :subid("22_1261064003.48945") :method
+.sub "postfix"  :subid("22_1267204683.33533") :method
 .annotate "line", 16
     $P45 = self."!protoregex"("postfix")
     .return ($P45)
@@ -1208,7 +1208,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfix"  :subid("23_1261064003.48945") :method
+.sub "!PREFIX__postfix"  :subid("23_1267204683.33533") :method
 .annotate "line", 16
     $P47 = self."!PREFIX__!protoregex"("postfix")
     .return ($P47)
@@ -1216,7 +1216,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "circumfix"  :subid("24_1261064003.48945") :method
+.sub "circumfix"  :subid("24_1267204683.33533") :method
 .annotate "line", 17
     $P49 = self."!protoregex"("circumfix")
     .return ($P49)
@@ -1224,7 +1224,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__circumfix"  :subid("25_1261064003.48945") :method
+.sub "!PREFIX__circumfix"  :subid("25_1267204683.33533") :method
 .annotate "line", 17
     $P51 = self."!PREFIX__!protoregex"("circumfix")
     .return ($P51)
@@ -1232,7 +1232,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postcircumfix"  :subid("26_1261064003.48945") :method
+.sub "postcircumfix"  :subid("26_1267204683.33533") :method
 .annotate "line", 18
     $P53 = self."!protoregex"("postcircumfix")
     .return ($P53)
@@ -1240,7 +1240,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postcircumfix"  :subid("27_1261064003.48945") :method
+.sub "!PREFIX__postcircumfix"  :subid("27_1267204683.33533") :method
 .annotate "line", 18
     $P55 = self."!PREFIX__!protoregex"("postcircumfix")
     .return ($P55)
@@ -1248,7 +1248,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term:sym<circumfix>"  :subid("28_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "term:sym<circumfix>"  :subid("28_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 5
     .local string rx57_tgt
     .local int rx57_pos
@@ -1306,7 +1306,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1261064003.48945") :method
+.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1267204683.33533") :method
 .annotate "line", 5
     $P59 = self."!PREFIX__!subrule"("circumfix", "")
     new $P60, "ResizablePMCArray"
@@ -1316,7 +1316,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infixish"  :subid("30_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "infixish"  :subid("30_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 5
     .local string rx63_tgt
     .local int rx63_pos
@@ -1374,7 +1374,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("31_1261064003.48945") :method
+.sub "!PREFIX__infixish"  :subid("31_1267204683.33533") :method
 .annotate "line", 5
     $P65 = self."!PREFIX__!subrule"("OPER=infix", "")
     new $P66, "ResizablePMCArray"
@@ -1384,7 +1384,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefixish"  :subid("32_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "prefixish"  :subid("32_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 5
     .local string rx69_tgt
     .local int rx69_pos
@@ -1447,7 +1447,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefixish"  :subid("33_1261064003.48945") :method
+.sub "!PREFIX__prefixish"  :subid("33_1267204683.33533") :method
 .annotate "line", 5
     $P71 = self."!PREFIX__!subrule"("OPER=prefix", "")
     new $P72, "ResizablePMCArray"
@@ -1457,7 +1457,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfixish"  :subid("34_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "postfixish"  :subid("34_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 5
     .local string rx75_tgt
     .local int rx75_pos
@@ -1531,7 +1531,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfixish"  :subid("35_1261064003.48945") :method
+.sub "!PREFIX__postfixish"  :subid("35_1267204683.33533") :method
 .annotate "line", 5
     $P77 = self."!PREFIX__!subrule"("OPER=postcircumfix", "")
     $P78 = self."!PREFIX__!subrule"("OPER=postfix", "")
@@ -1543,7 +1543,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm"  :subid("36_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "nullterm"  :subid("36_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 5
     .local string rx83_tgt
     .local int rx83_pos
@@ -1594,7 +1594,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm"  :subid("37_1261064003.48945") :method
+.sub "!PREFIX__nullterm"  :subid("37_1267204683.33533") :method
 .annotate "line", 5
     new $P85, "ResizablePMCArray"
     push $P85, ""
@@ -1603,7 +1603,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm_alt"  :subid("38_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "nullterm_alt"  :subid("38_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 5
     .local string rx88_tgt
     .local int rx88_pos
@@ -1661,7 +1661,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm_alt"  :subid("39_1261064003.48945") :method
+.sub "!PREFIX__nullterm_alt"  :subid("39_1267204683.33533") :method
 .annotate "line", 5
     $P90 = self."!PREFIX__!subrule"("term", "")
     new $P91, "ResizablePMCArray"
@@ -1671,7 +1671,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nulltermish"  :subid("40_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "nulltermish"  :subid("40_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     new $P95, 'ExceptionHandler'
     set_addr $P95, control_94
@@ -1698,7 +1698,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_delimited"  :subid("41_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_delimited"  :subid("41_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx104_tgt
     .local int rx104_pos
@@ -1780,7 +1780,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_delimited"  :subid("42_1261064003.48945") :method
+.sub "!PREFIX__quote_delimited"  :subid("42_1267204683.33533") :method
 .annotate "line", 33
     $P106 = self."!PREFIX__!subrule"("starter", "")
     new $P107, "ResizablePMCArray"
@@ -1790,7 +1790,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_atom"  :subid("43_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_atom"  :subid("43_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx112_tgt
     .local int rx112_pos
@@ -1881,7 +1881,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_atom"  :subid("44_1261064003.48945") :method
+.sub "!PREFIX__quote_atom"  :subid("44_1267204683.33533") :method
 .annotate "line", 33
     new $P114, "ResizablePMCArray"
     push $P114, ""
@@ -1890,7 +1890,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decint"  :subid("45_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "decint"  :subid("45_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx122_tgt
     .local int rx122_pos
@@ -1962,7 +1962,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decint"  :subid("46_1261064003.48945") :method
+.sub "!PREFIX__decint"  :subid("46_1267204683.33533") :method
 .annotate "line", 33
     new $P124, "ResizablePMCArray"
     push $P124, ""
@@ -1971,7 +1971,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexints"  :subid("47_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "hexints"  :subid("47_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx129_tgt
     .local int rx129_pos
@@ -2055,7 +2055,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints"  :subid("48_1261064003.48945") :method
+.sub "!PREFIX__hexints"  :subid("48_1267204683.33533") :method
 .annotate "line", 33
     new $P131, "ResizablePMCArray"
     push $P131, ""
@@ -2064,7 +2064,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexint"  :subid("49_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "hexint"  :subid("49_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx136_tgt
     .local int rx136_pos
@@ -2145,7 +2145,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexint"  :subid("50_1261064003.48945") :method
+.sub "!PREFIX__hexint"  :subid("50_1267204683.33533") :method
 .annotate "line", 33
     new $P138, "ResizablePMCArray"
     push $P138, ""
@@ -2154,7 +2154,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexints"  :subid("51_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "hexints"  :subid("51_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx145_tgt
     .local int rx145_pos
@@ -2238,7 +2238,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints"  :subid("52_1261064003.48945") :method
+.sub "!PREFIX__hexints"  :subid("52_1267204683.33533") :method
 .annotate "line", 33
     new $P147, "ResizablePMCArray"
     push $P147, ""
@@ -2247,7 +2247,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octint"  :subid("53_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "octint"  :subid("53_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx152_tgt
     .local int rx152_pos
@@ -2328,7 +2328,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octint"  :subid("54_1261064003.48945") :method
+.sub "!PREFIX__octint"  :subid("54_1267204683.33533") :method
 .annotate "line", 33
     new $P154, "ResizablePMCArray"
     push $P154, ""
@@ -2337,7 +2337,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octints"  :subid("55_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "octints"  :subid("55_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx161_tgt
     .local int rx161_pos
@@ -2421,7 +2421,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octints"  :subid("56_1261064003.48945") :method
+.sub "!PREFIX__octints"  :subid("56_1267204683.33533") :method
 .annotate "line", 33
     new $P163, "ResizablePMCArray"
     push $P163, ""
@@ -2430,7 +2430,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binint"  :subid("57_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "binint"  :subid("57_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx168_tgt
     .local int rx168_pos
@@ -2511,7 +2511,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binint"  :subid("58_1261064003.48945") :method
+.sub "!PREFIX__binint"  :subid("58_1267204683.33533") :method
 .annotate "line", 33
     new $P170, "ResizablePMCArray"
     push $P170, ""
@@ -2520,7 +2520,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binints"  :subid("59_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "binints"  :subid("59_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx177_tgt
     .local int rx177_pos
@@ -2604,7 +2604,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binints"  :subid("60_1261064003.48945") :method
+.sub "!PREFIX__binints"  :subid("60_1267204683.33533") :method
 .annotate "line", 33
     new $P179, "ResizablePMCArray"
     push $P179, ""
@@ -2613,7 +2613,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "integer"  :subid("61_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "integer"  :subid("61_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx184_tgt
     .local int rx184_pos
@@ -2761,7 +2761,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__integer"  :subid("62_1261064003.48945") :method
+.sub "!PREFIX__integer"  :subid("62_1267204683.33533") :method
 .annotate "line", 33
     $P186 = self."!PREFIX__!subrule"("VALUE=decint", "")
     $P187 = self."!PREFIX__!subrule"("VALUE=decint", "0d")
@@ -2779,7 +2779,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "dec_number"  :subid("63_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "dec_number"  :subid("63_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx196_tgt
     .local int rx196_pos
@@ -2958,7 +2958,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__dec_number"  :subid("64_1261064003.48945") :method
+.sub "!PREFIX__dec_number"  :subid("64_1267204683.33533") :method
 .annotate "line", 33
     new $P198, "ResizablePMCArray"
     push $P198, ""
@@ -2969,7 +2969,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "escale"  :subid("65_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "escale"  :subid("65_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx209_tgt
     .local int rx209_pos
@@ -3046,7 +3046,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__escale"  :subid("66_1261064003.48945") :method
+.sub "!PREFIX__escale"  :subid("66_1267204683.33533") :method
 .annotate "line", 33
     new $P211, "ResizablePMCArray"
     push $P211, "e"
@@ -3056,7 +3056,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape"  :subid("67_1261064003.48945") :method
+.sub "quote_escape"  :subid("67_1267204683.33533") :method
 .annotate "line", 79
     $P216 = self."!protoregex"("quote_escape")
     .return ($P216)
@@ -3064,7 +3064,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape"  :subid("68_1261064003.48945") :method
+.sub "!PREFIX__quote_escape"  :subid("68_1267204683.33533") :method
 .annotate "line", 79
     $P218 = self."!PREFIX__!protoregex"("quote_escape")
     .return ($P218)
@@ -3072,7 +3072,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<backslash>"  :subid("69_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<backslash>"  :subid("69_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx220_tgt
     .local int rx220_pos
@@ -3134,7 +3134,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1267204683.33533") :method
 .annotate "line", 33
     new $P222, "ResizablePMCArray"
     push $P222, "\\\\"
@@ -3143,7 +3143,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<stopper>"  :subid("71_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<stopper>"  :subid("71_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx225_tgt
     .local int rx225_pos
@@ -3212,7 +3212,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1267204683.33533") :method
 .annotate "line", 33
     new $P227, "ResizablePMCArray"
     push $P227, "\\"
@@ -3221,7 +3221,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<bs>"  :subid("73_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<bs>"  :subid("73_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx230_tgt
     .local int rx230_pos
@@ -3283,7 +3283,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1267204683.33533") :method
 .annotate "line", 33
     new $P232, "ResizablePMCArray"
     push $P232, "\\b"
@@ -3292,7 +3292,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<nl>"  :subid("75_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<nl>"  :subid("75_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx235_tgt
     .local int rx235_pos
@@ -3354,7 +3354,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1267204683.33533") :method
 .annotate "line", 33
     new $P237, "ResizablePMCArray"
     push $P237, "\\n"
@@ -3363,7 +3363,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<cr>"  :subid("77_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<cr>"  :subid("77_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx240_tgt
     .local int rx240_pos
@@ -3425,7 +3425,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1267204683.33533") :method
 .annotate "line", 33
     new $P242, "ResizablePMCArray"
     push $P242, "\\r"
@@ -3434,7 +3434,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<tab>"  :subid("79_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<tab>"  :subid("79_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx245_tgt
     .local int rx245_pos
@@ -3496,7 +3496,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1267204683.33533") :method
 .annotate "line", 33
     new $P247, "ResizablePMCArray"
     push $P247, "\\t"
@@ -3505,7 +3505,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<hex>"  :subid("81_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<hex>"  :subid("81_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx250_tgt
     .local int rx250_pos
@@ -3603,7 +3603,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<hex>"  :subid("82_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<hex>"  :subid("82_1267204683.33533") :method
 .annotate "line", 33
     new $P252, "ResizablePMCArray"
     push $P252, unicode:"\\x"
@@ -3612,7 +3612,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<oct>"  :subid("83_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<oct>"  :subid("83_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx256_tgt
     .local int rx256_pos
@@ -3710,7 +3710,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<oct>"  :subid("84_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<oct>"  :subid("84_1267204683.33533") :method
 .annotate "line", 33
     new $P258, "ResizablePMCArray"
     push $P258, "\\o"
@@ -3719,7 +3719,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<chr>"  :subid("85_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<chr>"  :subid("85_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx262_tgt
     .local int rx262_pos
@@ -3788,7 +3788,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<chr>"  :subid("86_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<chr>"  :subid("86_1267204683.33533") :method
 .annotate "line", 33
     new $P264, "ResizablePMCArray"
     push $P264, "\\c"
@@ -3797,9 +3797,9 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charname"  :subid("87_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "charname"  :subid("87_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
-    .const 'Sub' $P276 = "89_1261064003.48945" 
+    .const 'Sub' $P276 = "89_1267204683.33533" 
     capture_lex $P276
     .local string rx267_tgt
     .local int rx267_pos
@@ -3877,7 +3877,7 @@
 .annotate "line", 100
   # rx subrule "before" subtype=zerowidth negate=
     rx267_cur."!cursor_pos"(rx267_pos)
-    .const 'Sub' $P276 = "89_1261064003.48945" 
+    .const 'Sub' $P276 = "89_1267204683.33533" 
     capture_lex $P276
     $P10 = rx267_cur."before"($P276)
     unless $P10, rx267_fail
@@ -3902,7 +3902,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charname"  :subid("88_1261064003.48945") :method
+.sub "!PREFIX__charname"  :subid("88_1267204683.33533") :method
 .annotate "line", 33
     $P269 = self."!PREFIX__!subrule"("integer", "")
     new $P270, "ResizablePMCArray"
@@ -3964,7 +3964,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block275"  :anon :subid("89_1261064003.48945") :method :outer("87_1261064003.48945")
+.sub "_block275"  :anon :subid("89_1267204683.33533") :method :outer("87_1267204683.33533")
 .annotate "line", 100
     .local string rx277_tgt
     .local int rx277_pos
@@ -4024,7 +4024,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charnames"  :subid("90_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "charnames"  :subid("90_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx280_tgt
     .local int rx280_pos
@@ -4108,7 +4108,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charnames"  :subid("91_1261064003.48945") :method
+.sub "!PREFIX__charnames"  :subid("91_1267204683.33533") :method
 .annotate "line", 33
     new $P282, "ResizablePMCArray"
     push $P282, ""
@@ -4117,7 +4117,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charspec"  :subid("92_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "charspec"  :subid("92_1267204683.33533") :method :outer("11_1267204683.33533")
 .annotate "line", 33
     .local string rx287_tgt
     .local int rx287_pos
@@ -4247,7 +4247,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charspec"  :subid("93_1261064003.48945") :method
+.sub "!PREFIX__charspec"  :subid("93_1267204683.33533") :method
 .annotate "line", 33
     $P289 = self."!PREFIX__!subrule"("", "")
     $P290 = self."!PREFIX__!subrule"("charnames", "[")
@@ -4289,91 +4289,99 @@
 ### .include 'gen/hllgrammar-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064005.70696")
+.sub "_block11"  :anon :subid("10_1267204685.44293")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
 .annotate "line", 3
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
-    $P451 = $P14()
+    $P538 = $P14()
 .annotate "line", 1
-    .return ($P451)
+    .return ($P538)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post41") :outer("10_1261064005.70696")
+.sub "" :load :init :subid("post46") :outer("10_1267204685.44293")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064005.70696" 
+    .const 'Sub' $P12 = "10_1267204685.44293" 
     .local pmc block
     set block, $P12
-    $P452 = get_root_global ["parrot"], "P6metaclass"
-    $P452."new_class"("HLL::Actions")
+    $P539 = get_root_global ["parrot"], "P6metaclass"
+    $P539."new_class"("HLL::Actions")
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block13"  :subid("11_1261064005.70696") :outer("10_1261064005.70696")
+.sub "_block13"  :subid("11_1267204685.44293") :outer("10_1267204685.44293")
 .annotate "line", 3
-    .const 'Sub' $P434 = "40_1261064005.70696" 
-    capture_lex $P434
-    .const 'Sub' $P417 = "39_1261064005.70696" 
-    capture_lex $P417
-    .const 'Sub' $P410 = "38_1261064005.70696" 
-    capture_lex $P410
-    .const 'Sub' $P403 = "37_1261064005.70696" 
-    capture_lex $P403
-    .const 'Sub' $P396 = "36_1261064005.70696" 
-    capture_lex $P396
-    .const 'Sub' $P389 = "35_1261064005.70696" 
-    capture_lex $P389
-    .const 'Sub' $P379 = "34_1261064005.70696" 
-    capture_lex $P379
-    .const 'Sub' $P372 = "33_1261064005.70696" 
-    capture_lex $P372
-    .const 'Sub' $P356 = "32_1261064005.70696" 
-    capture_lex $P356
-    .const 'Sub' $P281 = "30_1261064005.70696" 
-    capture_lex $P281
-    .const 'Sub' $P222 = "27_1261064005.70696" 
+    .const 'Sub' $P521 = "45_1267204685.44293" 
+    capture_lex $P521
+    .const 'Sub' $P496 = "43_1267204685.44293" 
+    capture_lex $P496
+    .const 'Sub' $P465 = "42_1267204685.44293" 
+    capture_lex $P465
+    .const 'Sub' $P455 = "41_1267204685.44293" 
+    capture_lex $P455
+    .const 'Sub' $P438 = "40_1267204685.44293" 
+    capture_lex $P438
+    .const 'Sub' $P421 = "39_1267204685.44293" 
+    capture_lex $P421
+    .const 'Sub' $P414 = "38_1267204685.44293" 
+    capture_lex $P414
+    .const 'Sub' $P407 = "37_1267204685.44293" 
+    capture_lex $P407
+    .const 'Sub' $P400 = "36_1267204685.44293" 
+    capture_lex $P400
+    .const 'Sub' $P393 = "35_1267204685.44293" 
+    capture_lex $P393
+    .const 'Sub' $P383 = "34_1267204685.44293" 
+    capture_lex $P383
+    .const 'Sub' $P376 = "33_1267204685.44293" 
+    capture_lex $P376
+    .const 'Sub' $P360 = "32_1267204685.44293" 
+    capture_lex $P360
+    .const 'Sub' $P285 = "30_1267204685.44293" 
+    capture_lex $P285
+    .const 'Sub' $P222 = "27_1267204685.44293" 
     capture_lex $P222
-    .const 'Sub' $P213 = "26_1261064005.70696" 
+    .const 'Sub' $P213 = "26_1267204685.44293" 
     capture_lex $P213
-    .const 'Sub' $P204 = "25_1261064005.70696" 
+    .const 'Sub' $P204 = "25_1267204685.44293" 
     capture_lex $P204
-    .const 'Sub' $P195 = "24_1261064005.70696" 
+    .const 'Sub' $P195 = "24_1267204685.44293" 
     capture_lex $P195
-    .const 'Sub' $P186 = "23_1261064005.70696" 
+    .const 'Sub' $P186 = "23_1267204685.44293" 
     capture_lex $P186
-    .const 'Sub' $P177 = "22_1261064005.70696" 
+    .const 'Sub' $P177 = "22_1267204685.44293" 
     capture_lex $P177
-    .const 'Sub' $P167 = "21_1261064005.70696" 
+    .const 'Sub' $P167 = "21_1267204685.44293" 
     capture_lex $P167
-    .const 'Sub' $P157 = "20_1261064005.70696" 
+    .const 'Sub' $P157 = "20_1267204685.44293" 
     capture_lex $P157
-    .const 'Sub' $P149 = "19_1261064005.70696" 
+    .const 'Sub' $P149 = "19_1267204685.44293" 
     capture_lex $P149
-    .const 'Sub' $P139 = "18_1261064005.70696" 
+    .const 'Sub' $P139 = "18_1267204685.44293" 
     capture_lex $P139
-    .const 'Sub' $P129 = "17_1261064005.70696" 
+    .const 'Sub' $P129 = "17_1267204685.44293" 
     capture_lex $P129
-    .const 'Sub' $P28 = "14_1261064005.70696" 
+    .const 'Sub' $P28 = "14_1267204685.44293" 
     capture_lex $P28
-    .const 'Sub' $P22 = "13_1261064005.70696" 
+    .const 'Sub' $P22 = "13_1267204685.44293" 
     capture_lex $P22
-    .const 'Sub' $P15 = "12_1261064005.70696" 
+    .const 'Sub' $P15 = "12_1267204685.44293" 
     capture_lex $P15
-.annotate "line", 163
-    .const 'Sub' $P434 = "40_1261064005.70696" 
-    capture_lex $P434
+.annotate "line", 188
+    .const 'Sub' $P521 = "45_1267204685.44293" 
+    capture_lex $P521
 .annotate "line", 3
-    .return ($P434)
+    .return ($P521)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "string_to_int"  :subid("12_1261064005.70696") :outer("11_1261064005.70696")
+.sub "string_to_int"  :subid("12_1267204685.44293") :outer("11_1267204685.44293")
     .param pmc param_18
     .param pmc param_19
 .annotate "line", 3
@@ -4426,7 +4434,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "ints_to_string"  :subid("13_1261064005.70696") :outer("11_1261064005.70696")
+.sub "ints_to_string"  :subid("13_1267204685.44293") :outer("11_1267204685.44293")
     .param pmc param_25
 .annotate "line", 37
     new $P24, 'ExceptionHandler'
@@ -4467,14 +4475,14 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "EXPR"  :subid("14_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "EXPR"  :subid("14_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_31
     .param pmc param_32 :optional
     .param int has_param_32 :opt_flag
 .annotate "line", 62
-    .const 'Sub' $P111 = "16_1261064005.70696" 
+    .const 'Sub' $P111 = "16_1267204685.44293" 
     capture_lex $P111
-    .const 'Sub' $P78 = "15_1261064005.70696" 
+    .const 'Sub' $P78 = "15_1267204685.44293" 
     capture_lex $P78
     new $P30, 'ExceptionHandler'
     set_addr $P30, control_29
@@ -4482,10 +4490,10 @@
     push_eh $P30
     .lex "self", self
     .lex "$/", param_31
-    if has_param_32, optparam_42
+    if has_param_32, optparam_47
     new $P33, "Undef"
     set param_32, $P33
-  optparam_42:
+  optparam_47:
     .lex "$key", param_32
 .annotate "line", 64
     new $P34, "Undef"
@@ -4507,13 +4515,13 @@
     defined $I43, $P39
     if $I43, default_42
     find_lex $P44, "$/"
-    unless_null $P44, vivify_43
-    new $P44, "Hash"
-  vivify_43:
+    unless_null $P44, vivify_48
+    $P44 = root_new ['parrot';'Hash']
+  vivify_48:
     set $P45, $P44["OPER"]
-    unless_null $P45, vivify_44
+    unless_null $P45, vivify_49
     new $P45, "Undef"
-  vivify_44:
+  vivify_49:
     $P46 = $P45."ast"()
     set $P39, $P46
   default_42:
@@ -4528,57 +4536,57 @@
     store_lex "$past", $P51
 .annotate "line", 67
     find_lex $P53, "$/"
-    unless_null $P53, vivify_45
-    new $P53, "Hash"
-  vivify_45:
+    unless_null $P53, vivify_50
+    $P53 = root_new ['parrot';'Hash']
+  vivify_50:
     set $P54, $P53["OPER"]
-    unless_null $P54, vivify_46
-    new $P54, "Hash"
-  vivify_46:
+    unless_null $P54, vivify_51
+    $P54 = root_new ['parrot';'Hash']
+  vivify_51:
     set $P55, $P54["O"]
-    unless_null $P55, vivify_47
-    new $P55, "Hash"
-  vivify_47:
+    unless_null $P55, vivify_52
+    $P55 = root_new ['parrot';'Hash']
+  vivify_52:
     set $P56, $P55["pasttype"]
-    unless_null $P56, vivify_48
+    unless_null $P56, vivify_53
     new $P56, "Undef"
-  vivify_48:
+  vivify_53:
     if $P56, if_52
 .annotate "line", 68
     find_lex $P64, "$/"
-    unless_null $P64, vivify_49
-    new $P64, "Hash"
-  vivify_49:
+    unless_null $P64, vivify_54
+    $P64 = root_new ['parrot';'Hash']
+  vivify_54:
     set $P65, $P64["OPER"]
-    unless_null $P65, vivify_50
-    new $P65, "Hash"
-  vivify_50:
+    unless_null $P65, vivify_55
+    $P65 = root_new ['parrot';'Hash']
+  vivify_55:
     set $P66, $P65["O"]
-    unless_null $P66, vivify_51
-    new $P66, "Hash"
-  vivify_51:
+    unless_null $P66, vivify_56
+    $P66 = root_new ['parrot';'Hash']
+  vivify_56:
     set $P67, $P66["pirop"]
-    unless_null $P67, vivify_52
+    unless_null $P67, vivify_57
     new $P67, "Undef"
-  vivify_52:
+  vivify_57:
     unless $P67, if_63_end
     find_lex $P68, "$past"
     find_lex $P69, "$/"
-    unless_null $P69, vivify_53
-    new $P69, "Hash"
-  vivify_53:
+    unless_null $P69, vivify_58
+    $P69 = root_new ['parrot';'Hash']
+  vivify_58:
     set $P70, $P69["OPER"]
-    unless_null $P70, vivify_54
-    new $P70, "Hash"
-  vivify_54:
+    unless_null $P70, vivify_59
+    $P70 = root_new ['parrot';'Hash']
+  vivify_59:
     set $P71, $P70["O"]
-    unless_null $P71, vivify_55
-    new $P71, "Hash"
-  vivify_55:
+    unless_null $P71, vivify_60
+    $P71 = root_new ['parrot';'Hash']
+  vivify_60:
     set $P72, $P71["pirop"]
-    unless_null $P72, vivify_56
+    unless_null $P72, vivify_61
     new $P72, "Undef"
-  vivify_56:
+  vivify_61:
     set $S73, $P72
     $P68."pirop"($S73)
   if_63_end:
@@ -4587,21 +4595,21 @@
 .annotate "line", 67
     find_lex $P57, "$past"
     find_lex $P58, "$/"
-    unless_null $P58, vivify_57
-    new $P58, "Hash"
-  vivify_57:
+    unless_null $P58, vivify_62
+    $P58 = root_new ['parrot';'Hash']
+  vivify_62:
     set $P59, $P58["OPER"]
-    unless_null $P59, vivify_58
-    new $P59, "Hash"
-  vivify_58:
+    unless_null $P59, vivify_63
+    $P59 = root_new ['parrot';'Hash']
+  vivify_63:
     set $P60, $P59["O"]
-    unless_null $P60, vivify_59
-    new $P60, "Hash"
-  vivify_59:
+    unless_null $P60, vivify_64
+    $P60 = root_new ['parrot';'Hash']
+  vivify_64:
     set $P61, $P60["pasttype"]
-    unless_null $P61, vivify_60
+    unless_null $P61, vivify_65
     new $P61, "Undef"
-  vivify_60:
+  vivify_65:
     set $S62, $P61
     $P57."pasttype"($S62)
   if_52_end:
@@ -4609,7 +4617,7 @@
     find_lex $P75, "$past"
     $P76 = $P75."name"()
     if $P76, unless_74_end
-    .const 'Sub' $P78 = "15_1261064005.70696" 
+    .const 'Sub' $P78 = "15_1267204685.44293" 
     capture_lex $P78
     $P78()
   unless_74_end:
@@ -4623,7 +4631,7 @@
     find_lex $P106, "$/"
     $P107 = $P106."list"()
     defined $I108, $P107
-    unless $I108, for_undef_64
+    unless $I108, for_undef_69
     iter $P105, $P107
     new $P123, 'ExceptionHandler'
     set_addr $P123, loop122_handler
@@ -4633,7 +4641,7 @@
     unless $P105, loop122_done
     shift $P109, $P105
   loop122_redo:
-    .const 'Sub' $P111 = "16_1261064005.70696" 
+    .const 'Sub' $P111 = "16_1267204685.44293" 
     capture_lex $P111
     $P111($P109)
   loop122_next:
@@ -4646,20 +4654,20 @@
     eq $P124, 67, loop122_redo
   loop122_done:
     pop_eh 
-  for_undef_64:
+  for_undef_69:
 .annotate "line", 81
     goto if_97_end
   if_97:
 .annotate "line", 80
     find_lex $P101, "$past"
     find_lex $P102, "$/"
-    unless_null $P102, vivify_65
-    new $P102, "ResizablePMCArray"
-  vivify_65:
+    unless_null $P102, vivify_70
+    $P102 = root_new ['parrot';'ResizablePMCArray']
+  vivify_70:
     set $P103, $P102[0]
-    unless_null $P103, vivify_66
+    unless_null $P103, vivify_71
     new $P103, "Undef"
-  vivify_66:
+  vivify_71:
     $P104 = $P103."ast"()
     $P101."unshift"($P104)
   if_97_end:
@@ -4678,7 +4686,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block77"  :anon :subid("15_1261064005.70696") :outer("14_1261064005.70696")
+.sub "_block77"  :anon :subid("15_1267204685.44293") :outer("14_1267204685.44293")
 .annotate "line", 71
     new $P79, "Undef"
     .lex "$name", $P79
@@ -4701,17 +4709,17 @@
     concat $P86, $P85, ":<"
 .annotate "line", 76
     find_lex $P87, "$/"
-    unless_null $P87, vivify_61
-    new $P87, "Hash"
-  vivify_61:
+    unless_null $P87, vivify_66
+    $P87 = root_new ['parrot';'Hash']
+  vivify_66:
     set $P88, $P87["OPER"]
-    unless_null $P88, vivify_62
-    new $P88, "Hash"
-  vivify_62:
+    unless_null $P88, vivify_67
+    $P88 = root_new ['parrot';'Hash']
+  vivify_67:
     set $P89, $P88["sym"]
-    unless_null $P89, vivify_63
+    unless_null $P89, vivify_68
     new $P89, "Undef"
-  vivify_63:
+  vivify_68:
     concat $P90, $P86, $P89
     concat $P91, $P90, ">"
     store_lex "$name", $P91
@@ -4728,7 +4736,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block110"  :anon :subid("16_1261064005.70696") :outer("14_1261064005.70696")
+.sub "_block110"  :anon :subid("16_1267204685.44293") :outer("14_1267204685.44293")
     .param pmc param_112
 .annotate "line", 82
     .lex "$_", param_112
@@ -4751,7 +4759,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "term:sym<circumfix>"  :subid("17_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "term:sym<circumfix>"  :subid("17_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_132
 .annotate "line", 87
     new $P131, 'ExceptionHandler'
@@ -4762,13 +4770,13 @@
     .lex "$/", param_132
     find_lex $P133, "$/"
     find_lex $P134, "$/"
-    unless_null $P134, vivify_67
-    new $P134, "Hash"
-  vivify_67:
+    unless_null $P134, vivify_72
+    $P134 = root_new ['parrot';'Hash']
+  vivify_72:
     set $P135, $P134["circumfix"]
-    unless_null $P135, vivify_68
+    unless_null $P135, vivify_73
     new $P135, "Undef"
-  vivify_68:
+  vivify_73:
     $P136 = $P135."ast"()
     $P137 = $P133."!make"($P136)
     .return ($P137)
@@ -4781,7 +4789,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "termish"  :subid("18_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "termish"  :subid("18_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_142
 .annotate "line", 89
     new $P141, 'ExceptionHandler'
@@ -4792,13 +4800,13 @@
     .lex "$/", param_142
     find_lex $P143, "$/"
     find_lex $P144, "$/"
-    unless_null $P144, vivify_69
-    new $P144, "Hash"
-  vivify_69:
+    unless_null $P144, vivify_74
+    $P144 = root_new ['parrot';'Hash']
+  vivify_74:
     set $P145, $P144["term"]
-    unless_null $P145, vivify_70
+    unless_null $P145, vivify_75
     new $P145, "Undef"
-  vivify_70:
+  vivify_75:
     $P146 = $P145."ast"()
     $P147 = $P143."!make"($P146)
     .return ($P147)
@@ -4811,7 +4819,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm"  :subid("19_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "nullterm"  :subid("19_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_152
 .annotate "line", 90
     new $P151, 'ExceptionHandler'
@@ -4833,7 +4841,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm_alt"  :subid("20_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "nullterm_alt"  :subid("20_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_160
 .annotate "line", 91
     new $P159, 'ExceptionHandler'
@@ -4844,13 +4852,13 @@
     .lex "$/", param_160
     find_lex $P161, "$/"
     find_lex $P162, "$/"
-    unless_null $P162, vivify_71
-    new $P162, "Hash"
-  vivify_71:
+    unless_null $P162, vivify_76
+    $P162 = root_new ['parrot';'Hash']
+  vivify_76:
     set $P163, $P162["term"]
-    unless_null $P163, vivify_72
+    unless_null $P163, vivify_77
     new $P163, "Undef"
-  vivify_72:
+  vivify_77:
     $P164 = $P163."ast"()
     $P165 = $P161."!make"($P164)
     .return ($P165)
@@ -4863,7 +4871,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "integer"  :subid("21_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "integer"  :subid("21_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_170
 .annotate "line", 93
     new $P169, 'ExceptionHandler'
@@ -4874,13 +4882,13 @@
     .lex "$/", param_170
     find_lex $P171, "$/"
     find_lex $P172, "$/"
-    unless_null $P172, vivify_73
-    new $P172, "Hash"
-  vivify_73:
+    unless_null $P172, vivify_78
+    $P172 = root_new ['parrot';'Hash']
+  vivify_78:
     set $P173, $P172["VALUE"]
-    unless_null $P173, vivify_74
+    unless_null $P173, vivify_79
     new $P173, "Undef"
-  vivify_74:
+  vivify_79:
     $P174 = $P173."ast"()
     $P175 = $P171."!make"($P174)
     .return ($P175)
@@ -4893,7 +4901,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "dec_number"  :subid("22_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "dec_number"  :subid("22_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_180
 .annotate "line", 95
     new $P179, 'ExceptionHandler'
@@ -4916,7 +4924,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "decint"  :subid("23_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "decint"  :subid("23_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_189
 .annotate "line", 97
     new $P188, 'ExceptionHandler'
@@ -4939,7 +4947,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "hexint"  :subid("24_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "hexint"  :subid("24_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_198
 .annotate "line", 98
     new $P197, 'ExceptionHandler'
@@ -4962,7 +4970,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "octint"  :subid("25_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "octint"  :subid("25_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_207
 .annotate "line", 99
     new $P206, 'ExceptionHandler'
@@ -4985,7 +4993,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "binint"  :subid("26_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "binint"  :subid("26_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_216
 .annotate "line", 100
     new $P215, 'ExceptionHandler'
@@ -5008,10 +5016,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_EXPR"  :subid("27_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_EXPR"  :subid("27_1267204685.44293") :method :outer("11_1267204685.44293")
     .param pmc param_225
 .annotate "line", 102
-    .const 'Sub' $P241 = "28_1261064005.70696" 
+    .const 'Sub' $P241 = "28_1267204685.44293" 
     capture_lex $P241
     new $P224, 'ExceptionHandler'
     set_addr $P224, control_223
@@ -5023,13 +5031,13 @@
     new $P226, "Undef"
     .lex "$past", $P226
     find_lex $P227, "$/"
-    unless_null $P227, vivify_75
-    new $P227, "Hash"
-  vivify_75:
+    unless_null $P227, vivify_80
+    $P227 = root_new ['parrot';'Hash']
+  vivify_80:
     set $P228, $P227["quote_delimited"]
-    unless_null $P228, vivify_76
+    unless_null $P228, vivify_81
     new $P228, "Undef"
-  vivify_76:
+  vivify_81:
     $P229 = $P228."ast"()
     store_lex "$past", $P229
 .annotate "line", 104
@@ -5043,7 +5051,7 @@
     $P237 = $P235."ACCEPTS"($P236)
     if $P237, if_234
 .annotate "line", 108
-    .const 'Sub' $P241 = "28_1261064005.70696" 
+    .const 'Sub' $P241 = "28_1267204685.44293" 
     capture_lex $P241
     $P241()
     goto if_234_end
@@ -5054,40 +5062,40 @@
     $P239."panic"("Can't form :w list from non-constant strings (yet)")
   if_234_end:
   if_230_end:
-.annotate "line", 116
-    get_hll_global $P269, ["PAST"], "Node"
-    find_lex $P270, "$past"
-    $P271 = $P269."ACCEPTS"($P270)
-    isfalse $I272, $P271
-    unless $I272, if_268_end
-.annotate "line", 117
-    get_hll_global $P273, ["PAST"], "Val"
-    find_lex $P274, "$past"
-    set $S275, $P274
-    $P276 = $P273."new"($S275 :named("value"))
-    store_lex "$past", $P276
-  if_268_end:
 .annotate "line", 119
-    find_lex $P277, "$/"
+    get_hll_global $P273, ["PAST"], "Node"
+    find_lex $P274, "$past"
+    $P275 = $P273."ACCEPTS"($P274)
+    isfalse $I276, $P275
+    unless $I276, if_272_end
+.annotate "line", 120
+    get_hll_global $P277, ["PAST"], "Val"
     find_lex $P278, "$past"
-    $P279 = $P277."!make"($P278)
+    set $S279, $P278
+    $P280 = $P277."new"($S279 :named("value"))
+    store_lex "$past", $P280
+  if_272_end:
+.annotate "line", 122
+    find_lex $P281, "$/"
+    find_lex $P282, "$past"
+    $P283 = $P281."!make"($P282)
 .annotate "line", 102
-    .return ($P279)
+    .return ($P283)
   control_223:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P280, exception, "payload"
-    .return ($P280)
+    getattribute $P284, exception, "payload"
+    .return ($P284)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block240"  :anon :subid("28_1261064005.70696") :outer("27_1261064005.70696")
+.sub "_block240"  :anon :subid("28_1267204685.44293") :outer("27_1267204685.44293")
 .annotate "line", 108
-    .const 'Sub' $P260 = "29_1261064005.70696" 
+    .const 'Sub' $P260 = "29_1267204685.44293" 
     capture_lex $P260
 .annotate "line", 109
-    new $P242, "ResizablePMCArray"
+    $P242 = root_new ['parrot';'ResizablePMCArray']
     .lex "@words", $P242
     get_hll_global $P243, ["HLL";"Grammar"], "split_words"
     find_lex $P244, "$/"
@@ -5099,8 +5107,22 @@
     set $N250, $P249
     isgt $I251, $N250, 1.0
     if $I251, if_248
-    new $P247, 'Integer'
-    set $P247, $I251
+.annotate "line", 115
+    find_lex $P268, "@words"
+    unless_null $P268, vivify_82
+    $P268 = root_new ['parrot';'ResizablePMCArray']
+  vivify_82:
+    set $P269, $P268[0]
+    unless_null $P269, vivify_83
+    new $P269, "Undef"
+  vivify_83:
+    set $S270, $P269
+    new $P271, 'String'
+    set $P271, $S270
+    store_lex "$past", $P271
+.annotate "line", 114
+    set $P247, $P271
+.annotate "line", 110
     goto if_248_end
   if_248:
 .annotate "line", 111
@@ -5111,7 +5133,7 @@
 .annotate "line", 112
     find_lex $P256, "@words"
     defined $I257, $P256
-    unless $I257, for_undef_77
+    unless $I257, for_undef_84
     iter $P255, $P256
     new $P266, 'ExceptionHandler'
     set_addr $P266, loop265_handler
@@ -5121,7 +5143,7 @@
     unless $P255, loop265_done
     shift $P258, $P255
   loop265_redo:
-    .const 'Sub' $P260 = "29_1261064005.70696" 
+    .const 'Sub' $P260 = "29_1267204685.44293" 
     capture_lex $P260
     $P260($P258)
   loop265_next:
@@ -5134,7 +5156,7 @@
     eq $P267, 67, loop265_redo
   loop265_done:
     pop_eh 
-  for_undef_77:
+  for_undef_84:
 .annotate "line", 110
     set $P247, $P255
   if_248_end:
@@ -5144,7 +5166,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block259"  :anon :subid("29_1261064005.70696") :outer("28_1261064005.70696")
+.sub "_block259"  :anon :subid("29_1267204685.44293") :outer("28_1267204685.44293")
     .param pmc param_261
 .annotate "line", 112
     .lex "$_", param_261
@@ -5156,501 +5178,736 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_delimited"  :subid("30_1261064005.70696") :method :outer("11_1261064005.70696")
-    .param pmc param_284
-.annotate "line", 122
-    .const 'Sub' $P296 = "31_1261064005.70696" 
-    capture_lex $P296
-    new $P283, 'ExceptionHandler'
-    set_addr $P283, control_282
-    $P283."handle_types"(58)
-    push_eh $P283
+.sub "quote_delimited"  :subid("30_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_288
+.annotate "line", 125
+    .const 'Sub' $P300 = "31_1267204685.44293" 
+    capture_lex $P300
+    new $P287, 'ExceptionHandler'
+    set_addr $P287, control_286
+    $P287."handle_types"(58)
+    push_eh $P287
     .lex "self", self
-    .lex "$/", param_284
-.annotate "line", 123
-    new $P285, "ResizablePMCArray"
-    .lex "@parts", $P285
-.annotate "line", 124
-    new $P286, "Undef"
-    .lex "$lastlit", $P286
-.annotate "line", 140
-    new $P287, "Undef"
-    .lex "$past", $P287
-.annotate "line", 122
-    find_lex $P288, "@parts"
-.annotate "line", 124
-    new $P289, "String"
-    assign $P289, ""
-    store_lex "$lastlit", $P289
+    .lex "$/", param_288
+.annotate "line", 126
+    $P289 = root_new ['parrot';'ResizablePMCArray']
+    .lex "@parts", $P289
+.annotate "line", 127
+    new $P290, "Undef"
+    .lex "$lastlit", $P290
+.annotate "line", 143
+    new $P291, "Undef"
+    .lex "$past", $P291
 .annotate "line", 125
-    find_lex $P291, "$/"
-    unless_null $P291, vivify_78
-    new $P291, "Hash"
-  vivify_78:
-    set $P292, $P291["quote_atom"]
-    unless_null $P292, vivify_79
-    new $P292, "Undef"
-  vivify_79:
-    defined $I293, $P292
-    unless $I293, for_undef_80
-    iter $P290, $P292
-    new $P329, 'ExceptionHandler'
-    set_addr $P329, loop328_handler
-    $P329."handle_types"(65, 67, 66)
-    push_eh $P329
-  loop328_test:
-    unless $P290, loop328_done
-    shift $P294, $P290
-  loop328_redo:
-    .const 'Sub' $P296 = "31_1261064005.70696" 
-    capture_lex $P296
-    $P296($P294)
-  loop328_next:
-    goto loop328_test
-  loop328_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P330, exception, 'type'
-    eq $P330, 65, loop328_next
-    eq $P330, 67, loop328_redo
-  loop328_done:
+    find_lex $P292, "@parts"
+.annotate "line", 127
+    new $P293, "String"
+    assign $P293, ""
+    store_lex "$lastlit", $P293
+.annotate "line", 128
+    find_lex $P295, "$/"
+    unless_null $P295, vivify_85
+    $P295 = root_new ['parrot';'Hash']
+  vivify_85:
+    set $P296, $P295["quote_atom"]
+    unless_null $P296, vivify_86
+    new $P296, "Undef"
+  vivify_86:
+    defined $I297, $P296
+    unless $I297, for_undef_87
+    iter $P294, $P296
+    new $P333, 'ExceptionHandler'
+    set_addr $P333, loop332_handler
+    $P333."handle_types"(65, 67, 66)
+    push_eh $P333
+  loop332_test:
+    unless $P294, loop332_done
+    shift $P298, $P294
+  loop332_redo:
+    .const 'Sub' $P300 = "31_1267204685.44293" 
+    capture_lex $P300
+    $P300($P298)
+  loop332_next:
+    goto loop332_test
+  loop332_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P334, exception, 'type'
+    eq $P334, 65, loop332_next
+    eq $P334, 67, loop332_redo
+  loop332_done:
     pop_eh 
-  for_undef_80:
-.annotate "line", 139
-    find_lex $P332, "$lastlit"
-    set $S333, $P332
-    isgt $I334, $S333, ""
-    unless $I334, if_331_end
-    find_lex $P335, "@parts"
+  for_undef_87:
+.annotate "line", 142
     find_lex $P336, "$lastlit"
-    $P335."push"($P336)
-  if_331_end:
-.annotate "line", 140
+    set $S337, $P336
+    isgt $I338, $S337, ""
+    unless $I338, if_335_end
     find_lex $P339, "@parts"
-    if $P339, if_338
-    new $P342, "String"
-    assign $P342, ""
-    set $P337, $P342
-    goto if_338_end
-  if_338:
-    find_lex $P340, "@parts"
-    $P341 = $P340."shift"()
-    set $P337, $P341
-  if_338_end:
-    store_lex "$past", $P337
-.annotate "line", 141
-    new $P350, 'ExceptionHandler'
-    set_addr $P350, loop349_handler
-    $P350."handle_types"(65, 67, 66)
-    push_eh $P350
-  loop349_test:
+    find_lex $P340, "$lastlit"
+    $P339."push"($P340)
+  if_335_end:
+.annotate "line", 143
     find_lex $P343, "@parts"
-    unless $P343, loop349_done
-  loop349_redo:
-.annotate "line", 142
-    get_hll_global $P344, ["PAST"], "Op"
-    find_lex $P345, "$past"
-    find_lex $P346, "@parts"
-    $P347 = $P346."shift"()
-    $P348 = $P344."new"($P345, $P347, "concat" :named("pirop"))
-    store_lex "$past", $P348
-  loop349_next:
-.annotate "line", 141
-    goto loop349_test
-  loop349_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P351, exception, 'type'
-    eq $P351, 65, loop349_next
-    eq $P351, 67, loop349_redo
-  loop349_done:
-    pop_eh 
+    if $P343, if_342
+    new $P346, "String"
+    assign $P346, ""
+    set $P341, $P346
+    goto if_342_end
+  if_342:
+    find_lex $P344, "@parts"
+    $P345 = $P344."shift"()
+    set $P341, $P345
+  if_342_end:
+    store_lex "$past", $P341
 .annotate "line", 144
-    find_lex $P352, "$/"
-    find_lex $P353, "$past"
-    $P354 = $P352."!make"($P353)
-.annotate "line", 122
-    .return ($P354)
-  control_282:
+    new $P354, 'ExceptionHandler'
+    set_addr $P354, loop353_handler
+    $P354."handle_types"(65, 67, 66)
+    push_eh $P354
+  loop353_test:
+    find_lex $P347, "@parts"
+    unless $P347, loop353_done
+  loop353_redo:
+.annotate "line", 145
+    get_hll_global $P348, ["PAST"], "Op"
+    find_lex $P349, "$past"
+    find_lex $P350, "@parts"
+    $P351 = $P350."shift"()
+    $P352 = $P348."new"($P349, $P351, "concat" :named("pirop"))
+    store_lex "$past", $P352
+  loop353_next:
+.annotate "line", 144
+    goto loop353_test
+  loop353_handler:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P355, exception, "payload"
-    .return ($P355)
+    getattribute $P355, exception, 'type'
+    eq $P355, 65, loop353_next
+    eq $P355, 67, loop353_redo
+  loop353_done:
+    pop_eh 
+.annotate "line", 147
+    find_lex $P356, "$/"
+    find_lex $P357, "$past"
+    $P358 = $P356."!make"($P357)
+.annotate "line", 125
+    .return ($P358)
+  control_286:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P359, exception, "payload"
+    .return ($P359)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block295"  :anon :subid("31_1261064005.70696") :outer("30_1261064005.70696")
-    .param pmc param_298
-.annotate "line", 126
-    new $P297, "Undef"
-    .lex "$ast", $P297
-    .lex "$_", param_298
-    find_lex $P299, "$_"
-    $P300 = $P299."ast"()
-    store_lex "$ast", $P300
-.annotate "line", 127
-    get_hll_global $P303, ["PAST"], "Node"
-    find_lex $P304, "$ast"
-    $P305 = $P303."ACCEPTS"($P304)
-    isfalse $I306, $P305
-    if $I306, if_302
+.sub "_block299"  :anon :subid("31_1267204685.44293") :outer("30_1267204685.44293")
+    .param pmc param_302
+.annotate "line", 129
+    new $P301, "Undef"
+    .lex "$ast", $P301
+    .lex "$_", param_302
+    find_lex $P303, "$_"
+    $P304 = $P303."ast"()
+    store_lex "$ast", $P304
 .annotate "line", 130
-    find_lex $P312, "$ast"
-    get_hll_global $P313, ["PAST"], "Val"
-    $P314 = $P312."isa"($P313)
-    if $P314, if_311
-.annotate "line", 134
-    find_lex $P320, "$lastlit"
-    set $S321, $P320
-    isgt $I322, $S321, ""
-    unless $I322, if_319_end
-    find_lex $P323, "@parts"
+    get_hll_global $P307, ["PAST"], "Node"
+    find_lex $P308, "$ast"
+    $P309 = $P307."ACCEPTS"($P308)
+    isfalse $I310, $P309
+    if $I310, if_306
+.annotate "line", 133
+    find_lex $P316, "$ast"
+    get_hll_global $P317, ["PAST"], "Val"
+    $P318 = $P316."isa"($P317)
+    if $P318, if_315
+.annotate "line", 137
     find_lex $P324, "$lastlit"
-    $P323."push"($P324)
-  if_319_end:
-.annotate "line", 135
-    find_lex $P325, "@parts"
-    find_lex $P326, "$ast"
-    $P325."push"($P326)
+    set $S325, $P324
+    isgt $I326, $S325, ""
+    unless $I326, if_323_end
+    find_lex $P327, "@parts"
+    find_lex $P328, "$lastlit"
+    $P327."push"($P328)
+  if_323_end:
+.annotate "line", 138
+    find_lex $P329, "@parts"
+    find_lex $P330, "$ast"
+    $P329."push"($P330)
+.annotate "line", 139
+    new $P331, "String"
+    assign $P331, ""
+    store_lex "$lastlit", $P331
 .annotate "line", 136
-    new $P327, "String"
-    assign $P327, ""
-    store_lex "$lastlit", $P327
+    set $P314, $P331
+.annotate "line", 133
+    goto if_315_end
+  if_315:
+.annotate "line", 134
+    find_lex $P319, "$lastlit"
+    find_lex $P320, "$ast"
+    $S321 = $P320."value"()
+    concat $P322, $P319, $S321
+    store_lex "$lastlit", $P322
 .annotate "line", 133
-    set $P310, $P327
+    set $P314, $P322
+  if_315_end:
+    set $P305, $P314
 .annotate "line", 130
-    goto if_311_end
-  if_311:
+    goto if_306_end
+  if_306:
 .annotate "line", 131
-    find_lex $P315, "$lastlit"
-    find_lex $P316, "$ast"
-    $S317 = $P316."value"()
-    concat $P318, $P315, $S317
-    store_lex "$lastlit", $P318
+    find_lex $P311, "$lastlit"
+    find_lex $P312, "$ast"
+    concat $P313, $P311, $P312
+    store_lex "$lastlit", $P313
 .annotate "line", 130
-    set $P310, $P318
-  if_311_end:
-    set $P301, $P310
-.annotate "line", 127
-    goto if_302_end
-  if_302:
+    set $P305, $P313
+  if_306_end:
 .annotate "line", 128
-    find_lex $P307, "$lastlit"
-    find_lex $P308, "$ast"
-    concat $P309, $P307, $P308
-    store_lex "$lastlit", $P309
-.annotate "line", 127
-    set $P301, $P309
-  if_302_end:
-.annotate "line", 125
-    .return ($P301)
+    .return ($P305)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_atom"  :subid("32_1261064005.70696") :method :outer("11_1261064005.70696")
-    .param pmc param_359
-.annotate "line", 147
-    new $P358, 'ExceptionHandler'
-    set_addr $P358, control_357
-    $P358."handle_types"(58)
-    push_eh $P358
+.sub "quote_atom"  :subid("32_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_363
+.annotate "line", 150
+    new $P362, 'ExceptionHandler'
+    set_addr $P362, control_361
+    $P362."handle_types"(58)
+    push_eh $P362
     .lex "self", self
-    .lex "$/", param_359
-.annotate "line", 148
-    find_lex $P360, "$/"
-    find_lex $P363, "$/"
-    unless_null $P363, vivify_81
-    new $P363, "Hash"
-  vivify_81:
-    set $P364, $P363["quote_escape"]
-    unless_null $P364, vivify_82
-    new $P364, "Undef"
-  vivify_82:
-    if $P364, if_362
-    find_lex $P368, "$/"
-    set $S369, $P368
-    new $P361, 'String'
-    set $P361, $S369
-    goto if_362_end
-  if_362:
-    find_lex $P365, "$/"
-    unless_null $P365, vivify_83
-    new $P365, "Hash"
-  vivify_83:
-    set $P366, $P365["quote_escape"]
-    unless_null $P366, vivify_84
-    new $P366, "Undef"
-  vivify_84:
-    $P367 = $P366."ast"()
-    set $P361, $P367
-  if_362_end:
-    $P370 = $P360."!make"($P361)
-.annotate "line", 147
-    .return ($P370)
-  control_357:
+    .lex "$/", param_363
+.annotate "line", 151
+    find_lex $P364, "$/"
+    find_lex $P367, "$/"
+    unless_null $P367, vivify_88
+    $P367 = root_new ['parrot';'Hash']
+  vivify_88:
+    set $P368, $P367["quote_escape"]
+    unless_null $P368, vivify_89
+    new $P368, "Undef"
+  vivify_89:
+    if $P368, if_366
+    find_lex $P372, "$/"
+    set $S373, $P372
+    new $P365, 'String'
+    set $P365, $S373
+    goto if_366_end
+  if_366:
+    find_lex $P369, "$/"
+    unless_null $P369, vivify_90
+    $P369 = root_new ['parrot';'Hash']
+  vivify_90:
+    set $P370, $P369["quote_escape"]
+    unless_null $P370, vivify_91
+    new $P370, "Undef"
+  vivify_91:
+    $P371 = $P370."ast"()
+    set $P365, $P371
+  if_366_end:
+    $P374 = $P364."!make"($P365)
+.annotate "line", 150
+    .return ($P374)
+  control_361:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P371, exception, "payload"
-    .return ($P371)
+    getattribute $P375, exception, "payload"
+    .return ($P375)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<backslash>"  :subid("33_1261064005.70696") :method :outer("11_1261064005.70696")
-    .param pmc param_375
-.annotate "line", 151
-    new $P374, 'ExceptionHandler'
-    set_addr $P374, control_373
-    $P374."handle_types"(58)
-    push_eh $P374
+.sub "quote_escape:sym<backslash>"  :subid("33_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_379
+.annotate "line", 154
+    new $P378, 'ExceptionHandler'
+    set_addr $P378, control_377
+    $P378."handle_types"(58)
+    push_eh $P378
     .lex "self", self
-    .lex "$/", param_375
-    find_lex $P376, "$/"
-    $P377 = $P376."!make"("\\")
-    .return ($P377)
-  control_373:
+    .lex "$/", param_379
+    find_lex $P380, "$/"
+    $P381 = $P380."!make"("\\")
+    .return ($P381)
+  control_377:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P378, exception, "payload"
-    .return ($P378)
+    getattribute $P382, exception, "payload"
+    .return ($P382)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<stopper>"  :subid("34_1261064005.70696") :method :outer("11_1261064005.70696")
-    .param pmc param_382
-.annotate "line", 152
-    new $P381, 'ExceptionHandler'
-    set_addr $P381, control_380
-    $P381."handle_types"(58)
-    push_eh $P381
+.sub "quote_escape:sym<stopper>"  :subid("34_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_386
+.annotate "line", 155
+    new $P385, 'ExceptionHandler'
+    set_addr $P385, control_384
+    $P385."handle_types"(58)
+    push_eh $P385
     .lex "self", self
-    .lex "$/", param_382
-    find_lex $P383, "$/"
-    find_lex $P384, "$/"
-    unless_null $P384, vivify_85
-    new $P384, "Hash"
-  vivify_85:
-    set $P385, $P384["stopper"]
-    unless_null $P385, vivify_86
-    new $P385, "Undef"
-  vivify_86:
-    set $S386, $P385
-    $P387 = $P383."!make"($S386)
-    .return ($P387)
-  control_380:
+    .lex "$/", param_386
+    find_lex $P387, "$/"
+    find_lex $P388, "$/"
+    unless_null $P388, vivify_92
+    $P388 = root_new ['parrot';'Hash']
+  vivify_92:
+    set $P389, $P388["stopper"]
+    unless_null $P389, vivify_93
+    new $P389, "Undef"
+  vivify_93:
+    set $S390, $P389
+    $P391 = $P387."!make"($S390)
+    .return ($P391)
+  control_384:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P388, exception, "payload"
-    .return ($P388)
+    getattribute $P392, exception, "payload"
+    .return ($P392)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<bs>"  :subid("35_1261064005.70696") :method :outer("11_1261064005.70696")
-    .param pmc param_392
-.annotate "line", 154
-    new $P391, 'ExceptionHandler'
-    set_addr $P391, control_390
-    $P391."handle_types"(58)
-    push_eh $P391
+.sub "quote_escape:sym<bs>"  :subid("35_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_396
+.annotate "line", 157
+    new $P395, 'ExceptionHandler'
+    set_addr $P395, control_394
+    $P395."handle_types"(58)
+    push_eh $P395
     .lex "self", self
-    .lex "$/", param_392
-    find_lex $P393, "$/"
-    $P394 = $P393."!make"("\b")
-    .return ($P394)
-  control_390:
+    .lex "$/", param_396
+    find_lex $P397, "$/"
+    $P398 = $P397."!make"("\b")
+    .return ($P398)
+  control_394:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P395, exception, "payload"
-    .return ($P395)
+    getattribute $P399, exception, "payload"
+    .return ($P399)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<nl>"  :subid("36_1261064005.70696") :method :outer("11_1261064005.70696")
-    .param pmc param_399
-.annotate "line", 155
-    new $P398, 'ExceptionHandler'
-    set_addr $P398, control_397
-    $P398."handle_types"(58)
-    push_eh $P398
+.sub "quote_escape:sym<nl>"  :subid("36_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_403
+.annotate "line", 158
+    new $P402, 'ExceptionHandler'
+    set_addr $P402, control_401
+    $P402."handle_types"(58)
+    push_eh $P402
     .lex "self", self
-    .lex "$/", param_399
-    find_lex $P400, "$/"
-    $P401 = $P400."!make"("\n")
-    .return ($P401)
-  control_397:
+    .lex "$/", param_403
+    find_lex $P404, "$/"
+    $P405 = $P404."!make"("\n")
+    .return ($P405)
+  control_401:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P402, exception, "payload"
-    .return ($P402)
+    getattribute $P406, exception, "payload"
+    .return ($P406)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<cr>"  :subid("37_1261064005.70696") :method :outer("11_1261064005.70696")
-    .param pmc param_406
-.annotate "line", 156
-    new $P405, 'ExceptionHandler'
-    set_addr $P405, control_404
-    $P405."handle_types"(58)
-    push_eh $P405
+.sub "quote_escape:sym<cr>"  :subid("37_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_410
+.annotate "line", 159
+    new $P409, 'ExceptionHandler'
+    set_addr $P409, control_408
+    $P409."handle_types"(58)
+    push_eh $P409
     .lex "self", self
-    .lex "$/", param_406
-    find_lex $P407, "$/"
-    $P408 = $P407."!make"("\r")
-    .return ($P408)
-  control_404:
+    .lex "$/", param_410
+    find_lex $P411, "$/"
+    $P412 = $P411."!make"("\r")
+    .return ($P412)
+  control_408:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P409, exception, "payload"
-    .return ($P409)
+    getattribute $P413, exception, "payload"
+    .return ($P413)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<tab>"  :subid("38_1261064005.70696") :method :outer("11_1261064005.70696")
-    .param pmc param_413
-.annotate "line", 157
-    new $P412, 'ExceptionHandler'
-    set_addr $P412, control_411
-    $P412."handle_types"(58)
-    push_eh $P412
+.sub "quote_escape:sym<tab>"  :subid("38_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_417
+.annotate "line", 160
+    new $P416, 'ExceptionHandler'
+    set_addr $P416, control_415
+    $P416."handle_types"(58)
+    push_eh $P416
     .lex "self", self
-    .lex "$/", param_413
-    find_lex $P414, "$/"
-    $P415 = $P414."!make"("\t")
-    .return ($P415)
-  control_411:
+    .lex "$/", param_417
+    find_lex $P418, "$/"
+    $P419 = $P418."!make"("\t")
+    .return ($P419)
+  control_415:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P416, exception, "payload"
-    .return ($P416)
+    getattribute $P420, exception, "payload"
+    .return ($P420)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<hex>"  :subid("39_1261064005.70696") :method :outer("11_1261064005.70696")
-    .param pmc param_420
-.annotate "line", 159
-    new $P419, 'ExceptionHandler'
-    set_addr $P419, control_418
-    $P419."handle_types"(58)
-    push_eh $P419
+.sub "quote_escape:sym<hex>"  :subid("39_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_424
+.annotate "line", 162
+    new $P423, 'ExceptionHandler'
+    set_addr $P423, control_422
+    $P423."handle_types"(58)
+    push_eh $P423
     .lex "self", self
-    .lex "$/", param_420
-.annotate "line", 160
-    find_lex $P421, "$/"
-    find_lex $P424, "$/"
-    unless_null $P424, vivify_87
-    new $P424, "Hash"
-  vivify_87:
-    set $P425, $P424["hexint"]
-    unless_null $P425, vivify_88
-    new $P425, "Undef"
-  vivify_88:
-    if $P425, if_423
+    .lex "$/", param_424
+.annotate "line", 163
+    find_lex $P425, "$/"
     find_lex $P428, "$/"
-    unless_null $P428, vivify_89
-    new $P428, "Hash"
-  vivify_89:
-    set $P429, $P428["hexints"]
-    unless_null $P429, vivify_90
-    new $P429, "Hash"
-  vivify_90:
-    set $P430, $P429["hexint"]
-    unless_null $P430, vivify_91
-    new $P430, "Undef"
-  vivify_91:
-    set $P422, $P430
-    goto if_423_end
-  if_423:
-    find_lex $P426, "$/"
-    unless_null $P426, vivify_92
-    new $P426, "Hash"
-  vivify_92:
-    set $P427, $P426["hexint"]
-    unless_null $P427, vivify_93
-    new $P427, "Undef"
-  vivify_93:
-    set $P422, $P427
-  if_423_end:
-    $P431 = "ints_to_string"($P422)
-    $P432 = $P421."!make"($P431)
-.annotate "line", 159
-    .return ($P432)
-  control_418:
+    unless_null $P428, vivify_94
+    $P428 = root_new ['parrot';'Hash']
+  vivify_94:
+    set $P429, $P428["hexint"]
+    unless_null $P429, vivify_95
+    new $P429, "Undef"
+  vivify_95:
+    if $P429, if_427
+    find_lex $P432, "$/"
+    unless_null $P432, vivify_96
+    $P432 = root_new ['parrot';'Hash']
+  vivify_96:
+    set $P433, $P432["hexints"]
+    unless_null $P433, vivify_97
+    $P433 = root_new ['parrot';'Hash']
+  vivify_97:
+    set $P434, $P433["hexint"]
+    unless_null $P434, vivify_98
+    new $P434, "Undef"
+  vivify_98:
+    set $P426, $P434
+    goto if_427_end
+  if_427:
+    find_lex $P430, "$/"
+    unless_null $P430, vivify_99
+    $P430 = root_new ['parrot';'Hash']
+  vivify_99:
+    set $P431, $P430["hexint"]
+    unless_null $P431, vivify_100
+    new $P431, "Undef"
+  vivify_100:
+    set $P426, $P431
+  if_427_end:
+    $P435 = "ints_to_string"($P426)
+    $P436 = $P425."!make"($P435)
+.annotate "line", 162
+    .return ($P436)
+  control_422:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P433, exception, "payload"
-    .return ($P433)
+    getattribute $P437, exception, "payload"
+    .return ($P437)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<oct>"  :subid("40_1261064005.70696") :method :outer("11_1261064005.70696")
-    .param pmc param_437
-.annotate "line", 163
-    new $P436, 'ExceptionHandler'
-    set_addr $P436, control_435
-    $P436."handle_types"(58)
-    push_eh $P436
+.sub "quote_escape:sym<oct>"  :subid("40_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_441
+.annotate "line", 166
+    new $P440, 'ExceptionHandler'
+    set_addr $P440, control_439
+    $P440."handle_types"(58)
+    push_eh $P440
     .lex "self", self
-    .lex "$/", param_437
-.annotate "line", 164
-    find_lex $P438, "$/"
-    find_lex $P441, "$/"
-    unless_null $P441, vivify_94
-    new $P441, "Hash"
-  vivify_94:
-    set $P442, $P441["octint"]
-    unless_null $P442, vivify_95
-    new $P442, "Undef"
-  vivify_95:
-    if $P442, if_440
+    .lex "$/", param_441
+.annotate "line", 167
+    find_lex $P442, "$/"
     find_lex $P445, "$/"
-    unless_null $P445, vivify_96
-    new $P445, "Hash"
-  vivify_96:
-    set $P446, $P445["octints"]
-    unless_null $P446, vivify_97
-    new $P446, "Hash"
-  vivify_97:
-    set $P447, $P446["octint"]
-    unless_null $P447, vivify_98
-    new $P447, "Undef"
-  vivify_98:
-    set $P439, $P447
-    goto if_440_end
-  if_440:
-    find_lex $P443, "$/"
-    unless_null $P443, vivify_99
-    new $P443, "Hash"
-  vivify_99:
-    set $P444, $P443["octint"]
-    unless_null $P444, vivify_100
-    new $P444, "Undef"
-  vivify_100:
-    set $P439, $P444
-  if_440_end:
-    $P448 = "ints_to_string"($P439)
-    $P449 = $P438."!make"($P448)
-.annotate "line", 163
-    .return ($P449)
-  control_435:
+    unless_null $P445, vivify_101
+    $P445 = root_new ['parrot';'Hash']
+  vivify_101:
+    set $P446, $P445["octint"]
+    unless_null $P446, vivify_102
+    new $P446, "Undef"
+  vivify_102:
+    if $P446, if_444
+    find_lex $P449, "$/"
+    unless_null $P449, vivify_103
+    $P449 = root_new ['parrot';'Hash']
+  vivify_103:
+    set $P450, $P449["octints"]
+    unless_null $P450, vivify_104
+    $P450 = root_new ['parrot';'Hash']
+  vivify_104:
+    set $P451, $P450["octint"]
+    unless_null $P451, vivify_105
+    new $P451, "Undef"
+  vivify_105:
+    set $P443, $P451
+    goto if_444_end
+  if_444:
+    find_lex $P447, "$/"
+    unless_null $P447, vivify_106
+    $P447 = root_new ['parrot';'Hash']
+  vivify_106:
+    set $P448, $P447["octint"]
+    unless_null $P448, vivify_107
+    new $P448, "Undef"
+  vivify_107:
+    set $P443, $P448
+  if_444_end:
+    $P452 = "ints_to_string"($P443)
+    $P453 = $P442."!make"($P452)
+.annotate "line", 166
+    .return ($P453)
+  control_439:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P454, exception, "payload"
+    .return ($P454)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<chr>"  :subid("41_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_458
+.annotate "line", 170
+    new $P457, 'ExceptionHandler'
+    set_addr $P457, control_456
+    $P457."handle_types"(58)
+    push_eh $P457
+    .lex "self", self
+    .lex "$/", param_458
+.annotate "line", 171
+    find_lex $P459, "$/"
+    find_lex $P460, "$/"
+    unless_null $P460, vivify_108
+    $P460 = root_new ['parrot';'Hash']
+  vivify_108:
+    set $P461, $P460["charspec"]
+    unless_null $P461, vivify_109
+    new $P461, "Undef"
+  vivify_109:
+    $P462 = $P461."ast"()
+    $P463 = $P459."!make"($P462)
+.annotate "line", 170
+    .return ($P463)
+  control_456:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P464, exception, "payload"
+    .return ($P464)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "charname"  :subid("42_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_468
+.annotate "line", 174
+    new $P467, 'ExceptionHandler'
+    set_addr $P467, control_466
+    $P467."handle_types"(58)
+    push_eh $P467
+    .lex "self", self
+    .lex "$/", param_468
+.annotate "line", 175
+    new $P469, "Undef"
+    .lex "$codepoint", $P469
+.annotate "line", 176
+    find_lex $P472, "$/"
+    unless_null $P472, vivify_110
+    $P472 = root_new ['parrot';'Hash']
+  vivify_110:
+    set $P473, $P472["integer"]
+    unless_null $P473, vivify_111
+    new $P473, "Undef"
+  vivify_111:
+    if $P473, if_471
+.annotate "line", 177
+ $P477 = new ['CodeString'] 
+    find_lex $P478, "$/"
+    set $S479, $P478
+    $P480 = $P477."charname_to_ord"($S479)
+    set $P470, $P480
+.annotate "line", 176
+    goto if_471_end
+  if_471:
+    find_lex $P474, "$/"
+    unless_null $P474, vivify_112
+    $P474 = root_new ['parrot';'Hash']
+  vivify_112:
+    set $P475, $P474["integer"]
+    unless_null $P475, vivify_113
+    new $P475, "Undef"
+  vivify_113:
+    $P476 = $P475."ast"()
+    set $P470, $P476
+  if_471_end:
+    store_lex "$codepoint", $P470
+.annotate "line", 178
+    find_lex $P482, "$codepoint"
+    set $N483, $P482
+    islt $I484, $N483, 0.0
+    unless $I484, if_481_end
+    find_lex $P485, "$/"
+    $P486 = $P485."CURSOR"()
+    new $P487, 'String'
+    set $P487, "Unrecognized character name "
+    find_lex $P488, "$/"
+    concat $P489, $P487, $P488
+    $P486."panic"($P489)
+  if_481_end:
+.annotate "line", 179
+    find_lex $P490, "$/"
+    find_lex $P491, "$codepoint"
+    set $I492, $P491
+    chr $S493, $I492
+    $P494 = $P490."!make"($S493)
+.annotate "line", 174
+    .return ($P494)
+  control_466:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P495, exception, "payload"
+    .return ($P495)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "charnames"  :subid("43_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_499
+.annotate "line", 182
+    .const 'Sub' $P508 = "44_1267204685.44293" 
+    capture_lex $P508
+    new $P498, 'ExceptionHandler'
+    set_addr $P498, control_497
+    $P498."handle_types"(58)
+    push_eh $P498
+    .lex "self", self
+    .lex "$/", param_499
+.annotate "line", 183
+    new $P500, "Undef"
+    .lex "$str", $P500
+    new $P501, "String"
+    assign $P501, ""
+    store_lex "$str", $P501
+.annotate "line", 184
+    find_lex $P503, "$/"
+    unless_null $P503, vivify_114
+    $P503 = root_new ['parrot';'Hash']
+  vivify_114:
+    set $P504, $P503["charname"]
+    unless_null $P504, vivify_115
+    new $P504, "Undef"
+  vivify_115:
+    defined $I505, $P504
+    unless $I505, for_undef_116
+    iter $P502, $P504
+    new $P515, 'ExceptionHandler'
+    set_addr $P515, loop514_handler
+    $P515."handle_types"(65, 67, 66)
+    push_eh $P515
+  loop514_test:
+    unless $P502, loop514_done
+    shift $P506, $P502
+  loop514_redo:
+    .const 'Sub' $P508 = "44_1267204685.44293" 
+    capture_lex $P508
+    $P508($P506)
+  loop514_next:
+    goto loop514_test
+  loop514_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P516, exception, 'type'
+    eq $P516, 65, loop514_next
+    eq $P516, 67, loop514_redo
+  loop514_done:
+    pop_eh 
+  for_undef_116:
+.annotate "line", 185
+    find_lex $P517, "$/"
+    find_lex $P518, "$str"
+    $P519 = $P517."!make"($P518)
+.annotate "line", 182
+    .return ($P519)
+  control_497:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P520, exception, "payload"
+    .return ($P520)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "_block507"  :anon :subid("44_1267204685.44293") :outer("43_1267204685.44293")
+    .param pmc param_509
+.annotate "line", 184
+    .lex "$_", param_509
+    find_lex $P510, "$str"
+    find_lex $P511, "$_"
+    $S512 = $P511."ast"()
+    concat $P513, $P510, $S512
+    store_lex "$str", $P513
+    .return ($P513)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "charspec"  :subid("45_1267204685.44293") :method :outer("11_1267204685.44293")
+    .param pmc param_524
+.annotate "line", 188
+    new $P523, 'ExceptionHandler'
+    set_addr $P523, control_522
+    $P523."handle_types"(58)
+    push_eh $P523
+    .lex "self", self
+    .lex "$/", param_524
+.annotate "line", 189
+    find_lex $P525, "$/"
+    find_lex $P528, "$/"
+    unless_null $P528, vivify_117
+    $P528 = root_new ['parrot';'Hash']
+  vivify_117:
+    set $P529, $P528["charnames"]
+    unless_null $P529, vivify_118
+    new $P529, "Undef"
+  vivify_118:
+    if $P529, if_527
+    find_lex $P533, "$/"
+    $I534 = "string_to_int"($P533, 10)
+    chr $S535, $I534
+    new $P526, 'String'
+    set $P526, $S535
+    goto if_527_end
+  if_527:
+    find_lex $P530, "$/"
+    unless_null $P530, vivify_119
+    $P530 = root_new ['parrot';'Hash']
+  vivify_119:
+    set $P531, $P530["charnames"]
+    unless_null $P531, vivify_120
+    new $P531, "Undef"
+  vivify_120:
+    $P532 = $P531."ast"()
+    set $P526, $P532
+  if_527_end:
+    $P536 = $P525."!make"($P526)
+.annotate "line", 188
+    .return ($P536)
+  control_522:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P450, exception, "payload"
-    .return ($P450)
+    getattribute $P537, exception, "payload"
+    .return ($P537)
 .end
 
 ### .include 'gen/hllcompiler.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064006.8204")
+.sub "_block11"  :anon :subid("10_1267204686.55407")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     capture_lex $P14
@@ -5664,9 +5921,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post25") :outer("10_1261064006.8204")
+.sub "" :load :init :subid("post25") :outer("10_1267204686.55407")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064006.8204" 
+    .const 'Sub' $P12 = "10_1267204686.55407" 
     .local pmc block
     set block, $P12
 .annotate "line", 2
@@ -5680,28 +5937,28 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block13"  :subid("11_1261064006.8204") :outer("10_1261064006.8204")
+.sub "_block13"  :subid("11_1267204686.55407") :outer("10_1267204686.55407")
 .annotate "line", 6
-    .const 'Sub' $P187 = "20_1261064006.8204" 
+    .const 'Sub' $P187 = "20_1267204686.55407" 
     capture_lex $P187
-    .const 'Sub' $P152 = "18_1261064006.8204" 
+    .const 'Sub' $P152 = "18_1267204686.55407" 
     capture_lex $P152
-    .const 'Sub' $P137 = "17_1261064006.8204" 
+    .const 'Sub' $P137 = "17_1267204686.55407" 
     capture_lex $P137
-    .const 'Sub' $P121 = "16_1261064006.8204" 
+    .const 'Sub' $P121 = "16_1267204686.55407" 
     capture_lex $P121
-    .const 'Sub' $P32 = "13_1261064006.8204" 
+    .const 'Sub' $P32 = "13_1267204686.55407" 
     capture_lex $P32
-    .const 'Sub' $P15 = "12_1261064006.8204" 
+    .const 'Sub' $P15 = "12_1267204686.55407" 
     capture_lex $P15
 .annotate "line", 14
-    .const 'Sub' $P15 = "12_1261064006.8204" 
+    .const 'Sub' $P15 = "12_1267204686.55407" 
     capture_lex $P15
     .lex "value_type", $P15
 .annotate "line", 10
     find_lex $P31, "value_type"
 .annotate "line", 69
-    .const 'Sub' $P187 = "20_1261064006.8204" 
+    .const 'Sub' $P187 = "20_1267204686.55407" 
     capture_lex $P187
 .annotate "line", 6
     .return ($P187)
@@ -5709,7 +5966,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "" :load :init :subid("post26") :outer("11_1261064006.8204")
+.sub "" :load :init :subid("post26") :outer("11_1267204686.55407")
 .annotate "line", 6
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     .local pmc block
@@ -5721,7 +5978,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "value_type"  :subid("12_1261064006.8204") :outer("11_1261064006.8204")
+.sub "value_type"  :subid("12_1267204686.55407") :outer("11_1267204686.55407")
     .param pmc param_18
 .annotate "line", 14
     new $P17, 'ExceptionHandler'
@@ -5765,15 +6022,15 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_exports"  :subid("13_1261064006.8204") :method :outer("11_1261064006.8204")
+.sub "get_exports"  :subid("13_1267204686.55407") :method :outer("11_1267204686.55407")
     .param pmc param_35
     .param pmc param_38 :slurpy
     .param pmc param_36 :optional :named("tagset")
     .param int has_param_36 :opt_flag
 .annotate "line", 20
-    .const 'Sub' $P104 = "15_1261064006.8204" 
+    .const 'Sub' $P104 = "15_1267204686.55407" 
     capture_lex $P104
-    .const 'Sub' $P83 = "14_1261064006.8204" 
+    .const 'Sub' $P83 = "14_1267204686.55407" 
     capture_lex $P83
     new $P34, 'ExceptionHandler'
     set_addr $P34, control_33
@@ -5788,10 +6045,10 @@
     .lex "$tagset", param_36
     .lex "@symbols", param_38
 .annotate "line", 27
-    new $P39, "Hash"
+    $P39 = root_new ['parrot';'Hash']
     .lex "%exports", $P39
 .annotate "line", 28
-    new $P40, "Hash"
+    $P40 = root_new ['parrot';'Hash']
     .lex "%source", $P40
 .annotate "line", 22
     find_lex $P42, "$module"
@@ -5831,11 +6088,11 @@
     set $S60, $P59
     find_lex $P61, "$module"
     unless_null $P61, vivify_28
-    new $P61, "Hash"
+    $P61 = root_new ['parrot';'Hash']
   vivify_28:
     set $P62, $P61["EXPORT"]
     unless_null $P62, vivify_29
-    new $P62, "Hash"
+    $P62 = root_new ['parrot';'Hash']
   vivify_29:
     set $P63, $P62[$S60]
     unless_null $P63, vivify_30
@@ -5854,7 +6111,7 @@
     set $S72, $P71
     iseq $I73, $S72, "ALL"
     if $I73, if_70
-    $P75 = new ["Hash"]
+    $P75 = root_new ['parrot';'Hash']
     set $P69, $P75
     goto if_70_end
   if_70:
@@ -5879,7 +6136,7 @@
     unless $P99, loop116_done
     shift $P102, $P99
   loop116_redo:
-    .const 'Sub' $P104 = "15_1261064006.8204" 
+    .const 'Sub' $P104 = "15_1267204686.55407" 
     capture_lex $P104
     $P104($P102)
   loop116_next:
@@ -5909,7 +6166,7 @@
     unless $P78, loop96_done
     shift $P81, $P78
   loop96_redo:
-    .const 'Sub' $P83 = "14_1261064006.8204" 
+    .const 'Sub' $P83 = "14_1267204686.55407" 
     capture_lex $P83
     $P83($P81)
   loop96_next:
@@ -5937,7 +6194,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block103"  :anon :subid("15_1261064006.8204") :outer("13_1261064006.8204")
+.sub "_block103"  :anon :subid("15_1267204686.55407") :outer("13_1267204686.55407")
     .param pmc param_106
 .annotate "line", 40
     new $P105, "Undef"
@@ -5954,12 +6211,12 @@
     $P113 = "value_type"($P112)
     find_lex $P114, "%exports"
     unless_null $P114, vivify_32
-    new $P114, "Hash"
+    $P114 = root_new ['parrot';'Hash']
     store_lex "%exports", $P114
   vivify_32:
     set $P115, $P114[$P113]
     unless_null $P115, vivify_33
-    new $P115, "Hash"
+    $P115 = root_new ['parrot';'Hash']
     set $P114[$P113], $P115
   vivify_33:
     set $P115[$P111], $P109
@@ -5969,7 +6226,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block82"  :anon :subid("14_1261064006.8204") :outer("13_1261064006.8204")
+.sub "_block82"  :anon :subid("14_1267204686.55407") :outer("13_1267204686.55407")
     .param pmc param_85
 .annotate "line", 34
     new $P84, "Undef"
@@ -5979,7 +6236,7 @@
     set $S87, $P86
     find_lex $P88, "%source"
     unless_null $P88, vivify_35
-    new $P88, "Hash"
+    $P88 = root_new ['parrot';'Hash']
   vivify_35:
     set $P89, $P88[$S87]
     unless_null $P89, vivify_36
@@ -5993,12 +6250,12 @@
     $P93 = "value_type"($P92)
     find_lex $P94, "%exports"
     unless_null $P94, vivify_37
-    new $P94, "Hash"
+    $P94 = root_new ['parrot';'Hash']
     store_lex "%exports", $P94
   vivify_37:
     set $P95, $P94[$P93]
     unless_null $P95, vivify_38
-    new $P95, "Hash"
+    $P95 = root_new ['parrot';'Hash']
     set $P94[$P93], $P95
   vivify_38:
     set $P95[$P91], $P90
@@ -6008,7 +6265,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_module"  :subid("16_1261064006.8204") :method :outer("11_1261064006.8204")
+.sub "get_module"  :subid("16_1267204686.55407") :method :outer("11_1267204686.55407")
     .param pmc param_124
 .annotate "line", 47
     new $P123, 'ExceptionHandler'
@@ -6018,7 +6275,7 @@
     .lex "self", self
     .lex "$name", param_124
 .annotate "line", 48
-    new $P125, "ResizablePMCArray"
+    $P125 = root_new ['parrot';'ResizablePMCArray']
     .lex "@name", $P125
     find_lex $P126, "self"
     find_lex $P127, "$name"
@@ -6048,7 +6305,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "language"  :subid("17_1261064006.8204") :method :outer("11_1261064006.8204")
+.sub "language"  :subid("17_1267204686.55407") :method :outer("11_1267204686.55407")
     .param pmc param_140 :optional
     .param int has_param_140 :opt_flag
 .annotate "line", 53
@@ -6092,10 +6349,10 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "load_module"  :subid("18_1261064006.8204") :method :outer("11_1261064006.8204")
+.sub "load_module"  :subid("18_1267204686.55407") :method :outer("11_1267204686.55407")
     .param pmc param_155
 .annotate "line", 61
-    .const 'Sub' $P165 = "19_1261064006.8204" 
+    .const 'Sub' $P165 = "19_1267204686.55407" 
     capture_lex $P165
     new $P154, 'ExceptionHandler'
     set_addr $P154, control_153
@@ -6122,7 +6379,7 @@
     assign $P163, 0
     store_lex "$loaded", $P163
 .annotate "line", 64
-    .const 'Sub' $P165 = "19_1261064006.8204" 
+    .const 'Sub' $P165 = "19_1267204686.55407" 
     capture_lex $P165
     $P165()
 .annotate "line", 65
@@ -6151,7 +6408,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block164"  :anon :subid("19_1261064006.8204") :outer("18_1261064006.8204")
+.sub "_block164"  :anon :subid("19_1267204686.55407") :outer("18_1267204686.55407")
 .annotate "line", 64
     new $P172, 'ExceptionHandler'
     set_addr $P172, control_171
@@ -6184,11 +6441,11 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "import"  :subid("20_1261064006.8204") :method :outer("11_1261064006.8204")
+.sub "import"  :subid("20_1267204686.55407") :method :outer("11_1267204686.55407")
     .param pmc param_190
     .param pmc param_191
 .annotate "line", 69
-    .const 'Sub' $P197 = "21_1261064006.8204" 
+    .const 'Sub' $P197 = "21_1267204686.55407" 
     capture_lex $P197
     new $P189, 'ExceptionHandler'
     set_addr $P189, control_188
@@ -6210,7 +6467,7 @@
     unless $P192, loop278_done
     shift $P195, $P192
   loop278_redo:
-    .const 'Sub' $P197 = "21_1261064006.8204" 
+    .const 'Sub' $P197 = "21_1267204686.55407" 
     capture_lex $P197
     $P197($P195)
   loop278_next:
@@ -6235,20 +6492,20 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block196"  :anon :subid("21_1261064006.8204") :outer("20_1261064006.8204")
+.sub "_block196"  :anon :subid("21_1267204686.55407") :outer("20_1267204686.55407")
     .param pmc param_200
 .annotate "line", 70
-    .const 'Sub' $P267 = "24_1261064006.8204" 
+    .const 'Sub' $P267 = "24_1267204686.55407" 
     capture_lex $P267
-    .const 'Sub' $P247 = "23_1261064006.8204" 
+    .const 'Sub' $P247 = "23_1267204686.55407" 
     capture_lex $P247
-    .const 'Sub' $P218 = "22_1261064006.8204" 
+    .const 'Sub' $P218 = "22_1267204686.55407" 
     capture_lex $P218
 .annotate "line", 71
     new $P198, "Undef"
     .lex "$type", $P198
 .annotate "line", 72
-    new $P199, "Hash"
+    $P199 = root_new ['parrot';'Hash']
     .lex "%items", $P199
     .lex "$_", param_200
 .annotate "line", 71
@@ -6290,7 +6547,7 @@
     unless $P262, loop275_done
     shift $P265, $P262
   loop275_redo:
-    .const 'Sub' $P267 = "24_1261064006.8204" 
+    .const 'Sub' $P267 = "24_1267204686.55407" 
     capture_lex $P267
     $P267($P265)
   loop275_next:
@@ -6322,7 +6579,7 @@
     unless $P242, loop259_done
     shift $P245, $P242
   loop259_redo:
-    .const 'Sub' $P247 = "23_1261064006.8204" 
+    .const 'Sub' $P247 = "23_1267204686.55407" 
     capture_lex $P247
     $P247($P245)
   loop259_next:
@@ -6356,7 +6613,7 @@
     unless $P213, loop231_done
     shift $P216, $P213
   loop231_redo:
-    .const 'Sub' $P218 = "22_1261064006.8204" 
+    .const 'Sub' $P218 = "22_1267204686.55407" 
     capture_lex $P218
     $P218($P216)
   loop231_next:
@@ -6379,7 +6636,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block266"  :anon :subid("24_1261064006.8204") :outer("21_1261064006.8204")
+.sub "_block266"  :anon :subid("24_1267204686.55407") :outer("21_1267204686.55407")
     .param pmc param_268
 .annotate "line", 80
     .lex "$_", param_268
@@ -6390,7 +6647,7 @@
     set $S273, $P272
     find_lex $P274, "$target"
     unless_null $P274, vivify_44
-    new $P274, "Hash"
+    $P274 = root_new ['parrot';'Hash']
     store_lex "$target", $P274
   vivify_44:
     set $P274[$S273], $P270
@@ -6399,7 +6656,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block246"  :anon :subid("23_1261064006.8204") :outer("21_1261064006.8204")
+.sub "_block246"  :anon :subid("23_1267204686.55407") :outer("21_1267204686.55407")
     .param pmc param_248
 .annotate "line", 77
     .lex "$_", param_248
@@ -6419,7 +6676,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block217"  :anon :subid("22_1261064006.8204") :outer("21_1261064006.8204")
+.sub "_block217"  :anon :subid("22_1267204686.55407") :outer("21_1267204686.55407")
     .param pmc param_219
 .annotate "line", 74
     .lex "$_", param_219

Modified: branches/ops_pct/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/ops_pct/ext/nqp-rx/src/stage0/NQP-s0.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/ext/nqp-rx/src/stage0/NQP-s0.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -15,387 +15,387 @@
 ### .include 'gen/nqp-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064023.05912")
+.sub "_block11"  :anon :subid("10_1267204702.05125")
 .annotate "line", 0
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     capture_lex $P14
 .annotate "line", 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     capture_lex $P14
-    $P1291 = $P14()
+    $P1296 = $P14()
 .annotate "line", 1
-    .return ($P1291)
+    .return ($P1296)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post331") :outer("10_1261064023.05912")
+.sub "" :load :init :subid("post331") :outer("10_1267204702.05125")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064023.05912" 
+    .const 'Sub' $P12 = "10_1267204702.05125" 
     .local pmc block
     set block, $P12
-    $P1292 = get_root_global ["parrot"], "P6metaclass"
-    $P1292."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
+    $P1297 = get_root_global ["parrot"], "P6metaclass"
+    $P1297."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block13"  :subid("11_1261064023.05912") :outer("10_1261064023.05912")
+.sub "_block13"  :subid("11_1267204702.05125") :outer("10_1267204702.05125")
 .annotate "line", 4
-    get_hll_global $P1235, ["NQP";"Regex"], "_block1234" 
-    capture_lex $P1235
-    .const 'Sub' $P1221 = "317_1261064023.05912" 
-    capture_lex $P1221
-    .const 'Sub' $P1215 = "315_1261064023.05912" 
-    capture_lex $P1215
-    .const 'Sub' $P1209 = "313_1261064023.05912" 
-    capture_lex $P1209
-    .const 'Sub' $P1202 = "311_1261064023.05912" 
-    capture_lex $P1202
-    .const 'Sub' $P1195 = "309_1261064023.05912" 
-    capture_lex $P1195
-    .const 'Sub' $P1188 = "307_1261064023.05912" 
-    capture_lex $P1188
-    .const 'Sub' $P1181 = "305_1261064023.05912" 
-    capture_lex $P1181
-    .const 'Sub' $P1175 = "303_1261064023.05912" 
-    capture_lex $P1175
-    .const 'Sub' $P1168 = "301_1261064023.05912" 
-    capture_lex $P1168
-    .const 'Sub' $P1161 = "299_1261064023.05912" 
-    capture_lex $P1161
-    .const 'Sub' $P1154 = "297_1261064023.05912" 
-    capture_lex $P1154
-    .const 'Sub' $P1147 = "295_1261064023.05912" 
-    capture_lex $P1147
-    .const 'Sub' $P1140 = "293_1261064023.05912" 
-    capture_lex $P1140
-    .const 'Sub' $P1133 = "291_1261064023.05912" 
-    capture_lex $P1133
-    .const 'Sub' $P1126 = "289_1261064023.05912" 
-    capture_lex $P1126
-    .const 'Sub' $P1119 = "287_1261064023.05912" 
-    capture_lex $P1119
-    .const 'Sub' $P1112 = "285_1261064023.05912" 
-    capture_lex $P1112
-    .const 'Sub' $P1105 = "283_1261064023.05912" 
-    capture_lex $P1105
-    .const 'Sub' $P1098 = "281_1261064023.05912" 
-    capture_lex $P1098
-    .const 'Sub' $P1091 = "279_1261064023.05912" 
-    capture_lex $P1091
-    .const 'Sub' $P1084 = "277_1261064023.05912" 
-    capture_lex $P1084
-    .const 'Sub' $P1077 = "275_1261064023.05912" 
-    capture_lex $P1077
-    .const 'Sub' $P1070 = "273_1261064023.05912" 
-    capture_lex $P1070
-    .const 'Sub' $P1063 = "271_1261064023.05912" 
-    capture_lex $P1063
-    .const 'Sub' $P1056 = "269_1261064023.05912" 
-    capture_lex $P1056
-    .const 'Sub' $P1049 = "267_1261064023.05912" 
-    capture_lex $P1049
-    .const 'Sub' $P1042 = "265_1261064023.05912" 
-    capture_lex $P1042
-    .const 'Sub' $P1035 = "263_1261064023.05912" 
-    capture_lex $P1035
-    .const 'Sub' $P1028 = "261_1261064023.05912" 
-    capture_lex $P1028
-    .const 'Sub' $P1021 = "259_1261064023.05912" 
-    capture_lex $P1021
-    .const 'Sub' $P1014 = "257_1261064023.05912" 
-    capture_lex $P1014
-    .const 'Sub' $P1007 = "255_1261064023.05912" 
-    capture_lex $P1007
-    .const 'Sub' $P1000 = "253_1261064023.05912" 
-    capture_lex $P1000
-    .const 'Sub' $P993 = "251_1261064023.05912" 
-    capture_lex $P993
-    .const 'Sub' $P987 = "249_1261064023.05912" 
-    capture_lex $P987
-    .const 'Sub' $P980 = "247_1261064023.05912" 
-    capture_lex $P980
-    .const 'Sub' $P973 = "245_1261064023.05912" 
-    capture_lex $P973
-    .const 'Sub' $P966 = "243_1261064023.05912" 
-    capture_lex $P966
-    .const 'Sub' $P959 = "241_1261064023.05912" 
-    capture_lex $P959
-    .const 'Sub' $P952 = "239_1261064023.05912" 
-    capture_lex $P952
-    .const 'Sub' $P945 = "237_1261064023.05912" 
-    capture_lex $P945
-    .const 'Sub' $P938 = "235_1261064023.05912" 
-    capture_lex $P938
-    .const 'Sub' $P932 = "233_1261064023.05912" 
-    capture_lex $P932
-    .const 'Sub' $P926 = "231_1261064023.05912" 
+    get_hll_global $P1240, ["NQP";"Regex"], "_block1239" 
+    capture_lex $P1240
+    .const 'Sub' $P1226 = "317_1267204702.05125" 
+    capture_lex $P1226
+    .const 'Sub' $P1220 = "315_1267204702.05125" 
+    capture_lex $P1220
+    .const 'Sub' $P1214 = "313_1267204702.05125" 
+    capture_lex $P1214
+    .const 'Sub' $P1207 = "311_1267204702.05125" 
+    capture_lex $P1207
+    .const 'Sub' $P1200 = "309_1267204702.05125" 
+    capture_lex $P1200
+    .const 'Sub' $P1193 = "307_1267204702.05125" 
+    capture_lex $P1193
+    .const 'Sub' $P1186 = "305_1267204702.05125" 
+    capture_lex $P1186
+    .const 'Sub' $P1180 = "303_1267204702.05125" 
+    capture_lex $P1180
+    .const 'Sub' $P1173 = "301_1267204702.05125" 
+    capture_lex $P1173
+    .const 'Sub' $P1166 = "299_1267204702.05125" 
+    capture_lex $P1166
+    .const 'Sub' $P1159 = "297_1267204702.05125" 
+    capture_lex $P1159
+    .const 'Sub' $P1152 = "295_1267204702.05125" 
+    capture_lex $P1152
+    .const 'Sub' $P1145 = "293_1267204702.05125" 
+    capture_lex $P1145
+    .const 'Sub' $P1138 = "291_1267204702.05125" 
+    capture_lex $P1138
+    .const 'Sub' $P1131 = "289_1267204702.05125" 
+    capture_lex $P1131
+    .const 'Sub' $P1124 = "287_1267204702.05125" 
+    capture_lex $P1124
+    .const 'Sub' $P1117 = "285_1267204702.05125" 
+    capture_lex $P1117
+    .const 'Sub' $P1110 = "283_1267204702.05125" 
+    capture_lex $P1110
+    .const 'Sub' $P1103 = "281_1267204702.05125" 
+    capture_lex $P1103
+    .const 'Sub' $P1096 = "279_1267204702.05125" 
+    capture_lex $P1096
+    .const 'Sub' $P1089 = "277_1267204702.05125" 
+    capture_lex $P1089
+    .const 'Sub' $P1082 = "275_1267204702.05125" 
+    capture_lex $P1082
+    .const 'Sub' $P1075 = "273_1267204702.05125" 
+    capture_lex $P1075
+    .const 'Sub' $P1068 = "271_1267204702.05125" 
+    capture_lex $P1068
+    .const 'Sub' $P1061 = "269_1267204702.05125" 
+    capture_lex $P1061
+    .const 'Sub' $P1054 = "267_1267204702.05125" 
+    capture_lex $P1054
+    .const 'Sub' $P1047 = "265_1267204702.05125" 
+    capture_lex $P1047
+    .const 'Sub' $P1040 = "263_1267204702.05125" 
+    capture_lex $P1040
+    .const 'Sub' $P1033 = "261_1267204702.05125" 
+    capture_lex $P1033
+    .const 'Sub' $P1026 = "259_1267204702.05125" 
+    capture_lex $P1026
+    .const 'Sub' $P1019 = "257_1267204702.05125" 
+    capture_lex $P1019
+    .const 'Sub' $P1012 = "255_1267204702.05125" 
+    capture_lex $P1012
+    .const 'Sub' $P1005 = "253_1267204702.05125" 
+    capture_lex $P1005
+    .const 'Sub' $P998 = "251_1267204702.05125" 
+    capture_lex $P998
+    .const 'Sub' $P992 = "249_1267204702.05125" 
+    capture_lex $P992
+    .const 'Sub' $P985 = "247_1267204702.05125" 
+    capture_lex $P985
+    .const 'Sub' $P978 = "245_1267204702.05125" 
+    capture_lex $P978
+    .const 'Sub' $P971 = "243_1267204702.05125" 
+    capture_lex $P971
+    .const 'Sub' $P964 = "241_1267204702.05125" 
+    capture_lex $P964
+    .const 'Sub' $P957 = "239_1267204702.05125" 
+    capture_lex $P957
+    .const 'Sub' $P950 = "237_1267204702.05125" 
+    capture_lex $P950
+    .const 'Sub' $P943 = "235_1267204702.05125" 
+    capture_lex $P943
+    .const 'Sub' $P937 = "233_1267204702.05125" 
+    capture_lex $P937
+    .const 'Sub' $P931 = "231_1267204702.05125" 
+    capture_lex $P931
+    .const 'Sub' $P926 = "229_1267204702.05125" 
     capture_lex $P926
-    .const 'Sub' $P921 = "229_1261064023.05912" 
-    capture_lex $P921
-    .const 'Sub' $P915 = "227_1261064023.05912" 
-    capture_lex $P915
-    .const 'Sub' $P909 = "225_1261064023.05912" 
+    .const 'Sub' $P920 = "227_1267204702.05125" 
+    capture_lex $P920
+    .const 'Sub' $P914 = "225_1267204702.05125" 
+    capture_lex $P914
+    .const 'Sub' $P909 = "223_1267204702.05125" 
     capture_lex $P909
-    .const 'Sub' $P904 = "223_1261064023.05912" 
+    .const 'Sub' $P904 = "221_1267204702.05125" 
     capture_lex $P904
-    .const 'Sub' $P899 = "221_1261064023.05912" 
-    capture_lex $P899
-    .const 'Sub' $P892 = "219_1261064023.05912" 
-    capture_lex $P892
-    .const 'Sub' $P884 = "217_1261064023.05912" 
+    .const 'Sub' $P897 = "219_1267204702.05125" 
+    capture_lex $P897
+    .const 'Sub' $P889 = "217_1267204702.05125" 
+    capture_lex $P889
+    .const 'Sub' $P884 = "215_1267204702.05125" 
     capture_lex $P884
-    .const 'Sub' $P879 = "215_1261064023.05912" 
+    .const 'Sub' $P879 = "213_1267204702.05125" 
     capture_lex $P879
-    .const 'Sub' $P874 = "213_1261064023.05912" 
+    .const 'Sub' $P874 = "211_1267204702.05125" 
     capture_lex $P874
-    .const 'Sub' $P869 = "211_1261064023.05912" 
-    capture_lex $P869
-    .const 'Sub' $P861 = "209_1261064023.05912" 
-    capture_lex $P861
-    .const 'Sub' $P853 = "207_1261064023.05912" 
+    .const 'Sub' $P866 = "209_1267204702.05125" 
+    capture_lex $P866
+    .const 'Sub' $P858 = "207_1267204702.05125" 
+    capture_lex $P858
+    .const 'Sub' $P853 = "205_1267204702.05125" 
     capture_lex $P853
-    .const 'Sub' $P848 = "205_1261064023.05912" 
+    .const 'Sub' $P848 = "203_1267204702.05125" 
     capture_lex $P848
-    .const 'Sub' $P843 = "203_1261064023.05912" 
-    capture_lex $P843
-    .const 'Sub' $P837 = "201_1261064023.05912" 
-    capture_lex $P837
-    .const 'Sub' $P831 = "199_1261064023.05912" 
-    capture_lex $P831
-    .const 'Sub' $P825 = "197_1261064023.05912" 
-    capture_lex $P825
-    .const 'Sub' $P819 = "195_1261064023.05912" 
-    capture_lex $P819
-    .const 'Sub' $P813 = "193_1261064023.05912" 
+    .const 'Sub' $P842 = "201_1267204702.05125" 
+    capture_lex $P842
+    .const 'Sub' $P836 = "199_1267204702.05125" 
+    capture_lex $P836
+    .const 'Sub' $P830 = "197_1267204702.05125" 
+    capture_lex $P830
+    .const 'Sub' $P824 = "195_1267204702.05125" 
+    capture_lex $P824
+    .const 'Sub' $P818 = "193_1267204702.05125" 
+    capture_lex $P818
+    .const 'Sub' $P813 = "191_1267204702.05125" 
     capture_lex $P813
-    .const 'Sub' $P808 = "191_1261064023.05912" 
+    .const 'Sub' $P808 = "189_1267204702.05125" 
     capture_lex $P808
-    .const 'Sub' $P803 = "189_1261064023.05912" 
-    capture_lex $P803
-    .const 'Sub' $P790 = "185_1261064023.05912" 
-    capture_lex $P790
-    .const 'Sub' $P782 = "183_1261064023.05912" 
-    capture_lex $P782
-    .const 'Sub' $P776 = "181_1261064023.05912" 
-    capture_lex $P776
-    .const 'Sub' $P769 = "179_1261064023.05912" 
-    capture_lex $P769
-    .const 'Sub' $P763 = "177_1261064023.05912" 
-    capture_lex $P763
-    .const 'Sub' $P755 = "175_1261064023.05912" 
-    capture_lex $P755
-    .const 'Sub' $P747 = "173_1261064023.05912" 
-    capture_lex $P747
-    .const 'Sub' $P741 = "171_1261064023.05912" 
-    capture_lex $P741
-    .const 'Sub' $P735 = "169_1261064023.05912" 
-    capture_lex $P735
-    .const 'Sub' $P720 = "165_1261064023.05912" 
-    capture_lex $P720
-    .const 'Sub' $P688 = "163_1261064023.05912" 
+    .const 'Sub' $P795 = "185_1267204702.05125" 
+    capture_lex $P795
+    .const 'Sub' $P787 = "183_1267204702.05125" 
+    capture_lex $P787
+    .const 'Sub' $P781 = "181_1267204702.05125" 
+    capture_lex $P781
+    .const 'Sub' $P774 = "179_1267204702.05125" 
+    capture_lex $P774
+    .const 'Sub' $P768 = "177_1267204702.05125" 
+    capture_lex $P768
+    .const 'Sub' $P760 = "175_1267204702.05125" 
+    capture_lex $P760
+    .const 'Sub' $P752 = "173_1267204702.05125" 
+    capture_lex $P752
+    .const 'Sub' $P746 = "171_1267204702.05125" 
+    capture_lex $P746
+    .const 'Sub' $P740 = "169_1267204702.05125" 
+    capture_lex $P740
+    .const 'Sub' $P725 = "165_1267204702.05125" 
+    capture_lex $P725
+    .const 'Sub' $P688 = "163_1267204702.05125" 
     capture_lex $P688
-    .const 'Sub' $P680 = "161_1261064023.05912" 
+    .const 'Sub' $P680 = "161_1267204702.05125" 
     capture_lex $P680
-    .const 'Sub' $P674 = "159_1261064023.05912" 
+    .const 'Sub' $P674 = "159_1267204702.05125" 
     capture_lex $P674
-    .const 'Sub' $P664 = "157_1261064023.05912" 
+    .const 'Sub' $P664 = "157_1267204702.05125" 
     capture_lex $P664
-    .const 'Sub' $P649 = "155_1261064023.05912" 
+    .const 'Sub' $P649 = "155_1267204702.05125" 
     capture_lex $P649
-    .const 'Sub' $P640 = "153_1261064023.05912" 
+    .const 'Sub' $P640 = "153_1267204702.05125" 
     capture_lex $P640
-    .const 'Sub' $P621 = "151_1261064023.05912" 
+    .const 'Sub' $P621 = "151_1267204702.05125" 
     capture_lex $P621
-    .const 'Sub' $P597 = "149_1261064023.05912" 
+    .const 'Sub' $P597 = "149_1267204702.05125" 
     capture_lex $P597
-    .const 'Sub' $P590 = "147_1261064023.05912" 
+    .const 'Sub' $P590 = "147_1267204702.05125" 
     capture_lex $P590
-    .const 'Sub' $P583 = "145_1261064023.05912" 
+    .const 'Sub' $P583 = "145_1267204702.05125" 
     capture_lex $P583
-    .const 'Sub' $P573 = "141_1261064023.05912" 
+    .const 'Sub' $P573 = "141_1267204702.05125" 
     capture_lex $P573
-    .const 'Sub' $P562 = "139_1261064023.05912" 
+    .const 'Sub' $P562 = "139_1267204702.05125" 
     capture_lex $P562
-    .const 'Sub' $P555 = "137_1261064023.05912" 
+    .const 'Sub' $P555 = "137_1267204702.05125" 
     capture_lex $P555
-    .const 'Sub' $P548 = "135_1261064023.05912" 
+    .const 'Sub' $P548 = "135_1267204702.05125" 
     capture_lex $P548
-    .const 'Sub' $P541 = "133_1261064023.05912" 
+    .const 'Sub' $P541 = "133_1267204702.05125" 
     capture_lex $P541
-    .const 'Sub' $P514 = "129_1261064023.05912" 
+    .const 'Sub' $P514 = "129_1267204702.05125" 
     capture_lex $P514
-    .const 'Sub' $P505 = "127_1261064023.05912" 
+    .const 'Sub' $P505 = "127_1267204702.05125" 
     capture_lex $P505
-    .const 'Sub' $P498 = "125_1261064023.05912" 
+    .const 'Sub' $P498 = "125_1267204702.05125" 
     capture_lex $P498
-    .const 'Sub' $P489 = "121_1261064023.05912" 
+    .const 'Sub' $P489 = "121_1267204702.05125" 
     capture_lex $P489
-    .const 'Sub' $P484 = "119_1261064023.05912" 
+    .const 'Sub' $P484 = "119_1267204702.05125" 
     capture_lex $P484
-    .const 'Sub' $P472 = "117_1261064023.05912" 
+    .const 'Sub' $P472 = "117_1267204702.05125" 
     capture_lex $P472
-    .const 'Sub' $P460 = "115_1261064023.05912" 
+    .const 'Sub' $P460 = "115_1267204702.05125" 
     capture_lex $P460
-    .const 'Sub' $P452 = "113_1261064023.05912" 
+    .const 'Sub' $P452 = "113_1267204702.05125" 
     capture_lex $P452
-    .const 'Sub' $P447 = "111_1261064023.05912" 
+    .const 'Sub' $P447 = "111_1267204702.05125" 
     capture_lex $P447
-    .const 'Sub' $P441 = "109_1261064023.05912" 
+    .const 'Sub' $P441 = "109_1267204702.05125" 
     capture_lex $P441
-    .const 'Sub' $P435 = "107_1261064023.05912" 
+    .const 'Sub' $P435 = "107_1267204702.05125" 
     capture_lex $P435
-    .const 'Sub' $P429 = "105_1261064023.05912" 
+    .const 'Sub' $P429 = "105_1267204702.05125" 
     capture_lex $P429
-    .const 'Sub' $P423 = "103_1261064023.05912" 
+    .const 'Sub' $P423 = "103_1267204702.05125" 
     capture_lex $P423
-    .const 'Sub' $P417 = "101_1261064023.05912" 
+    .const 'Sub' $P417 = "101_1267204702.05125" 
     capture_lex $P417
-    .const 'Sub' $P411 = "99_1261064023.05912" 
+    .const 'Sub' $P411 = "99_1267204702.05125" 
     capture_lex $P411
-    .const 'Sub' $P405 = "97_1261064023.05912" 
+    .const 'Sub' $P405 = "97_1267204702.05125" 
     capture_lex $P405
-    .const 'Sub' $P399 = "95_1261064023.05912" 
+    .const 'Sub' $P399 = "95_1267204702.05125" 
     capture_lex $P399
-    .const 'Sub' $P391 = "93_1261064023.05912" 
+    .const 'Sub' $P391 = "93_1267204702.05125" 
     capture_lex $P391
-    .const 'Sub' $P383 = "91_1261064023.05912" 
+    .const 'Sub' $P383 = "91_1267204702.05125" 
     capture_lex $P383
-    .const 'Sub' $P371 = "87_1261064023.05912" 
+    .const 'Sub' $P371 = "87_1267204702.05125" 
     capture_lex $P371
-    .const 'Sub' $P363 = "85_1261064023.05912" 
+    .const 'Sub' $P363 = "85_1267204702.05125" 
     capture_lex $P363
-    .const 'Sub' $P353 = "81_1261064023.05912" 
+    .const 'Sub' $P353 = "81_1267204702.05125" 
     capture_lex $P353
-    .const 'Sub' $P346 = "79_1261064023.05912" 
+    .const 'Sub' $P346 = "79_1267204702.05125" 
     capture_lex $P346
-    .const 'Sub' $P339 = "77_1261064023.05912" 
+    .const 'Sub' $P339 = "77_1267204702.05125" 
     capture_lex $P339
-    .const 'Sub' $P327 = "73_1261064023.05912" 
+    .const 'Sub' $P327 = "73_1267204702.05125" 
     capture_lex $P327
-    .const 'Sub' $P319 = "71_1261064023.05912" 
+    .const 'Sub' $P319 = "71_1267204702.05125" 
     capture_lex $P319
-    .const 'Sub' $P311 = "69_1261064023.05912" 
+    .const 'Sub' $P311 = "69_1267204702.05125" 
     capture_lex $P311
-    .const 'Sub' $P291 = "67_1261064023.05912" 
+    .const 'Sub' $P291 = "67_1267204702.05125" 
     capture_lex $P291
-    .const 'Sub' $P282 = "65_1261064023.05912" 
+    .const 'Sub' $P282 = "65_1267204702.05125" 
     capture_lex $P282
-    .const 'Sub' $P264 = "62_1261064023.05912" 
+    .const 'Sub' $P264 = "62_1267204702.05125" 
     capture_lex $P264
-    .const 'Sub' $P244 = "60_1261064023.05912" 
+    .const 'Sub' $P244 = "60_1267204702.05125" 
     capture_lex $P244
-    .const 'Sub' $P235 = "56_1261064023.05912" 
+    .const 'Sub' $P235 = "56_1267204702.05125" 
     capture_lex $P235
-    .const 'Sub' $P230 = "54_1261064023.05912" 
+    .const 'Sub' $P230 = "54_1267204702.05125" 
     capture_lex $P230
-    .const 'Sub' $P221 = "50_1261064023.05912" 
+    .const 'Sub' $P221 = "50_1267204702.05125" 
     capture_lex $P221
-    .const 'Sub' $P216 = "48_1261064023.05912" 
+    .const 'Sub' $P216 = "48_1267204702.05125" 
     capture_lex $P216
-    .const 'Sub' $P208 = "46_1261064023.05912" 
+    .const 'Sub' $P208 = "46_1267204702.05125" 
     capture_lex $P208
-    .const 'Sub' $P201 = "44_1261064023.05912" 
+    .const 'Sub' $P201 = "44_1267204702.05125" 
     capture_lex $P201
-    .const 'Sub' $P195 = "42_1261064023.05912" 
+    .const 'Sub' $P195 = "42_1267204702.05125" 
     capture_lex $P195
-    .const 'Sub' $P187 = "40_1261064023.05912" 
+    .const 'Sub' $P187 = "40_1267204702.05125" 
     capture_lex $P187
-    .const 'Sub' $P181 = "38_1261064023.05912" 
+    .const 'Sub' $P181 = "38_1267204702.05125" 
     capture_lex $P181
-    .const 'Sub' $P175 = "36_1261064023.05912" 
+    .const 'Sub' $P175 = "36_1267204702.05125" 
     capture_lex $P175
-    .const 'Sub' $P159 = "33_1261064023.05912" 
+    .const 'Sub' $P159 = "33_1267204702.05125" 
     capture_lex $P159
-    .const 'Sub' $P146 = "31_1261064023.05912" 
+    .const 'Sub' $P146 = "31_1267204702.05125" 
     capture_lex $P146
-    .const 'Sub' $P139 = "29_1261064023.05912" 
+    .const 'Sub' $P139 = "29_1267204702.05125" 
     capture_lex $P139
-    .const 'Sub' $P96 = "26_1261064023.05912" 
+    .const 'Sub' $P96 = "26_1267204702.05125" 
     capture_lex $P96
-    .const 'Sub' $P78 = "23_1261064023.05912" 
+    .const 'Sub' $P78 = "23_1267204702.05125" 
     capture_lex $P78
-    .const 'Sub' $P68 = "21_1261064023.05912" 
+    .const 'Sub' $P68 = "21_1267204702.05125" 
     capture_lex $P68
-    .const 'Sub' $P54 = "19_1261064023.05912" 
+    .const 'Sub' $P54 = "19_1267204702.05125" 
     capture_lex $P54
-    .const 'Sub' $P46 = "17_1261064023.05912" 
+    .const 'Sub' $P46 = "17_1267204702.05125" 
     capture_lex $P46
-    .const 'Sub' $P39 = "15_1261064023.05912" 
+    .const 'Sub' $P39 = "15_1267204702.05125" 
     capture_lex $P39
-    .const 'Sub' $P33 = "13_1261064023.05912" 
+    .const 'Sub' $P33 = "13_1267204702.05125" 
     capture_lex $P33
-    .const 'Sub' $P15 = "12_1261064023.05912" 
+    .const 'Sub' $P15 = "12_1267204702.05125" 
     capture_lex $P15
-.annotate "line", 527
-    get_hll_global $P1235, ["NQP";"Regex"], "_block1234" 
-    capture_lex $P1235
-    $P1274 = $P1235()
+.annotate "line", 531
+    get_hll_global $P1240, ["NQP";"Regex"], "_block1239" 
+    capture_lex $P1240
+    $P1279 = $P1240()
 .annotate "line", 4
-    .return ($P1274)
+    .return ($P1279)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "" :load :init :subid("post332") :outer("11_1261064023.05912")
+.sub "" :load :init :subid("post332") :outer("11_1267204702.05125")
 .annotate "line", 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     .local pmc block
     set block, $P14
-.annotate "line", 414
-    get_hll_global $P1275, ["NQP"], "Grammar"
-    $P1275."O"(":prec<y=>, :assoc<unary>", "%methodop")
-.annotate "line", 415
-    get_hll_global $P1276, ["NQP"], "Grammar"
-    $P1276."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
-.annotate "line", 416
-    get_hll_global $P1277, ["NQP"], "Grammar"
-    $P1277."O"(":prec<w=>, :assoc<left>", "%exponentiation")
-.annotate "line", 417
-    get_hll_global $P1278, ["NQP"], "Grammar"
-    $P1278."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
 .annotate "line", 418
-    get_hll_global $P1279, ["NQP"], "Grammar"
-    $P1279."O"(":prec<u=>, :assoc<left>", "%multiplicative")
-.annotate "line", 419
     get_hll_global $P1280, ["NQP"], "Grammar"
-    $P1280."O"(":prec<t=>, :assoc<left>", "%additive")
-.annotate "line", 420
+    $P1280."O"(":prec<y=>, :assoc<unary>", "%methodop")
+.annotate "line", 419
     get_hll_global $P1281, ["NQP"], "Grammar"
-    $P1281."O"(":prec<r=>, :assoc<left>", "%concatenation")
-.annotate "line", 421
+    $P1281."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
+.annotate "line", 420
     get_hll_global $P1282, ["NQP"], "Grammar"
-    $P1282."O"(":prec<m=>, :assoc<left>", "%relational")
-.annotate "line", 422
+    $P1282."O"(":prec<w=>, :assoc<left>", "%exponentiation")
+.annotate "line", 421
     get_hll_global $P1283, ["NQP"], "Grammar"
-    $P1283."O"(":prec<l=>, :assoc<left>", "%tight_and")
-.annotate "line", 423
+    $P1283."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
+.annotate "line", 422
     get_hll_global $P1284, ["NQP"], "Grammar"
-    $P1284."O"(":prec<k=>, :assoc<left>", "%tight_or")
-.annotate "line", 424
+    $P1284."O"(":prec<u=>, :assoc<left>", "%multiplicative")
+.annotate "line", 423
     get_hll_global $P1285, ["NQP"], "Grammar"
-    $P1285."O"(":prec<j=>, :assoc<right>", "%conditional")
-.annotate "line", 425
+    $P1285."O"(":prec<t=>, :assoc<left>", "%additive")
+.annotate "line", 424
     get_hll_global $P1286, ["NQP"], "Grammar"
-    $P1286."O"(":prec<i=>, :assoc<right>", "%assignment")
-.annotate "line", 426
+    $P1286."O"(":prec<r=>, :assoc<left>", "%concatenation")
+.annotate "line", 425
     get_hll_global $P1287, ["NQP"], "Grammar"
-    $P1287."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
-.annotate "line", 427
+    $P1287."O"(":prec<m=>, :assoc<left>", "%relational")
+.annotate "line", 426
     get_hll_global $P1288, ["NQP"], "Grammar"
-    $P1288."O"(":prec<f=>, :assoc<list>", "%list_infix")
-.annotate "line", 428
+    $P1288."O"(":prec<l=>, :assoc<left>", "%tight_and")
+.annotate "line", 427
     get_hll_global $P1289, ["NQP"], "Grammar"
-    $P1289."O"(":prec<e=>, :assoc<unary>", "%list_prefix")
-.annotate "line", 413
-    $P1290 = get_root_global ["parrot"], "P6metaclass"
-    $P1290."new_class"("NQP::Regex", "Regex::P6Regex::Grammar" :named("parent"))
+    $P1289."O"(":prec<k=>, :assoc<left>", "%tight_or")
+.annotate "line", 428
+    get_hll_global $P1290, ["NQP"], "Grammar"
+    $P1290."O"(":prec<j=>, :assoc<right>", "%conditional")
+.annotate "line", 429
+    get_hll_global $P1291, ["NQP"], "Grammar"
+    $P1291."O"(":prec<i=>, :assoc<right>", "%assignment")
+.annotate "line", 430
+    get_hll_global $P1292, ["NQP"], "Grammar"
+    $P1292."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
+.annotate "line", 431
+    get_hll_global $P1293, ["NQP"], "Grammar"
+    $P1293."O"(":prec<f=>, :assoc<list>", "%list_infix")
+.annotate "line", 432
+    get_hll_global $P1294, ["NQP"], "Grammar"
+    $P1294."O"(":prec<e=>, :assoc<unary>", "%list_prefix")
+.annotate "line", 417
+    $P1295 = get_root_global ["parrot"], "P6metaclass"
+    $P1295."new_class"("NQP::Regex", "Regex::P6Regex::Grammar" :named("parent"))
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "TOP"  :subid("12_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "TOP"  :subid("12_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
@@ -403,7 +403,7 @@
     push_eh $P17
     .lex "self", self
 .annotate "line", 5
-    new $P18, "Hash"
+    $P18 = root_new ['parrot';'Hash']
     .lex "%*LANG", $P18
 .annotate "line", 10
     new $P19, "Undef"
@@ -478,7 +478,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "identifier"  :subid("13_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "identifier"  :subid("13_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx34_tgt
     .local int rx34_pos
@@ -536,7 +536,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__identifier"  :subid("14_1261064023.05912") :method
+.sub "!PREFIX__identifier"  :subid("14_1267204702.05125") :method
 .annotate "line", 4
     $P36 = self."!PREFIX__!subrule"("ident", "")
     new $P37, "ResizablePMCArray"
@@ -546,7 +546,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "name"  :subid("15_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "name"  :subid("15_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx40_tgt
     .local int rx40_pos
@@ -620,7 +620,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__name"  :subid("16_1261064023.05912") :method
+.sub "!PREFIX__name"  :subid("16_1267204702.05125") :method
 .annotate "line", 4
     new $P42, "ResizablePMCArray"
     push $P42, ""
@@ -629,7 +629,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "deflongname"  :subid("17_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "deflongname"  :subid("17_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx47_tgt
     .local int rx47_pos
@@ -702,7 +702,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__deflongname"  :subid("18_1261064023.05912") :method
+.sub "!PREFIX__deflongname"  :subid("18_1267204702.05125") :method
 .annotate "line", 4
     $P49 = self."!PREFIX__!subrule"("identifier", "")
     new $P50, "ResizablePMCArray"
@@ -712,7 +712,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ENDSTMT"  :subid("19_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "ENDSTMT"  :subid("19_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx55_tgt
     .local int rx55_pos
@@ -844,7 +844,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ENDSTMT"  :subid("20_1261064023.05912") :method
+.sub "!PREFIX__ENDSTMT"  :subid("20_1267204702.05125") :method
 .annotate "line", 4
     new $P57, "ResizablePMCArray"
     push $P57, ""
@@ -853,7 +853,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ws"  :subid("21_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "ws"  :subid("21_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx69_tgt
     .local int rx69_pos
@@ -979,7 +979,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ws"  :subid("22_1261064023.05912") :method
+.sub "!PREFIX__ws"  :subid("22_1267204702.05125") :method
 .annotate "line", 4
     new $P71, "ResizablePMCArray"
     push $P71, ""
@@ -989,9 +989,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "unv"  :subid("23_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "unv"  :subid("23_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .const 'Sub' $P86 = "25_1261064023.05912" 
+    .const 'Sub' $P86 = "25_1267204702.05125" 
     capture_lex $P86
     .local string rx79_tgt
     .local int rx79_pos
@@ -1037,7 +1037,7 @@
   rxanchor84_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx79_cur."!cursor_pos"(rx79_pos)
-    .const 'Sub' $P86 = "25_1261064023.05912" 
+    .const 'Sub' $P86 = "25_1267204702.05125" 
     capture_lex $P86
     $P10 = rx79_cur."before"($P86)
     unless $P10, rx79_fail
@@ -1116,7 +1116,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__unv"  :subid("24_1261064023.05912") :method
+.sub "!PREFIX__unv"  :subid("24_1267204702.05125") :method
 .annotate "line", 4
     new $P81, "ResizablePMCArray"
     push $P81, ""
@@ -1127,7 +1127,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block85"  :anon :subid("25_1261064023.05912") :method :outer("23_1261064023.05912")
+.sub "_block85"  :anon :subid("25_1267204702.05125") :method :outer("23_1267204702.05125")
 .annotate "line", 44
     .local string rx87_tgt
     .local int rx87_pos
@@ -1217,9 +1217,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pod_comment"  :subid("26_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "pod_comment"  :subid("26_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .const 'Sub' $P131 = "28_1261064023.05912" 
+    .const 'Sub' $P131 = "28_1267204702.05125" 
     capture_lex $P131
     .local string rx97_tgt
     .local int rx97_pos
@@ -1651,7 +1651,7 @@
 .annotate "line", 67
   # rx subrule "before" subtype=zerowidth negate=
     rx97_cur."!cursor_pos"(rx97_pos)
-    .const 'Sub' $P131 = "28_1261064023.05912" 
+    .const 'Sub' $P131 = "28_1267204702.05125" 
     capture_lex $P131
     $P10 = rx97_cur."before"($P131)
     unless $P10, rx97_fail
@@ -1718,7 +1718,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pod_comment"  :subid("27_1261064023.05912") :method
+.sub "!PREFIX__pod_comment"  :subid("27_1267204702.05125") :method
 .annotate "line", 4
     new $P99, "ResizablePMCArray"
     push $P99, ""
@@ -1727,7 +1727,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block130"  :anon :subid("28_1261064023.05912") :method :outer("26_1261064023.05912")
+.sub "_block130"  :anon :subid("28_1267204702.05125") :method :outer("26_1267204702.05125")
 .annotate "line", 67
     .local string rx132_tgt
     .local int rx132_pos
@@ -1810,7 +1810,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "comp_unit"  :subid("29_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "comp_unit"  :subid("29_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx140_tgt
     .local int rx140_pos
@@ -1889,7 +1889,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__comp_unit"  :subid("30_1261064023.05912") :method
+.sub "!PREFIX__comp_unit"  :subid("30_1267204702.05125") :method
 .annotate "line", 4
     $P142 = self."!PREFIX__!subrule"("", "")
     new $P143, "ResizablePMCArray"
@@ -1899,7 +1899,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statementlist"  :subid("31_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statementlist"  :subid("31_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx147_tgt
     .local int rx147_pos
@@ -2007,7 +2007,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statementlist"  :subid("32_1261064023.05912") :method
+.sub "!PREFIX__statementlist"  :subid("32_1267204702.05125") :method
 .annotate "line", 4
     new $P149, "ResizablePMCArray"
     push $P149, ""
@@ -2017,9 +2017,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement"  :subid("33_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement"  :subid("33_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .const 'Sub' $P165 = "35_1261064023.05912" 
+    .const 'Sub' $P165 = "35_1267204702.05125" 
     capture_lex $P165
     .local string rx160_tgt
     .local int rx160_pos
@@ -2029,7 +2029,7 @@
     .local pmc rx160_cur
     (rx160_cur, rx160_pos, rx160_tgt) = self."!cursor_start"()
     rx160_cur."!cursor_debug"("START ", "statement")
-    rx160_cur."!cursor_caparray"("statement_mod_loop", "statement_mod_cond")
+    rx160_cur."!cursor_caparray"("statement_mod_cond", "statement_mod_loop")
     .lex unicode:"$\x{a2}", rx160_cur
     .local pmc match
     .lex "$/", match
@@ -2054,7 +2054,7 @@
 .annotate "line", 89
   # rx subrule "before" subtype=zerowidth negate=1
     rx160_cur."!cursor_pos"(rx160_pos)
-    .const 'Sub' $P165 = "35_1261064023.05912" 
+    .const 'Sub' $P165 = "35_1267204702.05125" 
     capture_lex $P165
     $P10 = rx160_cur."before"($P165)
     if $P10, rx160_fail
@@ -2085,7 +2085,7 @@
     $P10 = rx160_cur."ws"()
     unless $P10, rx160_fail
     rx160_pos = $P10."pos"()
-.annotate "line", 96
+.annotate "line", 97
   # rx rxquantr170 ** 0..1
     set_addr $I174, rxquantr170_done
     rx160_cur."!mark_push"(0, rx160_pos, $I174)
@@ -2095,6 +2095,15 @@
     set_addr $I10, alt171_1
     rx160_cur."!mark_push"(0, rx160_pos, $I10)
 .annotate "line", 94
+  # rx subrule "MARKED" subtype=zerowidth negate=
+    rx160_cur."!cursor_pos"(rx160_pos)
+    $P10 = rx160_cur."MARKED"("endstmt")
+    unless $P10, rx160_fail
+    goto alt171_end
+  alt171_1:
+    set_addr $I10, alt171_2
+    rx160_cur."!mark_push"(0, rx160_pos, $I10)
+.annotate "line", 95
   # rx subrule "statement_mod_cond" subtype=capture negate=
     rx160_cur."!cursor_pos"(rx160_pos)
     $P10 = rx160_cur."statement_mod_cond"()
@@ -2116,8 +2125,8 @@
     (rx160_rep) = rx160_cur."!mark_commit"($I173)
   rxquantr172_done:
     goto alt171_end
-  alt171_1:
-.annotate "line", 95
+  alt171_2:
+.annotate "line", 96
   # rx subrule "statement_mod_loop" subtype=capture negate=
     rx160_cur."!cursor_pos"(rx160_pos)
     $P10 = rx160_cur."statement_mod_loop"()
@@ -2126,7 +2135,7 @@
     $P10."!cursor_names"("statement_mod_loop")
     rx160_pos = $P10."pos"()
   alt171_end:
-.annotate "line", 96
+.annotate "line", 97
     (rx160_rep) = rx160_cur."!mark_commit"($I174)
   rxquantr170_done:
   alt169_end:
@@ -2150,7 +2159,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement"  :subid("34_1261064023.05912") :method
+.sub "!PREFIX__statement"  :subid("34_1267204702.05125") :method
 .annotate "line", 4
     new $P162, "ResizablePMCArray"
     push $P162, ""
@@ -2159,7 +2168,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block164"  :anon :subid("35_1261064023.05912") :method :outer("33_1261064023.05912")
+.sub "_block164"  :anon :subid("35_1267204702.05125") :method :outer("33_1267204702.05125")
 .annotate "line", 89
     .local string rx166_tgt
     .local int rx166_pos
@@ -2223,7 +2232,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "eat_terminator"  :subid("36_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "eat_terminator"  :subid("36_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx176_tgt
     .local int rx176_pos
@@ -2255,10 +2264,10 @@
     rx176_cur."!mark_push"(0, rx176_pos, $I10)
   rxscan179_done:
   alt180_0:
-.annotate "line", 100
+.annotate "line", 101
     set_addr $I10, alt180_1
     rx176_cur."!mark_push"(0, rx176_pos, $I10)
-.annotate "line", 101
+.annotate "line", 102
   # rx literal  ";"
     add $I11, rx176_pos, 1
     gt $I11, rx176_eos, rx176_fail
@@ -2270,7 +2279,7 @@
   alt180_1:
     set_addr $I10, alt180_2
     rx176_cur."!mark_push"(0, rx176_pos, $I10)
-.annotate "line", 102
+.annotate "line", 103
   # rx subrule "MARKED" subtype=zerowidth negate=
     rx176_cur."!cursor_pos"(rx176_pos)
     $P10 = rx176_cur."MARKED"("endstmt")
@@ -2279,18 +2288,18 @@
   alt180_2:
     set_addr $I10, alt180_3
     rx176_cur."!mark_push"(0, rx176_pos, $I10)
-.annotate "line", 103
+.annotate "line", 104
   # rx subrule "terminator" subtype=zerowidth negate=
     rx176_cur."!cursor_pos"(rx176_pos)
     $P10 = rx176_cur."terminator"()
     unless $P10, rx176_fail
     goto alt180_end
   alt180_3:
-.annotate "line", 104
+.annotate "line", 105
   # rxanchor eos
     ne rx176_pos, rx176_eos, rx176_fail
   alt180_end:
-.annotate "line", 100
+.annotate "line", 101
   # rx pass
     rx176_cur."!cursor_pass"(rx176_pos, "eat_terminator")
     rx176_cur."!cursor_debug"("PASS  ", "eat_terminator", " at pos=", rx176_pos)
@@ -2310,7 +2319,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__eat_terminator"  :subid("37_1261064023.05912") :method
+.sub "!PREFIX__eat_terminator"  :subid("37_1267204702.05125") :method
 .annotate "line", 4
     new $P178, "ResizablePMCArray"
     push $P178, ""
@@ -2322,7 +2331,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "xblock"  :subid("38_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "xblock"  :subid("38_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx182_tgt
     .local int rx182_pos
@@ -2353,7 +2362,7 @@
     set_addr $I10, rxscan186_loop
     rx182_cur."!mark_push"(0, rx182_pos, $I10)
   rxscan186_done:
-.annotate "line", 108
+.annotate "line", 109
   # rx subrule "EXPR" subtype=capture negate=
     rx182_cur."!cursor_pos"(rx182_pos)
     $P10 = rx182_cur."EXPR"()
@@ -2373,7 +2382,7 @@
     rx182_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("pblock")
     rx182_pos = $P10."pos"()
-.annotate "line", 107
+.annotate "line", 108
   # rx pass
     rx182_cur."!cursor_pass"(rx182_pos, "xblock")
     rx182_cur."!cursor_debug"("PASS  ", "xblock", " at pos=", rx182_pos)
@@ -2393,7 +2402,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__xblock"  :subid("39_1261064023.05912") :method
+.sub "!PREFIX__xblock"  :subid("39_1267204702.05125") :method
 .annotate "line", 4
     $P184 = self."!PREFIX__!subrule"("EXPR", "")
     new $P185, "ResizablePMCArray"
@@ -2403,7 +2412,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pblock"  :subid("40_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "pblock"  :subid("40_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx188_tgt
     .local int rx188_pos
@@ -2435,22 +2444,22 @@
     rx188_cur."!mark_push"(0, rx188_pos, $I10)
   rxscan193_done:
   alt194_0:
-.annotate "line", 111
+.annotate "line", 112
     set_addr $I10, alt194_1
     rx188_cur."!mark_push"(0, rx188_pos, $I10)
-.annotate "line", 112
+.annotate "line", 113
   # rx subrule "lambda" subtype=method negate=
     rx188_cur."!cursor_pos"(rx188_pos)
     $P10 = rx188_cur."lambda"()
     unless $P10, rx188_fail
     rx188_pos = $P10."pos"()
-.annotate "line", 113
+.annotate "line", 114
   # rx subrule "newpad" subtype=method negate=
     rx188_cur."!cursor_pos"(rx188_pos)
     $P10 = rx188_cur."newpad"()
     unless $P10, rx188_fail
     rx188_pos = $P10."pos"()
-.annotate "line", 114
+.annotate "line", 115
   # rx subrule "signature" subtype=capture negate=
     rx188_cur."!cursor_pos"(rx188_pos)
     $P10 = rx188_cur."signature"()
@@ -2458,7 +2467,7 @@
     rx188_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("signature")
     rx188_pos = $P10."pos"()
-.annotate "line", 115
+.annotate "line", 116
   # rx subrule "blockoid" subtype=capture negate=
     rx188_cur."!cursor_pos"(rx188_pos)
     $P10 = rx188_cur."blockoid"()
@@ -2466,25 +2475,25 @@
     rx188_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("blockoid")
     rx188_pos = $P10."pos"()
-.annotate "line", 112
+.annotate "line", 113
     goto alt194_end
   alt194_1:
     set_addr $I10, alt194_2
     rx188_cur."!mark_push"(0, rx188_pos, $I10)
-.annotate "line", 116
+.annotate "line", 117
   # rx enumcharlist negate=0 zerowidth
     ge rx188_pos, rx188_eos, rx188_fail
     sub $I10, rx188_pos, rx188_off
     substr $S10, rx188_tgt, $I10, 1
     index $I11, "{", $S10
     lt $I11, 0, rx188_fail
-.annotate "line", 117
+.annotate "line", 118
   # rx subrule "newpad" subtype=method negate=
     rx188_cur."!cursor_pos"(rx188_pos)
     $P10 = rx188_cur."newpad"()
     unless $P10, rx188_fail
     rx188_pos = $P10."pos"()
-.annotate "line", 118
+.annotate "line", 119
   # rx subrule "blockoid" subtype=capture negate=
     rx188_cur."!cursor_pos"(rx188_pos)
     $P10 = rx188_cur."blockoid"()
@@ -2492,17 +2501,17 @@
     rx188_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("blockoid")
     rx188_pos = $P10."pos"()
-.annotate "line", 116
+.annotate "line", 117
     goto alt194_end
   alt194_2:
-.annotate "line", 119
+.annotate "line", 120
   # rx subrule "panic" subtype=method negate=
     rx188_cur."!cursor_pos"(rx188_pos)
     $P10 = rx188_cur."panic"("Missing block")
     unless $P10, rx188_fail
     rx188_pos = $P10."pos"()
   alt194_end:
-.annotate "line", 111
+.annotate "line", 112
   # rx pass
     rx188_cur."!cursor_pass"(rx188_pos, "pblock")
     rx188_cur."!cursor_debug"("PASS  ", "pblock", " at pos=", rx188_pos)
@@ -2522,7 +2531,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pblock"  :subid("41_1261064023.05912") :method
+.sub "!PREFIX__pblock"  :subid("41_1267204702.05125") :method
 .annotate "line", 4
     $P190 = self."!PREFIX__!subrule"("", "")
     $P191 = self."!PREFIX__!subrule"("", "")
@@ -2535,7 +2544,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "lambda"  :subid("42_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "lambda"  :subid("42_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx196_tgt
     .local int rx196_pos
@@ -2567,7 +2576,7 @@
     rx196_cur."!mark_push"(0, rx196_pos, $I10)
   rxscan199_done:
   alt200_0:
-.annotate "line", 122
+.annotate "line", 123
     set_addr $I10, alt200_1
     rx196_cur."!mark_push"(0, rx196_pos, $I10)
   # rx literal  "->"
@@ -2606,7 +2615,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__lambda"  :subid("43_1261064023.05912") :method
+.sub "!PREFIX__lambda"  :subid("43_1267204702.05125") :method
 .annotate "line", 4
     new $P198, "ResizablePMCArray"
     push $P198, "<->"
@@ -2616,7 +2625,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "block"  :subid("44_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "block"  :subid("44_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx202_tgt
     .local int rx202_pos
@@ -2648,7 +2657,7 @@
     rx202_cur."!mark_push"(0, rx202_pos, $I10)
   rxscan206_done:
   alt207_0:
-.annotate "line", 125
+.annotate "line", 126
     set_addr $I10, alt207_1
     rx202_cur."!mark_push"(0, rx202_pos, $I10)
   # rx enumcharlist negate=0 zerowidth
@@ -2665,13 +2674,13 @@
     unless $P10, rx202_fail
     rx202_pos = $P10."pos"()
   alt207_end:
-.annotate "line", 126
+.annotate "line", 127
   # rx subrule "newpad" subtype=method negate=
     rx202_cur."!cursor_pos"(rx202_pos)
     $P10 = rx202_cur."newpad"()
     unless $P10, rx202_fail
     rx202_pos = $P10."pos"()
-.annotate "line", 127
+.annotate "line", 128
   # rx subrule "blockoid" subtype=capture negate=
     rx202_cur."!cursor_pos"(rx202_pos)
     $P10 = rx202_cur."blockoid"()
@@ -2679,7 +2688,7 @@
     rx202_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("blockoid")
     rx202_pos = $P10."pos"()
-.annotate "line", 124
+.annotate "line", 125
   # rx pass
     rx202_cur."!cursor_pass"(rx202_pos, "block")
     rx202_cur."!cursor_debug"("PASS  ", "block", " at pos=", rx202_pos)
@@ -2699,7 +2708,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__block"  :subid("45_1261064023.05912") :method
+.sub "!PREFIX__block"  :subid("45_1267204702.05125") :method
 .annotate "line", 4
     $P204 = self."!PREFIX__!subrule"("", "")
     new $P205, "ResizablePMCArray"
@@ -2710,7 +2719,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blockoid"  :subid("46_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "blockoid"  :subid("46_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx209_tgt
     .local int rx209_pos
@@ -2741,13 +2750,13 @@
     set_addr $I10, rxscan213_loop
     rx209_cur."!mark_push"(0, rx209_pos, $I10)
   rxscan213_done:
-.annotate "line", 131
+.annotate "line", 132
   # rx subrule "finishpad" subtype=method negate=
     rx209_cur."!cursor_pos"(rx209_pos)
     $P10 = rx209_cur."finishpad"()
     unless $P10, rx209_fail
     rx209_pos = $P10."pos"()
-.annotate "line", 132
+.annotate "line", 133
   # rx literal  "{"
     add $I11, rx209_pos, 1
     gt $I11, rx209_eos, rx209_fail
@@ -2780,12 +2789,12 @@
     unless $P10, rx209_fail
     rx209_pos = $P10."pos"()
   alt214_end:
-.annotate "line", 133
+.annotate "line", 134
   # rx subrule "ENDSTMT" subtype=zerowidth negate=
     rx209_cur."!cursor_pos"(rx209_pos)
     $P10 = rx209_cur."ENDSTMT"()
     unless $P10, rx209_fail
-.annotate "line", 130
+.annotate "line", 131
   # rx pass
     rx209_cur."!cursor_pass"(rx209_pos, "blockoid")
     rx209_cur."!cursor_debug"("PASS  ", "blockoid", " at pos=", rx209_pos)
@@ -2805,7 +2814,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blockoid"  :subid("47_1261064023.05912") :method
+.sub "!PREFIX__blockoid"  :subid("47_1267204702.05125") :method
 .annotate "line", 4
     $P211 = self."!PREFIX__!subrule"("", "")
     new $P212, "ResizablePMCArray"
@@ -2815,7 +2824,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "newpad"  :subid("48_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "newpad"  :subid("48_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx217_tgt
     .local int rx217_pos
@@ -2846,7 +2855,7 @@
     set_addr $I10, rxscan220_loop
     rx217_cur."!mark_push"(0, rx217_pos, $I10)
   rxscan220_done:
-.annotate "line", 136
+.annotate "line", 137
   # rx pass
     rx217_cur."!cursor_pass"(rx217_pos, "newpad")
     rx217_cur."!cursor_debug"("PASS  ", "newpad", " at pos=", rx217_pos)
@@ -2866,7 +2875,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__newpad"  :subid("49_1261064023.05912") :method
+.sub "!PREFIX__newpad"  :subid("49_1267204702.05125") :method
 .annotate "line", 4
     new $P219, "ResizablePMCArray"
     push $P219, ""
@@ -2875,7 +2884,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "finishpad"  :subid("50_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "finishpad"  :subid("50_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx222_tgt
     .local int rx222_pos
@@ -2906,7 +2915,7 @@
     set_addr $I10, rxscan225_loop
     rx222_cur."!mark_push"(0, rx222_pos, $I10)
   rxscan225_done:
-.annotate "line", 137
+.annotate "line", 138
   # rx pass
     rx222_cur."!cursor_pass"(rx222_pos, "finishpad")
     rx222_cur."!cursor_debug"("PASS  ", "finishpad", " at pos=", rx222_pos)
@@ -2926,7 +2935,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__finishpad"  :subid("51_1261064023.05912") :method
+.sub "!PREFIX__finishpad"  :subid("51_1267204702.05125") :method
 .annotate "line", 4
     new $P224, "ResizablePMCArray"
     push $P224, ""
@@ -2935,23 +2944,23 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator"  :subid("52_1261064023.05912") :method
-.annotate "line", 139
+.sub "terminator"  :subid("52_1267204702.05125") :method
+.annotate "line", 140
     $P227 = self."!protoregex"("terminator")
     .return ($P227)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator"  :subid("53_1261064023.05912") :method
-.annotate "line", 139
+.sub "!PREFIX__terminator"  :subid("53_1267204702.05125") :method
+.annotate "line", 140
     $P229 = self."!PREFIX__!protoregex"("terminator")
     .return ($P229)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<;>"  :subid("54_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "terminator:sym<;>"  :subid("54_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx231_tgt
     .local int rx231_pos
@@ -2982,7 +2991,7 @@
     set_addr $I10, rxscan234_loop
     rx231_cur."!mark_push"(0, rx231_pos, $I10)
   rxscan234_done:
-.annotate "line", 141
+.annotate "line", 142
   # rx enumcharlist negate=0 zerowidth
     ge rx231_pos, rx231_eos, rx231_fail
     sub $I10, rx231_pos, rx231_off
@@ -3008,7 +3017,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<;>"  :subid("55_1261064023.05912") :method
+.sub "!PREFIX__terminator:sym<;>"  :subid("55_1267204702.05125") :method
 .annotate "line", 4
     new $P233, "ResizablePMCArray"
     push $P233, ";"
@@ -3017,7 +3026,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<}>"  :subid("56_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "terminator:sym<}>"  :subid("56_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx236_tgt
     .local int rx236_pos
@@ -3048,7 +3057,7 @@
     set_addr $I10, rxscan239_loop
     rx236_cur."!mark_push"(0, rx236_pos, $I10)
   rxscan239_done:
-.annotate "line", 142
+.annotate "line", 143
   # rx enumcharlist negate=0 zerowidth
     ge rx236_pos, rx236_eos, rx236_fail
     sub $I10, rx236_pos, rx236_off
@@ -3074,7 +3083,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<}>"  :subid("57_1261064023.05912") :method
+.sub "!PREFIX__terminator:sym<}>"  :subid("57_1267204702.05125") :method
 .annotate "line", 4
     new $P238, "ResizablePMCArray"
     push $P238, "}"
@@ -3083,23 +3092,23 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control"  :subid("58_1261064023.05912") :method
-.annotate "line", 146
+.sub "statement_control"  :subid("58_1267204702.05125") :method
+.annotate "line", 147
     $P241 = self."!protoregex"("statement_control")
     .return ($P241)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control"  :subid("59_1261064023.05912") :method
-.annotate "line", 146
+.sub "!PREFIX__statement_control"  :subid("59_1267204702.05125") :method
+.annotate "line", 147
     $P243 = self."!PREFIX__!protoregex"("statement_control")
     .return ($P243)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<if>"  :subid("60_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<if>"  :subid("60_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx245_tgt
     .local int rx245_pos
@@ -3109,7 +3118,7 @@
     .local pmc rx245_cur
     (rx245_cur, rx245_pos, rx245_tgt) = self."!cursor_start"()
     rx245_cur."!cursor_debug"("START ", "statement_control:sym<if>")
-    rx245_cur."!cursor_caparray"("xblock", "else")
+    rx245_cur."!cursor_caparray"("else", "xblock")
     .lex unicode:"$\x{a2}", rx245_cur
     .local pmc match
     .lex "$/", match
@@ -3131,7 +3140,7 @@
     set_addr $I10, rxscan248_loop
     rx245_cur."!mark_push"(0, rx245_pos, $I10)
   rxscan248_done:
-.annotate "line", 149
+.annotate "line", 150
   # rx subcapture "sym"
     set_addr $I10, rxcap_249_fail
     rx245_cur."!mark_push"(0, rx245_pos, $I10)
@@ -3164,7 +3173,7 @@
     $P10 = rx245_cur."ws"()
     unless $P10, rx245_fail
     rx245_pos = $P10."pos"()
-.annotate "line", 150
+.annotate "line", 151
   # rx subrule "xblock" subtype=capture negate=
     rx245_cur."!cursor_pos"(rx245_pos)
     $P10 = rx245_cur."xblock"()
@@ -3177,7 +3186,7 @@
     $P10 = rx245_cur."ws"()
     unless $P10, rx245_fail
     rx245_pos = $P10."pos"()
-.annotate "line", 151
+.annotate "line", 152
   # rx rxquantr252 ** 0..*
     set_addr $I256, rxquantr252_done
     rx245_cur."!mark_push"(0, rx245_pos, $I256)
@@ -3226,7 +3235,7 @@
     $P10 = rx245_cur."ws"()
     unless $P10, rx245_fail
     rx245_pos = $P10."pos"()
-.annotate "line", 152
+.annotate "line", 153
   # rx rxquantr258 ** 0..1
     set_addr $I262, rxquantr258_done
     rx245_cur."!mark_push"(0, rx245_pos, $I262)
@@ -3273,7 +3282,7 @@
     $P10 = rx245_cur."ws"()
     unless $P10, rx245_fail
     rx245_pos = $P10."pos"()
-.annotate "line", 148
+.annotate "line", 149
   # rx pass
     rx245_cur."!cursor_pass"(rx245_pos, "statement_control:sym<if>")
     rx245_cur."!cursor_debug"("PASS  ", "statement_control:sym<if>", " at pos=", rx245_pos)
@@ -3293,7 +3302,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<if>"  :subid("61_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<if>"  :subid("61_1267204702.05125") :method
 .annotate "line", 4
     new $P247, "ResizablePMCArray"
     push $P247, "if"
@@ -3302,9 +3311,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<unless>"  :subid("62_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<unless>"  :subid("62_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .const 'Sub' $P275 = "64_1261064023.05912" 
+    .const 'Sub' $P275 = "64_1267204702.05125" 
     capture_lex $P275
     .local string rx265_tgt
     .local int rx265_pos
@@ -3335,7 +3344,7 @@
     set_addr $I10, rxscan268_loop
     rx265_cur."!mark_push"(0, rx265_pos, $I10)
   rxscan268_done:
-.annotate "line", 156
+.annotate "line", 157
   # rx subcapture "sym"
     set_addr $I10, rxcap_269_fail
     rx265_cur."!mark_push"(0, rx265_pos, $I10)
@@ -3368,7 +3377,7 @@
     $P10 = rx265_cur."ws"()
     unless $P10, rx265_fail
     rx265_pos = $P10."pos"()
-.annotate "line", 157
+.annotate "line", 158
   # rx subrule "xblock" subtype=capture negate=
     rx265_cur."!cursor_pos"(rx265_pos)
     $P10 = rx265_cur."xblock"()
@@ -3382,7 +3391,7 @@
     unless $P10, rx265_fail
     rx265_pos = $P10."pos"()
   alt272_0:
-.annotate "line", 158
+.annotate "line", 159
     set_addr $I10, alt272_1
     rx265_cur."!mark_push"(0, rx265_pos, $I10)
   # rx subrule "ws" subtype=method negate=
@@ -3392,7 +3401,7 @@
     rx265_pos = $P10."pos"()
   # rx subrule "before" subtype=zerowidth negate=1
     rx265_cur."!cursor_pos"(rx265_pos)
-    .const 'Sub' $P275 = "64_1261064023.05912" 
+    .const 'Sub' $P275 = "64_1267204702.05125" 
     capture_lex $P275
     $P10 = rx265_cur."before"($P275)
     if $P10, rx265_fail
@@ -3424,7 +3433,7 @@
     $P10 = rx265_cur."ws"()
     unless $P10, rx265_fail
     rx265_pos = $P10."pos"()
-.annotate "line", 155
+.annotate "line", 156
   # rx pass
     rx265_cur."!cursor_pass"(rx265_pos, "statement_control:sym<unless>")
     rx265_cur."!cursor_debug"("PASS  ", "statement_control:sym<unless>", " at pos=", rx265_pos)
@@ -3444,7 +3453,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<unless>"  :subid("63_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<unless>"  :subid("63_1267204702.05125") :method
 .annotate "line", 4
     new $P267, "ResizablePMCArray"
     push $P267, "unless"
@@ -3453,8 +3462,8 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block274"  :anon :subid("64_1261064023.05912") :method :outer("62_1261064023.05912")
-.annotate "line", 158
+.sub "_block274"  :anon :subid("64_1267204702.05125") :method :outer("62_1267204702.05125")
+.annotate "line", 159
     .local string rx276_tgt
     .local int rx276_pos
     .local int rx276_off
@@ -3509,7 +3518,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<while>"  :subid("65_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<while>"  :subid("65_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx283_tgt
     .local int rx283_pos
@@ -3540,7 +3549,7 @@
     set_addr $I10, rxscan286_loop
     rx283_cur."!mark_push"(0, rx283_pos, $I10)
   rxscan286_done:
-.annotate "line", 162
+.annotate "line", 163
   # rx subcapture "sym"
     set_addr $I10, rxcap_288_fail
     rx283_cur."!mark_push"(0, rx283_pos, $I10)
@@ -3586,7 +3595,7 @@
     $P10 = rx283_cur."ws"()
     unless $P10, rx283_fail
     rx283_pos = $P10."pos"()
-.annotate "line", 163
+.annotate "line", 164
   # rx subrule "xblock" subtype=capture negate=
     rx283_cur."!cursor_pos"(rx283_pos)
     $P10 = rx283_cur."xblock"()
@@ -3599,7 +3608,7 @@
     $P10 = rx283_cur."ws"()
     unless $P10, rx283_fail
     rx283_pos = $P10."pos"()
-.annotate "line", 161
+.annotate "line", 162
   # rx pass
     rx283_cur."!cursor_pass"(rx283_pos, "statement_control:sym<while>")
     rx283_cur."!cursor_debug"("PASS  ", "statement_control:sym<while>", " at pos=", rx283_pos)
@@ -3619,7 +3628,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<while>"  :subid("66_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<while>"  :subid("66_1267204702.05125") :method
 .annotate "line", 4
     new $P285, "ResizablePMCArray"
     push $P285, "until"
@@ -3629,7 +3638,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<repeat>"  :subid("67_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<repeat>"  :subid("67_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx292_tgt
     .local int rx292_pos
@@ -3660,7 +3669,7 @@
     set_addr $I10, rxscan295_loop
     rx292_cur."!mark_push"(0, rx292_pos, $I10)
   rxscan295_done:
-.annotate "line", 167
+.annotate "line", 168
   # rx subcapture "sym"
     set_addr $I10, rxcap_296_fail
     rx292_cur."!mark_push"(0, rx292_pos, $I10)
@@ -3694,10 +3703,10 @@
     unless $P10, rx292_fail
     rx292_pos = $P10."pos"()
   alt298_0:
-.annotate "line", 168
+.annotate "line", 169
     set_addr $I10, alt298_1
     rx292_cur."!mark_push"(0, rx292_pos, $I10)
-.annotate "line", 169
+.annotate "line", 170
   # rx subrule "ws" subtype=method negate=
     rx292_cur."!cursor_pos"(rx292_pos)
     $P10 = rx292_cur."ws"()
@@ -3762,7 +3771,7 @@
     rx292_pos = $P10."pos"()
     goto alt298_end
   alt298_1:
-.annotate "line", 170
+.annotate "line", 171
   # rx subrule "ws" subtype=method negate=
     rx292_cur."!cursor_pos"(rx292_pos)
     $P10 = rx292_cur."ws"()
@@ -3838,13 +3847,13 @@
     unless $P10, rx292_fail
     rx292_pos = $P10."pos"()
   alt298_end:
-.annotate "line", 171
+.annotate "line", 172
   # rx subrule "ws" subtype=method negate=
     rx292_cur."!cursor_pos"(rx292_pos)
     $P10 = rx292_cur."ws"()
     unless $P10, rx292_fail
     rx292_pos = $P10."pos"()
-.annotate "line", 166
+.annotate "line", 167
   # rx pass
     rx292_cur."!cursor_pass"(rx292_pos, "statement_control:sym<repeat>")
     rx292_cur."!cursor_debug"("PASS  ", "statement_control:sym<repeat>", " at pos=", rx292_pos)
@@ -3864,7 +3873,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<repeat>"  :subid("68_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<repeat>"  :subid("68_1267204702.05125") :method
 .annotate "line", 4
     new $P294, "ResizablePMCArray"
     push $P294, "repeat"
@@ -3873,7 +3882,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<for>"  :subid("69_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<for>"  :subid("69_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx312_tgt
     .local int rx312_pos
@@ -3904,7 +3913,7 @@
     set_addr $I10, rxscan315_loop
     rx312_cur."!mark_push"(0, rx312_pos, $I10)
   rxscan315_done:
-.annotate "line", 175
+.annotate "line", 176
   # rx subcapture "sym"
     set_addr $I10, rxcap_316_fail
     rx312_cur."!mark_push"(0, rx312_pos, $I10)
@@ -3937,7 +3946,7 @@
     $P10 = rx312_cur."ws"()
     unless $P10, rx312_fail
     rx312_pos = $P10."pos"()
-.annotate "line", 176
+.annotate "line", 177
   # rx subrule "xblock" subtype=capture negate=
     rx312_cur."!cursor_pos"(rx312_pos)
     $P10 = rx312_cur."xblock"()
@@ -3950,7 +3959,7 @@
     $P10 = rx312_cur."ws"()
     unless $P10, rx312_fail
     rx312_pos = $P10."pos"()
-.annotate "line", 174
+.annotate "line", 175
   # rx pass
     rx312_cur."!cursor_pass"(rx312_pos, "statement_control:sym<for>")
     rx312_cur."!cursor_debug"("PASS  ", "statement_control:sym<for>", " at pos=", rx312_pos)
@@ -3970,7 +3979,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<for>"  :subid("70_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<for>"  :subid("70_1267204702.05125") :method
 .annotate "line", 4
     new $P314, "ResizablePMCArray"
     push $P314, "for"
@@ -3979,7 +3988,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CATCH>"  :subid("71_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<CATCH>"  :subid("71_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx320_tgt
     .local int rx320_pos
@@ -4010,7 +4019,7 @@
     set_addr $I10, rxscan323_loop
     rx320_cur."!mark_push"(0, rx320_pos, $I10)
   rxscan323_done:
-.annotate "line", 180
+.annotate "line", 181
   # rx subcapture "sym"
     set_addr $I10, rxcap_324_fail
     rx320_cur."!mark_push"(0, rx320_pos, $I10)
@@ -4043,7 +4052,7 @@
     $P10 = rx320_cur."ws"()
     unless $P10, rx320_fail
     rx320_pos = $P10."pos"()
-.annotate "line", 181
+.annotate "line", 182
   # rx subrule "block" subtype=capture negate=
     rx320_cur."!cursor_pos"(rx320_pos)
     $P10 = rx320_cur."block"()
@@ -4056,7 +4065,7 @@
     $P10 = rx320_cur."ws"()
     unless $P10, rx320_fail
     rx320_pos = $P10."pos"()
-.annotate "line", 179
+.annotate "line", 180
   # rx pass
     rx320_cur."!cursor_pass"(rx320_pos, "statement_control:sym<CATCH>")
     rx320_cur."!cursor_debug"("PASS  ", "statement_control:sym<CATCH>", " at pos=", rx320_pos)
@@ -4076,7 +4085,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("72_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("72_1267204702.05125") :method
 .annotate "line", 4
     new $P322, "ResizablePMCArray"
     push $P322, "CATCH"
@@ -4085,7 +4094,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CONTROL>"  :subid("73_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<CONTROL>"  :subid("73_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx328_tgt
     .local int rx328_pos
@@ -4116,7 +4125,7 @@
     set_addr $I10, rxscan331_loop
     rx328_cur."!mark_push"(0, rx328_pos, $I10)
   rxscan331_done:
-.annotate "line", 185
+.annotate "line", 186
   # rx subcapture "sym"
     set_addr $I10, rxcap_332_fail
     rx328_cur."!mark_push"(0, rx328_pos, $I10)
@@ -4149,7 +4158,7 @@
     $P10 = rx328_cur."ws"()
     unless $P10, rx328_fail
     rx328_pos = $P10."pos"()
-.annotate "line", 186
+.annotate "line", 187
   # rx subrule "block" subtype=capture negate=
     rx328_cur."!cursor_pos"(rx328_pos)
     $P10 = rx328_cur."block"()
@@ -4162,7 +4171,7 @@
     $P10 = rx328_cur."ws"()
     unless $P10, rx328_fail
     rx328_pos = $P10."pos"()
-.annotate "line", 184
+.annotate "line", 185
   # rx pass
     rx328_cur."!cursor_pass"(rx328_pos, "statement_control:sym<CONTROL>")
     rx328_cur."!cursor_debug"("PASS  ", "statement_control:sym<CONTROL>", " at pos=", rx328_pos)
@@ -4182,7 +4191,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("74_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("74_1267204702.05125") :method
 .annotate "line", 4
     new $P330, "ResizablePMCArray"
     push $P330, "CONTROL"
@@ -4191,23 +4200,23 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix"  :subid("75_1261064023.05912") :method
-.annotate "line", 189
+.sub "statement_prefix"  :subid("75_1267204702.05125") :method
+.annotate "line", 190
     $P336 = self."!protoregex"("statement_prefix")
     .return ($P336)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix"  :subid("76_1261064023.05912") :method
-.annotate "line", 189
+.sub "!PREFIX__statement_prefix"  :subid("76_1267204702.05125") :method
+.annotate "line", 190
     $P338 = self."!PREFIX__!protoregex"("statement_prefix")
     .return ($P338)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<INIT>"  :subid("77_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_prefix:sym<INIT>"  :subid("77_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx340_tgt
     .local int rx340_pos
@@ -4238,7 +4247,7 @@
     set_addr $I10, rxscan344_loop
     rx340_cur."!mark_push"(0, rx340_pos, $I10)
   rxscan344_done:
-.annotate "line", 190
+.annotate "line", 191
   # rx subcapture "sym"
     set_addr $I10, rxcap_345_fail
     rx340_cur."!mark_push"(0, rx340_pos, $I10)
@@ -4286,7 +4295,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("78_1261064023.05912") :method
+.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("78_1267204702.05125") :method
 .annotate "line", 4
     $P342 = self."!PREFIX__!subrule"("blorst", "INIT")
     new $P343, "ResizablePMCArray"
@@ -4296,7 +4305,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<try>"  :subid("79_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_prefix:sym<try>"  :subid("79_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx347_tgt
     .local int rx347_pos
@@ -4327,7 +4336,7 @@
     set_addr $I10, rxscan351_loop
     rx347_cur."!mark_push"(0, rx347_pos, $I10)
   rxscan351_done:
-.annotate "line", 193
+.annotate "line", 194
   # rx subcapture "sym"
     set_addr $I10, rxcap_352_fail
     rx347_cur."!mark_push"(0, rx347_pos, $I10)
@@ -4349,7 +4358,7 @@
   rxcap_352_fail:
     goto rx347_fail
   rxcap_352_done:
-.annotate "line", 194
+.annotate "line", 195
   # rx subrule "blorst" subtype=capture negate=
     rx347_cur."!cursor_pos"(rx347_pos)
     $P10 = rx347_cur."blorst"()
@@ -4357,7 +4366,7 @@
     rx347_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("blorst")
     rx347_pos = $P10."pos"()
-.annotate "line", 192
+.annotate "line", 193
   # rx pass
     rx347_cur."!cursor_pass"(rx347_pos, "statement_prefix:sym<try>")
     rx347_cur."!cursor_debug"("PASS  ", "statement_prefix:sym<try>", " at pos=", rx347_pos)
@@ -4377,7 +4386,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<try>"  :subid("80_1261064023.05912") :method
+.sub "!PREFIX__statement_prefix:sym<try>"  :subid("80_1267204702.05125") :method
 .annotate "line", 4
     $P349 = self."!PREFIX__!subrule"("blorst", "try")
     new $P350, "ResizablePMCArray"
@@ -4387,7 +4396,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blorst"  :subid("81_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "blorst"  :subid("81_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx354_tgt
     .local int rx354_pos
@@ -4418,7 +4427,7 @@
     set_addr $I10, rxscan357_loop
     rx354_cur."!mark_push"(0, rx354_pos, $I10)
   rxscan357_done:
-.annotate "line", 198
+.annotate "line", 199
   # rx charclass s
     ge rx354_pos, rx354_eos, rx354_fail
     sub $I10, rx354_pos, rx354_off
@@ -4456,7 +4465,7 @@
     $P10."!cursor_names"("statement")
     rx354_pos = $P10."pos"()
   alt358_end:
-.annotate "line", 197
+.annotate "line", 198
   # rx pass
     rx354_cur."!cursor_pass"(rx354_pos, "blorst")
     rx354_cur."!cursor_debug"("PASS  ", "blorst", " at pos=", rx354_pos)
@@ -4476,7 +4485,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blorst"  :subid("82_1261064023.05912") :method
+.sub "!PREFIX__blorst"  :subid("82_1267204702.05125") :method
 .annotate "line", 4
     new $P356, "ResizablePMCArray"
     push $P356, ""
@@ -4485,23 +4494,23 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond"  :subid("83_1261064023.05912") :method
-.annotate "line", 203
+.sub "statement_mod_cond"  :subid("83_1267204702.05125") :method
+.annotate "line", 204
     $P360 = self."!protoregex"("statement_mod_cond")
     .return ($P360)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond"  :subid("84_1261064023.05912") :method
-.annotate "line", 203
+.sub "!PREFIX__statement_mod_cond"  :subid("84_1267204702.05125") :method
+.annotate "line", 204
     $P362 = self."!PREFIX__!protoregex"("statement_mod_cond")
     .return ($P362)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<if>"  :subid("85_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_mod_cond:sym<if>"  :subid("85_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx364_tgt
     .local int rx364_pos
@@ -4532,7 +4541,7 @@
     set_addr $I10, rxscan367_loop
     rx364_cur."!mark_push"(0, rx364_pos, $I10)
   rxscan367_done:
-.annotate "line", 205
+.annotate "line", 206
   # rx subcapture "sym"
     set_addr $I10, rxcap_368_fail
     rx364_cur."!mark_push"(0, rx364_pos, $I10)
@@ -4590,7 +4599,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("86_1261064023.05912") :method
+.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("86_1267204702.05125") :method
 .annotate "line", 4
     new $P366, "ResizablePMCArray"
     push $P366, "if"
@@ -4599,7 +4608,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<unless>"  :subid("87_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_mod_cond:sym<unless>"  :subid("87_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx372_tgt
     .local int rx372_pos
@@ -4630,7 +4639,7 @@
     set_addr $I10, rxscan375_loop
     rx372_cur."!mark_push"(0, rx372_pos, $I10)
   rxscan375_done:
-.annotate "line", 206
+.annotate "line", 207
   # rx subcapture "sym"
     set_addr $I10, rxcap_376_fail
     rx372_cur."!mark_push"(0, rx372_pos, $I10)
@@ -4688,7 +4697,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("88_1261064023.05912") :method
+.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("88_1267204702.05125") :method
 .annotate "line", 4
     new $P374, "ResizablePMCArray"
     push $P374, "unless"
@@ -4697,23 +4706,23 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop"  :subid("89_1261064023.05912") :method
-.annotate "line", 208
+.sub "statement_mod_loop"  :subid("89_1267204702.05125") :method
+.annotate "line", 209
     $P380 = self."!protoregex"("statement_mod_loop")
     .return ($P380)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop"  :subid("90_1261064023.05912") :method
-.annotate "line", 208
+.sub "!PREFIX__statement_mod_loop"  :subid("90_1267204702.05125") :method
+.annotate "line", 209
     $P382 = self."!PREFIX__!protoregex"("statement_mod_loop")
     .return ($P382)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<while>"  :subid("91_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_mod_loop:sym<while>"  :subid("91_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx384_tgt
     .local int rx384_pos
@@ -4744,7 +4753,7 @@
     set_addr $I10, rxscan387_loop
     rx384_cur."!mark_push"(0, rx384_pos, $I10)
   rxscan387_done:
-.annotate "line", 210
+.annotate "line", 211
   # rx subcapture "sym"
     set_addr $I10, rxcap_388_fail
     rx384_cur."!mark_push"(0, rx384_pos, $I10)
@@ -4802,7 +4811,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("92_1261064023.05912") :method
+.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("92_1267204702.05125") :method
 .annotate "line", 4
     new $P386, "ResizablePMCArray"
     push $P386, "while"
@@ -4811,7 +4820,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<until>"  :subid("93_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_mod_loop:sym<until>"  :subid("93_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx392_tgt
     .local int rx392_pos
@@ -4842,7 +4851,7 @@
     set_addr $I10, rxscan395_loop
     rx392_cur."!mark_push"(0, rx392_pos, $I10)
   rxscan395_done:
-.annotate "line", 211
+.annotate "line", 212
   # rx subcapture "sym"
     set_addr $I10, rxcap_396_fail
     rx392_cur."!mark_push"(0, rx392_pos, $I10)
@@ -4900,7 +4909,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("94_1261064023.05912") :method
+.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("94_1267204702.05125") :method
 .annotate "line", 4
     new $P394, "ResizablePMCArray"
     push $P394, "until"
@@ -4909,7 +4918,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<fatarrow>"  :subid("95_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<fatarrow>"  :subid("95_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx400_tgt
     .local int rx400_pos
@@ -4940,7 +4949,7 @@
     set_addr $I10, rxscan404_loop
     rx400_cur."!mark_push"(0, rx400_pos, $I10)
   rxscan404_done:
-.annotate "line", 215
+.annotate "line", 216
   # rx subrule "fatarrow" subtype=capture negate=
     rx400_cur."!cursor_pos"(rx400_pos)
     $P10 = rx400_cur."fatarrow"()
@@ -4967,7 +4976,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<fatarrow>"  :subid("96_1261064023.05912") :method
+.sub "!PREFIX__term:sym<fatarrow>"  :subid("96_1267204702.05125") :method
 .annotate "line", 4
     $P402 = self."!PREFIX__!subrule"("fatarrow", "")
     new $P403, "ResizablePMCArray"
@@ -4977,7 +4986,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<colonpair>"  :subid("97_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<colonpair>"  :subid("97_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx406_tgt
     .local int rx406_pos
@@ -5008,7 +5017,7 @@
     set_addr $I10, rxscan410_loop
     rx406_cur."!mark_push"(0, rx406_pos, $I10)
   rxscan410_done:
-.annotate "line", 216
+.annotate "line", 217
   # rx subrule "colonpair" subtype=capture negate=
     rx406_cur."!cursor_pos"(rx406_pos)
     $P10 = rx406_cur."colonpair"()
@@ -5035,7 +5044,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<colonpair>"  :subid("98_1261064023.05912") :method
+.sub "!PREFIX__term:sym<colonpair>"  :subid("98_1267204702.05125") :method
 .annotate "line", 4
     $P408 = self."!PREFIX__!subrule"("colonpair", "")
     new $P409, "ResizablePMCArray"
@@ -5045,7 +5054,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<variable>"  :subid("99_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<variable>"  :subid("99_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx412_tgt
     .local int rx412_pos
@@ -5076,7 +5085,7 @@
     set_addr $I10, rxscan416_loop
     rx412_cur."!mark_push"(0, rx412_pos, $I10)
   rxscan416_done:
-.annotate "line", 217
+.annotate "line", 218
   # rx subrule "variable" subtype=capture negate=
     rx412_cur."!cursor_pos"(rx412_pos)
     $P10 = rx412_cur."variable"()
@@ -5103,7 +5112,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<variable>"  :subid("100_1261064023.05912") :method
+.sub "!PREFIX__term:sym<variable>"  :subid("100_1267204702.05125") :method
 .annotate "line", 4
     $P414 = self."!PREFIX__!subrule"("variable", "")
     new $P415, "ResizablePMCArray"
@@ -5113,7 +5122,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<package_declarator>"  :subid("101_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<package_declarator>"  :subid("101_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx418_tgt
     .local int rx418_pos
@@ -5144,7 +5153,7 @@
     set_addr $I10, rxscan422_loop
     rx418_cur."!mark_push"(0, rx418_pos, $I10)
   rxscan422_done:
-.annotate "line", 218
+.annotate "line", 219
   # rx subrule "package_declarator" subtype=capture negate=
     rx418_cur."!cursor_pos"(rx418_pos)
     $P10 = rx418_cur."package_declarator"()
@@ -5171,7 +5180,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<package_declarator>"  :subid("102_1261064023.05912") :method
+.sub "!PREFIX__term:sym<package_declarator>"  :subid("102_1267204702.05125") :method
 .annotate "line", 4
     $P420 = self."!PREFIX__!subrule"("package_declarator", "")
     new $P421, "ResizablePMCArray"
@@ -5181,7 +5190,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<scope_declarator>"  :subid("103_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<scope_declarator>"  :subid("103_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx424_tgt
     .local int rx424_pos
@@ -5212,7 +5221,7 @@
     set_addr $I10, rxscan428_loop
     rx424_cur."!mark_push"(0, rx424_pos, $I10)
   rxscan428_done:
-.annotate "line", 219
+.annotate "line", 220
   # rx subrule "scope_declarator" subtype=capture negate=
     rx424_cur."!cursor_pos"(rx424_pos)
     $P10 = rx424_cur."scope_declarator"()
@@ -5239,7 +5248,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<scope_declarator>"  :subid("104_1261064023.05912") :method
+.sub "!PREFIX__term:sym<scope_declarator>"  :subid("104_1267204702.05125") :method
 .annotate "line", 4
     $P426 = self."!PREFIX__!subrule"("scope_declarator", "")
     new $P427, "ResizablePMCArray"
@@ -5249,7 +5258,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<routine_declarator>"  :subid("105_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<routine_declarator>"  :subid("105_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx430_tgt
     .local int rx430_pos
@@ -5280,7 +5289,7 @@
     set_addr $I10, rxscan434_loop
     rx430_cur."!mark_push"(0, rx430_pos, $I10)
   rxscan434_done:
-.annotate "line", 220
+.annotate "line", 221
   # rx subrule "routine_declarator" subtype=capture negate=
     rx430_cur."!cursor_pos"(rx430_pos)
     $P10 = rx430_cur."routine_declarator"()
@@ -5307,7 +5316,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<routine_declarator>"  :subid("106_1261064023.05912") :method
+.sub "!PREFIX__term:sym<routine_declarator>"  :subid("106_1267204702.05125") :method
 .annotate "line", 4
     $P432 = self."!PREFIX__!subrule"("routine_declarator", "")
     new $P433, "ResizablePMCArray"
@@ -5317,7 +5326,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<regex_declarator>"  :subid("107_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<regex_declarator>"  :subid("107_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx436_tgt
     .local int rx436_pos
@@ -5348,7 +5357,7 @@
     set_addr $I10, rxscan440_loop
     rx436_cur."!mark_push"(0, rx436_pos, $I10)
   rxscan440_done:
-.annotate "line", 221
+.annotate "line", 222
   # rx subrule "regex_declarator" subtype=capture negate=
     rx436_cur."!cursor_pos"(rx436_pos)
     $P10 = rx436_cur."regex_declarator"()
@@ -5375,7 +5384,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<regex_declarator>"  :subid("108_1261064023.05912") :method
+.sub "!PREFIX__term:sym<regex_declarator>"  :subid("108_1267204702.05125") :method
 .annotate "line", 4
     $P438 = self."!PREFIX__!subrule"("regex_declarator", "")
     new $P439, "ResizablePMCArray"
@@ -5385,7 +5394,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<statement_prefix>"  :subid("109_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<statement_prefix>"  :subid("109_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx442_tgt
     .local int rx442_pos
@@ -5416,7 +5425,7 @@
     set_addr $I10, rxscan446_loop
     rx442_cur."!mark_push"(0, rx442_pos, $I10)
   rxscan446_done:
-.annotate "line", 222
+.annotate "line", 223
   # rx subrule "statement_prefix" subtype=capture negate=
     rx442_cur."!cursor_pos"(rx442_pos)
     $P10 = rx442_cur."statement_prefix"()
@@ -5443,7 +5452,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<statement_prefix>"  :subid("110_1261064023.05912") :method
+.sub "!PREFIX__term:sym<statement_prefix>"  :subid("110_1267204702.05125") :method
 .annotate "line", 4
     $P444 = self."!PREFIX__!subrule"("statement_prefix", "")
     new $P445, "ResizablePMCArray"
@@ -5453,7 +5462,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<lambda>"  :subid("111_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<lambda>"  :subid("111_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx448_tgt
     .local int rx448_pos
@@ -5484,7 +5493,7 @@
     set_addr $I10, rxscan451_loop
     rx448_cur."!mark_push"(0, rx448_pos, $I10)
   rxscan451_done:
-.annotate "line", 223
+.annotate "line", 224
   # rx subrule "lambda" subtype=zerowidth negate=
     rx448_cur."!cursor_pos"(rx448_pos)
     $P10 = rx448_cur."lambda"()
@@ -5515,7 +5524,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<lambda>"  :subid("112_1261064023.05912") :method
+.sub "!PREFIX__term:sym<lambda>"  :subid("112_1267204702.05125") :method
 .annotate "line", 4
     new $P450, "ResizablePMCArray"
     push $P450, ""
@@ -5524,7 +5533,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "fatarrow"  :subid("113_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "fatarrow"  :subid("113_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx453_tgt
     .local int rx453_pos
@@ -5555,7 +5564,7 @@
     set_addr $I10, rxscan457_loop
     rx453_cur."!mark_push"(0, rx453_pos, $I10)
   rxscan457_done:
-.annotate "line", 226
+.annotate "line", 227
   # rx subrule "identifier" subtype=capture negate=
     rx453_cur."!cursor_pos"(rx453_pos)
     $P10 = rx453_cur."identifier"()
@@ -5597,7 +5606,7 @@
     rx453_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("val")
     rx453_pos = $P10."pos"()
-.annotate "line", 225
+.annotate "line", 226
   # rx pass
     rx453_cur."!cursor_pass"(rx453_pos, "fatarrow")
     rx453_cur."!cursor_debug"("PASS  ", "fatarrow", " at pos=", rx453_pos)
@@ -5617,7 +5626,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__fatarrow"  :subid("114_1261064023.05912") :method
+.sub "!PREFIX__fatarrow"  :subid("114_1267204702.05125") :method
 .annotate "line", 4
     $P455 = self."!PREFIX__!subrule"("key", "")
     new $P456, "ResizablePMCArray"
@@ -5627,7 +5636,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "colonpair"  :subid("115_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "colonpair"  :subid("115_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx461_tgt
     .local int rx461_pos
@@ -5659,7 +5668,7 @@
     set_addr $I10, rxscan467_loop
     rx461_cur."!mark_push"(0, rx461_pos, $I10)
   rxscan467_done:
-.annotate "line", 230
+.annotate "line", 231
   # rx literal  ":"
     add $I11, rx461_pos, 1
     gt $I11, rx461_eos, rx461_fail
@@ -5668,10 +5677,10 @@
     ne $S10, ":", rx461_fail
     add rx461_pos, 1
   alt468_0:
-.annotate "line", 231
+.annotate "line", 232
     set_addr $I10, alt468_1
     rx461_cur."!mark_push"(0, rx461_pos, $I10)
-.annotate "line", 232
+.annotate "line", 233
   # rx subcapture "not"
     set_addr $I10, rxcap_469_fail
     rx461_cur."!mark_push"(0, rx461_pos, $I10)
@@ -5704,7 +5713,7 @@
   alt468_1:
     set_addr $I10, alt468_2
     rx461_cur."!mark_push"(0, rx461_pos, $I10)
-.annotate "line", 233
+.annotate "line", 234
   # rx subrule "identifier" subtype=capture negate=
     rx461_cur."!cursor_pos"(rx461_pos)
     $P10 = rx461_cur."identifier"()
@@ -5727,7 +5736,7 @@
   rxquantr470_done:
     goto alt468_end
   alt468_2:
-.annotate "line", 234
+.annotate "line", 235
   # rx subrule "circumfix" subtype=capture negate=
     rx461_cur."!cursor_pos"(rx461_pos)
     $P10 = rx461_cur."circumfix"()
@@ -5736,7 +5745,7 @@
     $P10."!cursor_names"("circumfix")
     rx461_pos = $P10."pos"()
   alt468_end:
-.annotate "line", 229
+.annotate "line", 230
   # rx pass
     rx461_cur."!cursor_pass"(rx461_pos, "colonpair")
     rx461_cur."!cursor_debug"("PASS  ", "colonpair", " at pos=", rx461_pos)
@@ -5756,7 +5765,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__colonpair"  :subid("116_1261064023.05912") :method
+.sub "!PREFIX__colonpair"  :subid("116_1267204702.05125") :method
 .annotate "line", 4
     $P463 = self."!PREFIX__!subrule"("circumfix", ":")
     $P464 = self."!PREFIX__!subrule"("identifier", ":")
@@ -5770,7 +5779,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable"  :subid("117_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "variable"  :subid("117_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx473_tgt
     .local int rx473_pos
@@ -5803,10 +5812,10 @@
     rx473_cur."!mark_push"(0, rx473_pos, $I10)
   rxscan478_done:
   alt479_0:
-.annotate "line", 238
+.annotate "line", 239
     set_addr $I10, alt479_1
     rx473_cur."!mark_push"(0, rx473_pos, $I10)
-.annotate "line", 239
+.annotate "line", 240
   # rx subrule "sigil" subtype=capture negate=
     rx473_cur."!cursor_pos"(rx473_pos)
     $P10 = rx473_cur."sigil"()
@@ -5838,7 +5847,7 @@
   alt479_1:
     set_addr $I10, alt479_2
     rx473_cur."!mark_push"(0, rx473_pos, $I10)
-.annotate "line", 240
+.annotate "line", 241
   # rx subrule "sigil" subtype=capture negate=
     rx473_cur."!cursor_pos"(rx473_pos)
     $P10 = rx473_cur."sigil"()
@@ -5861,7 +5870,7 @@
     rx473_pos = $P10."pos"()
     goto alt479_end
   alt479_2:
-.annotate "line", 241
+.annotate "line", 242
   # rx subcapture "sigil"
     set_addr $I10, rxcap_482_fail
     rx473_cur."!mark_push"(0, rx473_pos, $I10)
@@ -5905,7 +5914,7 @@
     goto rx473_fail
   rxcap_483_done:
   alt479_end:
-.annotate "line", 238
+.annotate "line", 239
   # rx pass
     rx473_cur."!cursor_pass"(rx473_pos, "variable")
     rx473_cur."!cursor_debug"("PASS  ", "variable", " at pos=", rx473_pos)
@@ -5925,7 +5934,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable"  :subid("118_1261064023.05912") :method
+.sub "!PREFIX__variable"  :subid("118_1267204702.05125") :method
 .annotate "line", 4
     $P475 = self."!PREFIX__!subrule"("sigil", "")
     $P476 = self."!PREFIX__!subrule"("sigil", "")
@@ -5940,7 +5949,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "sigil"  :subid("119_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "sigil"  :subid("119_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx485_tgt
     .local int rx485_pos
@@ -5971,7 +5980,7 @@
     set_addr $I10, rxscan488_loop
     rx485_cur."!mark_push"(0, rx485_pos, $I10)
   rxscan488_done:
-.annotate "line", 244
+.annotate "line", 245
   # rx enumcharlist negate=0 
     ge rx485_pos, rx485_eos, rx485_fail
     sub $I10, rx485_pos, rx485_off
@@ -5998,7 +6007,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__sigil"  :subid("120_1261064023.05912") :method
+.sub "!PREFIX__sigil"  :subid("120_1267204702.05125") :method
 .annotate "line", 4
     new $P487, "ResizablePMCArray"
     push $P487, "&"
@@ -6010,7 +6019,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "twigil"  :subid("121_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "twigil"  :subid("121_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx490_tgt
     .local int rx490_pos
@@ -6041,7 +6050,7 @@
     set_addr $I10, rxscan493_loop
     rx490_cur."!mark_push"(0, rx490_pos, $I10)
   rxscan493_done:
-.annotate "line", 246
+.annotate "line", 247
   # rx enumcharlist negate=0 
     ge rx490_pos, rx490_eos, rx490_fail
     sub $I10, rx490_pos, rx490_off
@@ -6068,7 +6077,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__twigil"  :subid("122_1261064023.05912") :method
+.sub "!PREFIX__twigil"  :subid("122_1267204702.05125") :method
 .annotate "line", 4
     new $P492, "ResizablePMCArray"
     push $P492, "?"
@@ -6079,23 +6088,23 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator"  :subid("123_1261064023.05912") :method
-.annotate "line", 248
+.sub "package_declarator"  :subid("123_1267204702.05125") :method
+.annotate "line", 249
     $P495 = self."!protoregex"("package_declarator")
     .return ($P495)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator"  :subid("124_1261064023.05912") :method
-.annotate "line", 248
+.sub "!PREFIX__package_declarator"  :subid("124_1267204702.05125") :method
+.annotate "line", 249
     $P497 = self."!PREFIX__!protoregex"("package_declarator")
     .return ($P497)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<module>"  :subid("125_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "package_declarator:sym<module>"  :subid("125_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx499_tgt
     .local int rx499_pos
@@ -6126,7 +6135,7 @@
     set_addr $I10, rxscan503_loop
     rx499_cur."!mark_push"(0, rx499_pos, $I10)
   rxscan503_done:
-.annotate "line", 249
+.annotate "line", 250
   # rx subcapture "sym"
     set_addr $I10, rxcap_504_fail
     rx499_cur."!mark_push"(0, rx499_pos, $I10)
@@ -6174,7 +6183,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<module>"  :subid("126_1261064023.05912") :method
+.sub "!PREFIX__package_declarator:sym<module>"  :subid("126_1267204702.05125") :method
 .annotate "line", 4
     $P501 = self."!PREFIX__!subrule"("package_def", "module")
     new $P502, "ResizablePMCArray"
@@ -6184,7 +6193,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<class>"  :subid("127_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "package_declarator:sym<class>"  :subid("127_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx506_tgt
     .local int rx506_pos
@@ -6215,7 +6224,7 @@
     set_addr $I10, rxscan511_loop
     rx506_cur."!mark_push"(0, rx506_pos, $I10)
   rxscan511_done:
-.annotate "line", 250
+.annotate "line", 251
   # rx subcapture "sym"
     set_addr $I10, rxcap_513_fail
     rx506_cur."!mark_push"(0, rx506_pos, $I10)
@@ -6276,7 +6285,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<class>"  :subid("128_1261064023.05912") :method
+.sub "!PREFIX__package_declarator:sym<class>"  :subid("128_1267204702.05125") :method
 .annotate "line", 4
     $P508 = self."!PREFIX__!subrule"("package_def", "grammar")
     $P509 = self."!PREFIX__!subrule"("package_def", "class")
@@ -6288,7 +6297,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_def"  :subid("129_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "package_def"  :subid("129_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx515_tgt
     .local int rx515_pos
@@ -6320,13 +6329,13 @@
     set_addr $I10, rxscan518_loop
     rx515_cur."!mark_push"(0, rx515_pos, $I10)
   rxscan518_done:
-.annotate "line", 252
+.annotate "line", 253
   # rx subrule "ws" subtype=method negate=
     rx515_cur."!cursor_pos"(rx515_pos)
     $P10 = rx515_cur."ws"()
     unless $P10, rx515_fail
     rx515_pos = $P10."pos"()
-.annotate "line", 253
+.annotate "line", 254
   # rx subrule "name" subtype=capture negate=
     rx515_cur."!cursor_pos"(rx515_pos)
     $P10 = rx515_cur."name"()
@@ -6339,7 +6348,7 @@
     $P10 = rx515_cur."ws"()
     unless $P10, rx515_fail
     rx515_pos = $P10."pos"()
-.annotate "line", 254
+.annotate "line", 255
   # rx rxquantr521 ** 0..1
     set_addr $I525, rxquantr521_done
     rx515_cur."!mark_push"(0, rx515_pos, $I525)
@@ -6381,10 +6390,10 @@
     unless $P10, rx515_fail
     rx515_pos = $P10."pos"()
   alt527_0:
-.annotate "line", 255
+.annotate "line", 256
     set_addr $I10, alt527_1
     rx515_cur."!mark_push"(0, rx515_pos, $I10)
-.annotate "line", 256
+.annotate "line", 257
   # rx subrule "ws" subtype=method negate=
     rx515_cur."!cursor_pos"(rx515_pos)
     $P10 = rx515_cur."ws"()
@@ -6418,7 +6427,7 @@
   alt527_1:
     set_addr $I10, alt527_2
     rx515_cur."!mark_push"(0, rx515_pos, $I10)
-.annotate "line", 257
+.annotate "line", 258
   # rx subrule "ws" subtype=method negate=
     rx515_cur."!cursor_pos"(rx515_pos)
     $P10 = rx515_cur."ws"()
@@ -6449,7 +6458,7 @@
     rx515_pos = $P10."pos"()
     goto alt527_end
   alt527_2:
-.annotate "line", 258
+.annotate "line", 259
   # rx subrule "ws" subtype=method negate=
     rx515_cur."!cursor_pos"(rx515_pos)
     $P10 = rx515_cur."ws"()
@@ -6466,13 +6475,13 @@
     unless $P10, rx515_fail
     rx515_pos = $P10."pos"()
   alt527_end:
-.annotate "line", 259
+.annotate "line", 260
   # rx subrule "ws" subtype=method negate=
     rx515_cur."!cursor_pos"(rx515_pos)
     $P10 = rx515_cur."ws"()
     unless $P10, rx515_fail
     rx515_pos = $P10."pos"()
-.annotate "line", 252
+.annotate "line", 253
   # rx pass
     rx515_cur."!cursor_pass"(rx515_pos, "package_def")
     rx515_cur."!cursor_debug"("PASS  ", "package_def", " at pos=", rx515_pos)
@@ -6492,7 +6501,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_def"  :subid("130_1261064023.05912") :method
+.sub "!PREFIX__package_def"  :subid("130_1267204702.05125") :method
 .annotate "line", 4
     new $P517, "ResizablePMCArray"
     push $P517, ""
@@ -6501,23 +6510,23 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator"  :subid("131_1261064023.05912") :method
-.annotate "line", 262
+.sub "scope_declarator"  :subid("131_1267204702.05125") :method
+.annotate "line", 263
     $P538 = self."!protoregex"("scope_declarator")
     .return ($P538)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator"  :subid("132_1261064023.05912") :method
-.annotate "line", 262
+.sub "!PREFIX__scope_declarator"  :subid("132_1267204702.05125") :method
+.annotate "line", 263
     $P540 = self."!PREFIX__!protoregex"("scope_declarator")
     .return ($P540)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<my>"  :subid("133_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "scope_declarator:sym<my>"  :subid("133_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx542_tgt
     .local int rx542_pos
@@ -6548,7 +6557,7 @@
     set_addr $I10, rxscan546_loop
     rx542_cur."!mark_push"(0, rx542_pos, $I10)
   rxscan546_done:
-.annotate "line", 263
+.annotate "line", 264
   # rx subcapture "sym"
     set_addr $I10, rxcap_547_fail
     rx542_cur."!mark_push"(0, rx542_pos, $I10)
@@ -6596,7 +6605,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<my>"  :subid("134_1261064023.05912") :method
+.sub "!PREFIX__scope_declarator:sym<my>"  :subid("134_1267204702.05125") :method
 .annotate "line", 4
     $P544 = self."!PREFIX__!subrule"("scoped", "my")
     new $P545, "ResizablePMCArray"
@@ -6606,7 +6615,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<our>"  :subid("135_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "scope_declarator:sym<our>"  :subid("135_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx549_tgt
     .local int rx549_pos
@@ -6637,7 +6646,7 @@
     set_addr $I10, rxscan553_loop
     rx549_cur."!mark_push"(0, rx549_pos, $I10)
   rxscan553_done:
-.annotate "line", 264
+.annotate "line", 265
   # rx subcapture "sym"
     set_addr $I10, rxcap_554_fail
     rx549_cur."!mark_push"(0, rx549_pos, $I10)
@@ -6685,7 +6694,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<our>"  :subid("136_1261064023.05912") :method
+.sub "!PREFIX__scope_declarator:sym<our>"  :subid("136_1267204702.05125") :method
 .annotate "line", 4
     $P551 = self."!PREFIX__!subrule"("scoped", "our")
     new $P552, "ResizablePMCArray"
@@ -6695,7 +6704,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<has>"  :subid("137_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "scope_declarator:sym<has>"  :subid("137_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx556_tgt
     .local int rx556_pos
@@ -6726,7 +6735,7 @@
     set_addr $I10, rxscan560_loop
     rx556_cur."!mark_push"(0, rx556_pos, $I10)
   rxscan560_done:
-.annotate "line", 265
+.annotate "line", 266
   # rx subcapture "sym"
     set_addr $I10, rxcap_561_fail
     rx556_cur."!mark_push"(0, rx556_pos, $I10)
@@ -6774,7 +6783,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<has>"  :subid("138_1261064023.05912") :method
+.sub "!PREFIX__scope_declarator:sym<has>"  :subid("138_1267204702.05125") :method
 .annotate "line", 4
     $P558 = self."!PREFIX__!subrule"("scoped", "has")
     new $P559, "ResizablePMCArray"
@@ -6784,9 +6793,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scoped"  :subid("139_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "scoped"  :subid("139_1267204702.05125") :method :outer("11_1267204702.05125")
     .param pmc param_563
-.annotate "line", 267
+.annotate "line", 268
     .lex "$*SCOPE", param_563
 .annotate "line", 4
     .local string rx564_tgt
@@ -6819,10 +6828,10 @@
     rx564_cur."!mark_push"(0, rx564_pos, $I10)
   rxscan567_done:
   alt568_0:
-.annotate "line", 267
+.annotate "line", 268
     set_addr $I10, alt568_1
     rx564_cur."!mark_push"(0, rx564_pos, $I10)
-.annotate "line", 268
+.annotate "line", 269
   # rx subrule "ws" subtype=method negate=
     rx564_cur."!cursor_pos"(rx564_pos)
     $P10 = rx564_cur."ws"()
@@ -6842,7 +6851,7 @@
     rx564_pos = $P10."pos"()
     goto alt568_end
   alt568_1:
-.annotate "line", 269
+.annotate "line", 270
   # rx subrule "ws" subtype=method negate=
     rx564_cur."!cursor_pos"(rx564_pos)
     $P10 = rx564_cur."ws"()
@@ -6861,7 +6870,7 @@
     unless $P10, rx564_fail
     rx564_pos = $P10."pos"()
   alt568_end:
-.annotate "line", 267
+.annotate "line", 268
   # rx pass
     rx564_cur."!cursor_pass"(rx564_pos, "scoped")
     rx564_cur."!cursor_debug"("PASS  ", "scoped", " at pos=", rx564_pos)
@@ -6881,7 +6890,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scoped"  :subid("140_1261064023.05912") :method
+.sub "!PREFIX__scoped"  :subid("140_1267204702.05125") :method
 .annotate "line", 4
     new $P566, "ResizablePMCArray"
     push $P566, ""
@@ -6891,7 +6900,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable_declarator"  :subid("141_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "variable_declarator"  :subid("141_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx574_tgt
     .local int rx574_pos
@@ -6922,7 +6931,7 @@
     set_addr $I10, rxscan578_loop
     rx574_cur."!mark_push"(0, rx574_pos, $I10)
   rxscan578_done:
-.annotate "line", 272
+.annotate "line", 273
   # rx subrule "variable" subtype=capture negate=
     rx574_cur."!cursor_pos"(rx574_pos)
     $P10 = rx574_cur."variable"()
@@ -6949,7 +6958,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable_declarator"  :subid("142_1261064023.05912") :method
+.sub "!PREFIX__variable_declarator"  :subid("142_1267204702.05125") :method
 .annotate "line", 4
     $P576 = self."!PREFIX__!subrule"("variable", "")
     new $P577, "ResizablePMCArray"
@@ -6959,23 +6968,23 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator"  :subid("143_1261064023.05912") :method
-.annotate "line", 274
+.sub "routine_declarator"  :subid("143_1267204702.05125") :method
+.annotate "line", 275
     $P580 = self."!protoregex"("routine_declarator")
     .return ($P580)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator"  :subid("144_1261064023.05912") :method
-.annotate "line", 274
+.sub "!PREFIX__routine_declarator"  :subid("144_1267204702.05125") :method
+.annotate "line", 275
     $P582 = self."!PREFIX__!protoregex"("routine_declarator")
     .return ($P582)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<sub>"  :subid("145_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "routine_declarator:sym<sub>"  :subid("145_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx584_tgt
     .local int rx584_pos
@@ -7006,7 +7015,7 @@
     set_addr $I10, rxscan588_loop
     rx584_cur."!mark_push"(0, rx584_pos, $I10)
   rxscan588_done:
-.annotate "line", 275
+.annotate "line", 276
   # rx subcapture "sym"
     set_addr $I10, rxcap_589_fail
     rx584_cur."!mark_push"(0, rx584_pos, $I10)
@@ -7054,7 +7063,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("146_1261064023.05912") :method
+.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("146_1267204702.05125") :method
 .annotate "line", 4
     $P586 = self."!PREFIX__!subrule"("routine_def", "sub")
     new $P587, "ResizablePMCArray"
@@ -7064,7 +7073,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<method>"  :subid("147_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "routine_declarator:sym<method>"  :subid("147_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx591_tgt
     .local int rx591_pos
@@ -7095,7 +7104,7 @@
     set_addr $I10, rxscan595_loop
     rx591_cur."!mark_push"(0, rx591_pos, $I10)
   rxscan595_done:
-.annotate "line", 276
+.annotate "line", 277
   # rx subcapture "sym"
     set_addr $I10, rxcap_596_fail
     rx591_cur."!mark_push"(0, rx591_pos, $I10)
@@ -7143,7 +7152,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<method>"  :subid("148_1261064023.05912") :method
+.sub "!PREFIX__routine_declarator:sym<method>"  :subid("148_1267204702.05125") :method
 .annotate "line", 4
     $P593 = self."!PREFIX__!subrule"("method_def", "method")
     new $P594, "ResizablePMCArray"
@@ -7153,7 +7162,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_def"  :subid("149_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "routine_def"  :subid("149_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx598_tgt
     .local int rx598_pos
@@ -7163,7 +7172,7 @@
     .local pmc rx598_cur
     (rx598_cur, rx598_pos, rx598_tgt) = self."!cursor_start"()
     rx598_cur."!cursor_debug"("START ", "routine_def")
-    rx598_cur."!cursor_caparray"("sigil", "deflongname")
+    rx598_cur."!cursor_caparray"("deflongname", "sigil")
     .lex unicode:"$\x{a2}", rx598_cur
     .local pmc match
     .lex "$/", match
@@ -7185,13 +7194,13 @@
     set_addr $I10, rxscan601_loop
     rx598_cur."!mark_push"(0, rx598_pos, $I10)
   rxscan601_done:
-.annotate "line", 278
+.annotate "line", 279
   # rx subrule "ws" subtype=method negate=
     rx598_cur."!cursor_pos"(rx598_pos)
     $P10 = rx598_cur."ws"()
     unless $P10, rx598_fail
     rx598_pos = $P10."pos"()
-.annotate "line", 279
+.annotate "line", 280
   # rx rxquantr603 ** 0..1
     set_addr $I609, rxquantr603_done
     rx598_cur."!mark_push"(0, rx598_pos, $I609)
@@ -7247,7 +7256,7 @@
     $P10 = rx598_cur."ws"()
     unless $P10, rx598_fail
     rx598_pos = $P10."pos"()
-.annotate "line", 280
+.annotate "line", 281
   # rx subrule "newpad" subtype=method negate=
     rx598_cur."!cursor_pos"(rx598_pos)
     $P10 = rx598_cur."newpad"()
@@ -7259,7 +7268,7 @@
     unless $P10, rx598_fail
     rx598_pos = $P10."pos"()
   alt612_0:
-.annotate "line", 281
+.annotate "line", 282
     set_addr $I10, alt612_1
     rx598_cur."!mark_push"(0, rx598_pos, $I10)
   # rx subrule "ws" subtype=method negate=
@@ -7305,7 +7314,7 @@
     rx598_pos = $P10."pos"()
     goto alt612_end
   alt612_1:
-.annotate "line", 282
+.annotate "line", 283
   # rx subrule "ws" subtype=method negate=
     rx598_cur."!cursor_pos"(rx598_pos)
     $P10 = rx598_cur."ws"()
@@ -7327,7 +7336,7 @@
     $P10 = rx598_cur."ws"()
     unless $P10, rx598_fail
     rx598_pos = $P10."pos"()
-.annotate "line", 283
+.annotate "line", 284
   # rx subrule "blockoid" subtype=capture negate=
     rx598_cur."!cursor_pos"(rx598_pos)
     $P10 = rx598_cur."blockoid"()
@@ -7340,7 +7349,7 @@
     $P10 = rx598_cur."ws"()
     unless $P10, rx598_fail
     rx598_pos = $P10."pos"()
-.annotate "line", 278
+.annotate "line", 279
   # rx pass
     rx598_cur."!cursor_pass"(rx598_pos, "routine_def")
     rx598_cur."!cursor_debug"("PASS  ", "routine_def", " at pos=", rx598_pos)
@@ -7360,7 +7369,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_def"  :subid("150_1261064023.05912") :method
+.sub "!PREFIX__routine_def"  :subid("150_1267204702.05125") :method
 .annotate "line", 4
     new $P600, "ResizablePMCArray"
     push $P600, ""
@@ -7369,7 +7378,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "method_def"  :subid("151_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "method_def"  :subid("151_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx622_tgt
     .local int rx622_pos
@@ -7401,13 +7410,13 @@
     set_addr $I10, rxscan625_loop
     rx622_cur."!mark_push"(0, rx622_pos, $I10)
   rxscan625_done:
-.annotate "line", 286
+.annotate "line", 287
   # rx subrule "ws" subtype=method negate=
     rx622_cur."!cursor_pos"(rx622_pos)
     $P10 = rx622_cur."ws"()
     unless $P10, rx622_fail
     rx622_pos = $P10."pos"()
-.annotate "line", 287
+.annotate "line", 288
   # rx rxquantr627 ** 0..1
     set_addr $I628, rxquantr627_done
     rx622_cur."!mark_push"(0, rx622_pos, $I628)
@@ -7426,7 +7435,7 @@
     $P10 = rx622_cur."ws"()
     unless $P10, rx622_fail
     rx622_pos = $P10."pos"()
-.annotate "line", 288
+.annotate "line", 289
   # rx subrule "newpad" subtype=method negate=
     rx622_cur."!cursor_pos"(rx622_pos)
     $P10 = rx622_cur."newpad"()
@@ -7438,7 +7447,7 @@
     unless $P10, rx622_fail
     rx622_pos = $P10."pos"()
   alt631_0:
-.annotate "line", 289
+.annotate "line", 290
     set_addr $I10, alt631_1
     rx622_cur."!mark_push"(0, rx622_pos, $I10)
   # rx subrule "ws" subtype=method negate=
@@ -7484,7 +7493,7 @@
     rx622_pos = $P10."pos"()
     goto alt631_end
   alt631_1:
-.annotate "line", 290
+.annotate "line", 291
   # rx subrule "ws" subtype=method negate=
     rx622_cur."!cursor_pos"(rx622_pos)
     $P10 = rx622_cur."ws"()
@@ -7506,7 +7515,7 @@
     $P10 = rx622_cur."ws"()
     unless $P10, rx622_fail
     rx622_pos = $P10."pos"()
-.annotate "line", 291
+.annotate "line", 292
   # rx subrule "blockoid" subtype=capture negate=
     rx622_cur."!cursor_pos"(rx622_pos)
     $P10 = rx622_cur."blockoid"()
@@ -7519,7 +7528,7 @@
     $P10 = rx622_cur."ws"()
     unless $P10, rx622_fail
     rx622_pos = $P10."pos"()
-.annotate "line", 286
+.annotate "line", 287
   # rx pass
     rx622_cur."!cursor_pass"(rx622_pos, "method_def")
     rx622_cur."!cursor_debug"("PASS  ", "method_def", " at pos=", rx622_pos)
@@ -7539,7 +7548,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__method_def"  :subid("152_1261064023.05912") :method
+.sub "!PREFIX__method_def"  :subid("152_1267204702.05125") :method
 .annotate "line", 4
     new $P624, "ResizablePMCArray"
     push $P624, ""
@@ -7548,7 +7557,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "signature"  :subid("153_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "signature"  :subid("153_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx641_tgt
     .local int rx641_pos
@@ -7580,7 +7589,7 @@
     set_addr $I10, rxscan644_loop
     rx641_cur."!mark_push"(0, rx641_pos, $I10)
   rxscan644_done:
-.annotate "line", 294
+.annotate "line", 295
   # rx rxquantr645 ** 0..1
     set_addr $I648, rxquantr645_done
     rx641_cur."!mark_push"(0, rx641_pos, $I648)
@@ -7638,7 +7647,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__signature"  :subid("154_1261064023.05912") :method
+.sub "!PREFIX__signature"  :subid("154_1267204702.05125") :method
 .annotate "line", 4
     new $P643, "ResizablePMCArray"
     push $P643, ""
@@ -7647,7 +7656,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "parameter"  :subid("155_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "parameter"  :subid("155_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx650_tgt
     .local int rx650_pos
@@ -7680,10 +7689,10 @@
     rx650_cur."!mark_push"(0, rx650_pos, $I10)
   rxscan656_done:
   alt657_0:
-.annotate "line", 297
+.annotate "line", 298
     set_addr $I10, alt657_1
     rx650_cur."!mark_push"(0, rx650_pos, $I10)
-.annotate "line", 298
+.annotate "line", 299
   # rx subcapture "quant"
     set_addr $I10, rxcap_658_fail
     rx650_cur."!mark_push"(0, rx650_pos, $I10)
@@ -7715,7 +7724,7 @@
     goto alt657_end
   alt657_1:
   alt659_0:
-.annotate "line", 299
+.annotate "line", 300
     set_addr $I10, alt659_1
     rx650_cur."!mark_push"(0, rx650_pos, $I10)
   # rx subrule "param_var" subtype=capture negate=
@@ -7774,7 +7783,7 @@
     goto rx650_fail
   rxcap_661_done:
   alt657_end:
-.annotate "line", 301
+.annotate "line", 302
   # rx rxquantr662 ** 0..1
     set_addr $I663, rxquantr662_done
     rx650_cur."!mark_push"(0, rx650_pos, $I663)
@@ -7788,7 +7797,7 @@
     rx650_pos = $P10."pos"()
     (rx650_rep) = rx650_cur."!mark_commit"($I663)
   rxquantr662_done:
-.annotate "line", 296
+.annotate "line", 297
   # rx pass
     rx650_cur."!cursor_pass"(rx650_pos, "parameter")
     rx650_cur."!cursor_debug"("PASS  ", "parameter", " at pos=", rx650_pos)
@@ -7808,7 +7817,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__parameter"  :subid("156_1261064023.05912") :method
+.sub "!PREFIX__parameter"  :subid("156_1267204702.05125") :method
 .annotate "line", 4
     $P652 = self."!PREFIX__!subrule"("named_param", "")
     $P653 = self."!PREFIX__!subrule"("param_var", "")
@@ -7822,7 +7831,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "param_var"  :subid("157_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "param_var"  :subid("157_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx665_tgt
     .local int rx665_pos
@@ -7854,7 +7863,7 @@
     set_addr $I10, rxscan669_loop
     rx665_cur."!mark_push"(0, rx665_pos, $I10)
   rxscan669_done:
-.annotate "line", 305
+.annotate "line", 306
   # rx subrule "sigil" subtype=capture negate=
     rx665_cur."!cursor_pos"(rx665_pos)
     $P10 = rx665_cur."sigil"()
@@ -7876,7 +7885,7 @@
     (rx665_rep) = rx665_cur."!mark_commit"($I671)
   rxquantr670_done:
   alt672_0:
-.annotate "line", 306
+.annotate "line", 307
     set_addr $I10, alt672_1
     rx665_cur."!mark_push"(0, rx665_pos, $I10)
   # rx subrule "ident" subtype=capture negate=
@@ -7910,7 +7919,7 @@
     goto rx665_fail
   rxcap_673_done:
   alt672_end:
-.annotate "line", 304
+.annotate "line", 305
   # rx pass
     rx665_cur."!cursor_pass"(rx665_pos, "param_var")
     rx665_cur."!cursor_debug"("PASS  ", "param_var", " at pos=", rx665_pos)
@@ -7930,7 +7939,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__param_var"  :subid("158_1261064023.05912") :method
+.sub "!PREFIX__param_var"  :subid("158_1267204702.05125") :method
 .annotate "line", 4
     $P667 = self."!PREFIX__!subrule"("sigil", "")
     new $P668, "ResizablePMCArray"
@@ -7940,7 +7949,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "named_param"  :subid("159_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "named_param"  :subid("159_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx675_tgt
     .local int rx675_pos
@@ -7971,7 +7980,7 @@
     set_addr $I10, rxscan679_loop
     rx675_cur."!mark_push"(0, rx675_pos, $I10)
   rxscan679_done:
-.annotate "line", 310
+.annotate "line", 311
   # rx literal  ":"
     add $I11, rx675_pos, 1
     gt $I11, rx675_eos, rx675_fail
@@ -7986,7 +7995,7 @@
     rx675_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("param_var")
     rx675_pos = $P10."pos"()
-.annotate "line", 309
+.annotate "line", 310
   # rx pass
     rx675_cur."!cursor_pass"(rx675_pos, "named_param")
     rx675_cur."!cursor_debug"("PASS  ", "named_param", " at pos=", rx675_pos)
@@ -8006,7 +8015,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__named_param"  :subid("160_1261064023.05912") :method
+.sub "!PREFIX__named_param"  :subid("160_1267204702.05125") :method
 .annotate "line", 4
     $P677 = self."!PREFIX__!subrule"("param_var", ":")
     new $P678, "ResizablePMCArray"
@@ -8016,7 +8025,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "default_value"  :subid("161_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "default_value"  :subid("161_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx681_tgt
     .local int rx681_pos
@@ -8047,7 +8056,7 @@
     set_addr $I10, rxscan684_loop
     rx681_cur."!mark_push"(0, rx681_pos, $I10)
   rxscan684_done:
-.annotate "line", 313
+.annotate "line", 314
   # rx subrule "ws" subtype=method negate=
     rx681_cur."!cursor_pos"(rx681_pos)
     $P10 = rx681_cur."ws"()
@@ -8096,7 +8105,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__default_value"  :subid("162_1261064023.05912") :method
+.sub "!PREFIX__default_value"  :subid("162_1267204702.05125") :method
 .annotate "line", 4
     new $P683, "ResizablePMCArray"
     push $P683, ""
@@ -8105,7 +8114,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "regex_declarator"  :subid("163_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "regex_declarator"  :subid("163_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx689_tgt
     .local int rx689_pos
@@ -8137,17 +8146,17 @@
     set_addr $I10, rxscan692_loop
     rx689_cur."!mark_push"(0, rx689_pos, $I10)
   rxscan692_done:
-.annotate "line", 315
+.annotate "line", 316
   # rx subrule "ws" subtype=method negate=
     rx689_cur."!cursor_pos"(rx689_pos)
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
   alt694_0:
-.annotate "line", 316
+.annotate "line", 317
     set_addr $I10, alt694_1
     rx689_cur."!mark_push"(0, rx689_pos, $I10)
-.annotate "line", 317
+.annotate "line", 318
   # rx subrule "ws" subtype=method negate=
     rx689_cur."!cursor_pos"(rx689_pos)
     $P10 = rx689_cur."ws"()
@@ -8215,7 +8224,7 @@
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
-.annotate "line", 318
+.annotate "line", 319
   # rx subrule "deflongname" subtype=capture negate=
     rx689_cur."!cursor_pos"(rx689_pos)
     $P10 = rx689_cur."deflongname"()
@@ -8228,7 +8237,16 @@
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
-.annotate "line", 319
+  alt701_0:
+.annotate "line", 320
+    set_addr $I10, alt701_1
+    rx689_cur."!mark_push"(0, rx689_pos, $I10)
+.annotate "line", 321
+  # rx subrule "ws" subtype=method negate=
+    rx689_cur."!cursor_pos"(rx689_pos)
+    $P10 = rx689_cur."ws"()
+    unless $P10, rx689_fail
+    rx689_pos = $P10."pos"()
   # rx literal  "{"
     add $I11, rx689_pos, 1
     gt $I11, rx689_eos, rx689_fail
@@ -8269,20 +8287,45 @@
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
-.annotate "line", 317
+    goto alt701_end
+  alt701_1:
+.annotate "line", 322
+  # rx subrule "ws" subtype=method negate=
+    rx689_cur."!cursor_pos"(rx689_pos)
+    $P10 = rx689_cur."ws"()
+    unless $P10, rx689_fail
+    rx689_pos = $P10."pos"()
+  # rx subrule "panic" subtype=method negate=
+    rx689_cur."!cursor_pos"(rx689_pos)
+    $P10 = rx689_cur."panic"("Proto regex body must be <...>")
+    unless $P10, rx689_fail
+    rx689_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx689_cur."!cursor_pos"(rx689_pos)
+    $P10 = rx689_cur."ws"()
+    unless $P10, rx689_fail
+    rx689_pos = $P10."pos"()
+  alt701_end:
+.annotate "line", 323
+  # rx subrule "ws" subtype=method negate=
+    rx689_cur."!cursor_pos"(rx689_pos)
+    $P10 = rx689_cur."ws"()
+    unless $P10, rx689_fail
+    rx689_pos = $P10."pos"()
+.annotate "line", 318
     goto alt694_end
   alt694_1:
-.annotate "line", 320
+.annotate "line", 324
   # rx subrule "ws" subtype=method negate=
     rx689_cur."!cursor_pos"(rx689_pos)
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
   # rx subcapture "sym"
-    set_addr $I10, rxcap_706_fail
+    set_addr $I10, rxcap_711_fail
     rx689_cur."!mark_push"(0, rx689_pos, $I10)
-  alt705_0:
-    set_addr $I10, alt705_1
+  alt710_0:
+    set_addr $I10, alt710_1
     rx689_cur."!mark_push"(0, rx689_pos, $I10)
   # rx literal  "regex"
     add $I11, rx689_pos, 5
@@ -8291,9 +8334,9 @@
     substr $S10, rx689_tgt, $I11, 5
     ne $S10, "regex", rx689_fail
     add rx689_pos, 5
-    goto alt705_end
-  alt705_1:
-    set_addr $I10, alt705_2
+    goto alt710_end
+  alt710_1:
+    set_addr $I10, alt710_2
     rx689_cur."!mark_push"(0, rx689_pos, $I10)
   # rx literal  "token"
     add $I11, rx689_pos, 5
@@ -8302,8 +8345,8 @@
     substr $S10, rx689_tgt, $I11, 5
     ne $S10, "token", rx689_fail
     add rx689_pos, 5
-    goto alt705_end
-  alt705_2:
+    goto alt710_end
+  alt710_2:
   # rx literal  "rule"
     add $I11, rx689_pos, 4
     gt $I11, rx689_eos, rx689_fail
@@ -8311,24 +8354,24 @@
     substr $S10, rx689_tgt, $I11, 4
     ne $S10, "rule", rx689_fail
     add rx689_pos, 4
-  alt705_end:
-    set_addr $I10, rxcap_706_fail
+  alt710_end:
+    set_addr $I10, rxcap_711_fail
     ($I12, $I11) = rx689_cur."!mark_peek"($I10)
     rx689_cur."!cursor_pos"($I11)
     ($P10) = rx689_cur."!cursor_start"()
     $P10."!cursor_pass"(rx689_pos, "")
     rx689_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_706_done
-  rxcap_706_fail:
+    goto rxcap_711_done
+  rxcap_711_fail:
     goto rx689_fail
-  rxcap_706_done:
+  rxcap_711_done:
   # rx subrule "ws" subtype=method negate=
     rx689_cur."!cursor_pos"(rx689_pos)
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
-.annotate "line", 321
+.annotate "line", 325
   # rx subrule "deflongname" subtype=capture negate=
     rx689_cur."!cursor_pos"(rx689_pos)
     $P10 = rx689_cur."deflongname"()
@@ -8341,7 +8384,7 @@
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
-.annotate "line", 322
+.annotate "line", 326
   # rx subrule "newpad" subtype=method negate=
     rx689_cur."!cursor_pos"(rx689_pos)
     $P10 = rx689_cur."newpad"()
@@ -8352,11 +8395,11 @@
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
-.annotate "line", 323
-  # rx rxquantr710 ** 0..1
-    set_addr $I715, rxquantr710_done
-    rx689_cur."!mark_push"(0, rx689_pos, $I715)
-  rxquantr710_loop:
+.annotate "line", 327
+  # rx rxquantr715 ** 0..1
+    set_addr $I720, rxquantr715_done
+    rx689_cur."!mark_push"(0, rx689_pos, $I720)
+  rxquantr715_loop:
   # rx subrule "ws" subtype=method negate=
     rx689_cur."!cursor_pos"(rx689_pos)
     $P10 = rx689_cur."ws"()
@@ -8398,14 +8441,14 @@
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
-    (rx689_rep) = rx689_cur."!mark_commit"($I715)
-  rxquantr710_done:
+    (rx689_rep) = rx689_cur."!mark_commit"($I720)
+  rxquantr715_done:
   # rx subrule "ws" subtype=method negate=
     rx689_cur."!cursor_pos"(rx689_pos)
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
-.annotate "line", 324
+.annotate "line", 328
   # rx reduce name="regex_declarator" key="open"
     rx689_cur."!cursor_pos"(rx689_pos)
     rx689_cur."!reduce"("regex_declarator", "open")
@@ -8414,7 +8457,7 @@
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
-.annotate "line", 325
+.annotate "line", 329
   # rx literal  "{"
     add $I11, rx689_pos, 1
     gt $I11, rx689_eos, rx689_fail
@@ -8446,13 +8489,13 @@
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
   alt694_end:
-.annotate "line", 326
+.annotate "line", 330
   # rx subrule "ws" subtype=method negate=
     rx689_cur."!cursor_pos"(rx689_pos)
     $P10 = rx689_cur."ws"()
     unless $P10, rx689_fail
     rx689_pos = $P10."pos"()
-.annotate "line", 315
+.annotate "line", 316
   # rx pass
     rx689_cur."!cursor_pass"(rx689_pos, "regex_declarator")
     rx689_cur."!cursor_debug"("PASS  ", "regex_declarator", " at pos=", rx689_pos)
@@ -8472,7 +8515,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__regex_declarator"  :subid("164_1261064023.05912") :method
+.sub "!PREFIX__regex_declarator"  :subid("164_1267204702.05125") :method
 .annotate "line", 4
     new $P691, "ResizablePMCArray"
     push $P691, ""
@@ -8481,1063 +8524,990 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "dotty"  :subid("165_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "dotty"  :subid("165_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx721_tgt
-    .local int rx721_pos
-    .local int rx721_off
-    .local int rx721_eos
-    .local int rx721_rep
-    .local pmc rx721_cur
-    (rx721_cur, rx721_pos, rx721_tgt) = self."!cursor_start"()
-    rx721_cur."!cursor_debug"("START ", "dotty")
-    rx721_cur."!cursor_caparray"("args")
-    .lex unicode:"$\x{a2}", rx721_cur
-    .local pmc match
-    .lex "$/", match
-    length rx721_eos, rx721_tgt
-    set rx721_off, 0
-    lt rx721_pos, 2, rx721_start
-    sub rx721_off, rx721_pos, 1
-    substr rx721_tgt, rx721_tgt, rx721_off
-  rx721_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan725_done
-    goto rxscan725_scan
-  rxscan725_loop:
-    ($P10) = rx721_cur."from"()
-    inc $P10
-    set rx721_pos, $P10
-    ge rx721_pos, rx721_eos, rxscan725_done
-  rxscan725_scan:
-    set_addr $I10, rxscan725_loop
-    rx721_cur."!mark_push"(0, rx721_pos, $I10)
-  rxscan725_done:
-.annotate "line", 330
+    .local string rx726_tgt
+    .local int rx726_pos
+    .local int rx726_off
+    .local int rx726_eos
+    .local int rx726_rep
+    .local pmc rx726_cur
+    (rx726_cur, rx726_pos, rx726_tgt) = self."!cursor_start"()
+    rx726_cur."!cursor_debug"("START ", "dotty")
+    rx726_cur."!cursor_caparray"("args")
+    .lex unicode:"$\x{a2}", rx726_cur
+    .local pmc match
+    .lex "$/", match
+    length rx726_eos, rx726_tgt
+    set rx726_off, 0
+    lt rx726_pos, 2, rx726_start
+    sub rx726_off, rx726_pos, 1
+    substr rx726_tgt, rx726_tgt, rx726_off
+  rx726_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan730_done
+    goto rxscan730_scan
+  rxscan730_loop:
+    ($P10) = rx726_cur."from"()
+    inc $P10
+    set rx726_pos, $P10
+    ge rx726_pos, rx726_eos, rxscan730_done
+  rxscan730_scan:
+    set_addr $I10, rxscan730_loop
+    rx726_cur."!mark_push"(0, rx726_pos, $I10)
+  rxscan730_done:
+.annotate "line", 334
   # rx literal  "."
-    add $I11, rx721_pos, 1
-    gt $I11, rx721_eos, rx721_fail
-    sub $I11, rx721_pos, rx721_off
-    substr $S10, rx721_tgt, $I11, 1
-    ne $S10, ".", rx721_fail
-    add rx721_pos, 1
-  alt726_0:
-.annotate "line", 331
-    set_addr $I10, alt726_1
-    rx721_cur."!mark_push"(0, rx721_pos, $I10)
+    add $I11, rx726_pos, 1
+    gt $I11, rx726_eos, rx726_fail
+    sub $I11, rx726_pos, rx726_off
+    substr $S10, rx726_tgt, $I11, 1
+    ne $S10, ".", rx726_fail
+    add rx726_pos, 1
+  alt731_0:
+.annotate "line", 335
+    set_addr $I10, alt731_1
+    rx726_cur."!mark_push"(0, rx726_pos, $I10)
   # rx subrule "identifier" subtype=capture negate=
-    rx721_cur."!cursor_pos"(rx721_pos)
-    $P10 = rx721_cur."identifier"()
-    unless $P10, rx721_fail
-    rx721_cur."!mark_push"(0, -1, 0, $P10)
+    rx726_cur."!cursor_pos"(rx726_pos)
+    $P10 = rx726_cur."identifier"()
+    unless $P10, rx726_fail
+    rx726_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("longname=identifier")
-    rx721_pos = $P10."pos"()
-    goto alt726_end
-  alt726_1:
-.annotate "line", 332
+    rx726_pos = $P10."pos"()
+    goto alt731_end
+  alt731_1:
+.annotate "line", 336
   # rx enumcharlist negate=0 zerowidth
-    ge rx721_pos, rx721_eos, rx721_fail
-    sub $I10, rx721_pos, rx721_off
-    substr $S10, rx721_tgt, $I10, 1
+    ge rx726_pos, rx726_eos, rx726_fail
+    sub $I10, rx726_pos, rx726_off
+    substr $S10, rx726_tgt, $I10, 1
     index $I11, "'\"", $S10
-    lt $I11, 0, rx721_fail
+    lt $I11, 0, rx726_fail
   # rx subrule "quote" subtype=capture negate=
-    rx721_cur."!cursor_pos"(rx721_pos)
-    $P10 = rx721_cur."quote"()
-    unless $P10, rx721_fail
-    rx721_cur."!mark_push"(0, -1, 0, $P10)
+    rx726_cur."!cursor_pos"(rx726_pos)
+    $P10 = rx726_cur."quote"()
+    unless $P10, rx726_fail
+    rx726_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("quote")
-    rx721_pos = $P10."pos"()
-  alt727_0:
-.annotate "line", 333
-    set_addr $I10, alt727_1
-    rx721_cur."!mark_push"(0, rx721_pos, $I10)
+    rx726_pos = $P10."pos"()
+  alt732_0:
+.annotate "line", 337
+    set_addr $I10, alt732_1
+    rx726_cur."!mark_push"(0, rx726_pos, $I10)
   # rx enumcharlist negate=0 zerowidth
-    ge rx721_pos, rx721_eos, rx721_fail
-    sub $I10, rx721_pos, rx721_off
-    substr $S10, rx721_tgt, $I10, 1
+    ge rx726_pos, rx726_eos, rx726_fail
+    sub $I10, rx726_pos, rx726_off
+    substr $S10, rx726_tgt, $I10, 1
     index $I11, "(", $S10
-    lt $I11, 0, rx721_fail
-    goto alt727_end
-  alt727_1:
+    lt $I11, 0, rx726_fail
+    goto alt732_end
+  alt732_1:
   # rx subrule "panic" subtype=method negate=
-    rx721_cur."!cursor_pos"(rx721_pos)
-    $P10 = rx721_cur."panic"("Quoted method name requires parenthesized arguments")
-    unless $P10, rx721_fail
-    rx721_pos = $P10."pos"()
-  alt727_end:
-  alt726_end:
-.annotate "line", 339
-  # rx rxquantr728 ** 0..1
-    set_addr $I730, rxquantr728_done
-    rx721_cur."!mark_push"(0, rx721_pos, $I730)
-  rxquantr728_loop:
-  alt729_0:
-.annotate "line", 336
-    set_addr $I10, alt729_1
-    rx721_cur."!mark_push"(0, rx721_pos, $I10)
-.annotate "line", 337
+    rx726_cur."!cursor_pos"(rx726_pos)
+    $P10 = rx726_cur."panic"("Quoted method name requires parenthesized arguments")
+    unless $P10, rx726_fail
+    rx726_pos = $P10."pos"()
+  alt732_end:
+  alt731_end:
+.annotate "line", 343
+  # rx rxquantr733 ** 0..1
+    set_addr $I735, rxquantr733_done
+    rx726_cur."!mark_push"(0, rx726_pos, $I735)
+  rxquantr733_loop:
+  alt734_0:
+.annotate "line", 340
+    set_addr $I10, alt734_1
+    rx726_cur."!mark_push"(0, rx726_pos, $I10)
+.annotate "line", 341
   # rx enumcharlist negate=0 zerowidth
-    ge rx721_pos, rx721_eos, rx721_fail
-    sub $I10, rx721_pos, rx721_off
-    substr $S10, rx721_tgt, $I10, 1
+    ge rx726_pos, rx726_eos, rx726_fail
+    sub $I10, rx726_pos, rx726_off
+    substr $S10, rx726_tgt, $I10, 1
     index $I11, "(", $S10
-    lt $I11, 0, rx721_fail
+    lt $I11, 0, rx726_fail
   # rx subrule "args" subtype=capture negate=
-    rx721_cur."!cursor_pos"(rx721_pos)
-    $P10 = rx721_cur."args"()
-    unless $P10, rx721_fail
-    rx721_cur."!mark_push"(0, -1, 0, $P10)
+    rx726_cur."!cursor_pos"(rx726_pos)
+    $P10 = rx726_cur."args"()
+    unless $P10, rx726_fail
+    rx726_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("args")
-    rx721_pos = $P10."pos"()
-    goto alt729_end
-  alt729_1:
-.annotate "line", 338
+    rx726_pos = $P10."pos"()
+    goto alt734_end
+  alt734_1:
+.annotate "line", 342
   # rx literal  ":"
-    add $I11, rx721_pos, 1
-    gt $I11, rx721_eos, rx721_fail
-    sub $I11, rx721_pos, rx721_off
-    substr $S10, rx721_tgt, $I11, 1
-    ne $S10, ":", rx721_fail
-    add rx721_pos, 1
+    add $I11, rx726_pos, 1
+    gt $I11, rx726_eos, rx726_fail
+    sub $I11, rx726_pos, rx726_off
+    substr $S10, rx726_tgt, $I11, 1
+    ne $S10, ":", rx726_fail
+    add rx726_pos, 1
   # rx charclass s
-    ge rx721_pos, rx721_eos, rx721_fail
-    sub $I10, rx721_pos, rx721_off
-    is_cclass $I11, 32, rx721_tgt, $I10
-    unless $I11, rx721_fail
-    inc rx721_pos
+    ge rx726_pos, rx726_eos, rx726_fail
+    sub $I10, rx726_pos, rx726_off
+    is_cclass $I11, 32, rx726_tgt, $I10
+    unless $I11, rx726_fail
+    inc rx726_pos
   # rx subrule "arglist" subtype=capture negate=
-    rx721_cur."!cursor_pos"(rx721_pos)
-    $P10 = rx721_cur."arglist"()
-    unless $P10, rx721_fail
-    rx721_cur."!mark_push"(0, -1, 0, $P10)
+    rx726_cur."!cursor_pos"(rx726_pos)
+    $P10 = rx726_cur."arglist"()
+    unless $P10, rx726_fail
+    rx726_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("args")
-    rx721_pos = $P10."pos"()
-  alt729_end:
-.annotate "line", 339
-    (rx721_rep) = rx721_cur."!mark_commit"($I730)
-  rxquantr728_done:
-.annotate "line", 329
+    rx726_pos = $P10."pos"()
+  alt734_end:
+.annotate "line", 343
+    (rx726_rep) = rx726_cur."!mark_commit"($I735)
+  rxquantr733_done:
+.annotate "line", 333
   # rx pass
-    rx721_cur."!cursor_pass"(rx721_pos, "dotty")
-    rx721_cur."!cursor_debug"("PASS  ", "dotty", " at pos=", rx721_pos)
-    .return (rx721_cur)
-  rx721_fail:
+    rx726_cur."!cursor_pass"(rx726_pos, "dotty")
+    rx726_cur."!cursor_debug"("PASS  ", "dotty", " at pos=", rx726_pos)
+    .return (rx726_cur)
+  rx726_fail:
 .annotate "line", 4
-    (rx721_rep, rx721_pos, $I10, $P10) = rx721_cur."!mark_fail"(0)
-    lt rx721_pos, -1, rx721_done
-    eq rx721_pos, -1, rx721_fail
+    (rx726_rep, rx726_pos, $I10, $P10) = rx726_cur."!mark_fail"(0)
+    lt rx726_pos, -1, rx726_done
+    eq rx726_pos, -1, rx726_fail
     jump $I10
-  rx721_done:
-    rx721_cur."!cursor_fail"()
-    rx721_cur."!cursor_debug"("FAIL  ", "dotty")
-    .return (rx721_cur)
+  rx726_done:
+    rx726_cur."!cursor_fail"()
+    rx726_cur."!cursor_debug"("FAIL  ", "dotty")
+    .return (rx726_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__dotty"  :subid("166_1261064023.05912") :method
+.sub "!PREFIX__dotty"  :subid("166_1267204702.05125") :method
 .annotate "line", 4
-    $P723 = self."!PREFIX__!subrule"("longname=identifier", ".")
-    new $P724, "ResizablePMCArray"
-    push $P724, "'"
-    push $P724, "\""
-    push $P724, $P723
-    .return ($P724)
+    $P728 = self."!PREFIX__!subrule"("longname=identifier", ".")
+    new $P729, "ResizablePMCArray"
+    push $P729, "'"
+    push $P729, "\""
+    push $P729, $P728
+    .return ($P729)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term"  :subid("167_1261064023.05912") :method
-.annotate "line", 343
-    $P732 = self."!protoregex"("term")
-    .return ($P732)
+.sub "term"  :subid("167_1267204702.05125") :method
+.annotate "line", 347
+    $P737 = self."!protoregex"("term")
+    .return ($P737)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term"  :subid("168_1261064023.05912") :method
-.annotate "line", 343
-    $P734 = self."!PREFIX__!protoregex"("term")
-    .return ($P734)
+.sub "!PREFIX__term"  :subid("168_1267204702.05125") :method
+.annotate "line", 347
+    $P739 = self."!PREFIX__!protoregex"("term")
+    .return ($P739)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<self>"  :subid("169_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<self>"  :subid("169_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx736_tgt
-    .local int rx736_pos
-    .local int rx736_off
-    .local int rx736_eos
-    .local int rx736_rep
-    .local pmc rx736_cur
-    (rx736_cur, rx736_pos, rx736_tgt) = self."!cursor_start"()
-    rx736_cur."!cursor_debug"("START ", "term:sym<self>")
-    .lex unicode:"$\x{a2}", rx736_cur
-    .local pmc match
-    .lex "$/", match
-    length rx736_eos, rx736_tgt
-    set rx736_off, 0
-    lt rx736_pos, 2, rx736_start
-    sub rx736_off, rx736_pos, 1
-    substr rx736_tgt, rx736_tgt, rx736_off
-  rx736_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan739_done
-    goto rxscan739_scan
-  rxscan739_loop:
-    ($P10) = rx736_cur."from"()
-    inc $P10
-    set rx736_pos, $P10
-    ge rx736_pos, rx736_eos, rxscan739_done
-  rxscan739_scan:
-    set_addr $I10, rxscan739_loop
-    rx736_cur."!mark_push"(0, rx736_pos, $I10)
-  rxscan739_done:
-.annotate "line", 345
+    .local string rx741_tgt
+    .local int rx741_pos
+    .local int rx741_off
+    .local int rx741_eos
+    .local int rx741_rep
+    .local pmc rx741_cur
+    (rx741_cur, rx741_pos, rx741_tgt) = self."!cursor_start"()
+    rx741_cur."!cursor_debug"("START ", "term:sym<self>")
+    .lex unicode:"$\x{a2}", rx741_cur
+    .local pmc match
+    .lex "$/", match
+    length rx741_eos, rx741_tgt
+    set rx741_off, 0
+    lt rx741_pos, 2, rx741_start
+    sub rx741_off, rx741_pos, 1
+    substr rx741_tgt, rx741_tgt, rx741_off
+  rx741_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan744_done
+    goto rxscan744_scan
+  rxscan744_loop:
+    ($P10) = rx741_cur."from"()
+    inc $P10
+    set rx741_pos, $P10
+    ge rx741_pos, rx741_eos, rxscan744_done
+  rxscan744_scan:
+    set_addr $I10, rxscan744_loop
+    rx741_cur."!mark_push"(0, rx741_pos, $I10)
+  rxscan744_done:
+.annotate "line", 349
   # rx subcapture "sym"
-    set_addr $I10, rxcap_740_fail
-    rx736_cur."!mark_push"(0, rx736_pos, $I10)
+    set_addr $I10, rxcap_745_fail
+    rx741_cur."!mark_push"(0, rx741_pos, $I10)
   # rx literal  "self"
-    add $I11, rx736_pos, 4
-    gt $I11, rx736_eos, rx736_fail
-    sub $I11, rx736_pos, rx736_off
-    substr $S10, rx736_tgt, $I11, 4
-    ne $S10, "self", rx736_fail
-    add rx736_pos, 4
-    set_addr $I10, rxcap_740_fail
-    ($I12, $I11) = rx736_cur."!mark_peek"($I10)
-    rx736_cur."!cursor_pos"($I11)
-    ($P10) = rx736_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx736_pos, "")
-    rx736_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx741_pos, 4
+    gt $I11, rx741_eos, rx741_fail
+    sub $I11, rx741_pos, rx741_off
+    substr $S10, rx741_tgt, $I11, 4
+    ne $S10, "self", rx741_fail
+    add rx741_pos, 4
+    set_addr $I10, rxcap_745_fail
+    ($I12, $I11) = rx741_cur."!mark_peek"($I10)
+    rx741_cur."!cursor_pos"($I11)
+    ($P10) = rx741_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx741_pos, "")
+    rx741_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_740_done
-  rxcap_740_fail:
-    goto rx736_fail
-  rxcap_740_done:
+    goto rxcap_745_done
+  rxcap_745_fail:
+    goto rx741_fail
+  rxcap_745_done:
   # rxanchor rwb
-    le rx736_pos, 0, rx736_fail
-    sub $I10, rx736_pos, rx736_off
-    is_cclass $I11, 8192, rx736_tgt, $I10
-    if $I11, rx736_fail
+    le rx741_pos, 0, rx741_fail
+    sub $I10, rx741_pos, rx741_off
+    is_cclass $I11, 8192, rx741_tgt, $I10
+    if $I11, rx741_fail
     dec $I10
-    is_cclass $I11, 8192, rx736_tgt, $I10
-    unless $I11, rx736_fail
+    is_cclass $I11, 8192, rx741_tgt, $I10
+    unless $I11, rx741_fail
   # rx pass
-    rx736_cur."!cursor_pass"(rx736_pos, "term:sym<self>")
-    rx736_cur."!cursor_debug"("PASS  ", "term:sym<self>", " at pos=", rx736_pos)
-    .return (rx736_cur)
-  rx736_fail:
+    rx741_cur."!cursor_pass"(rx741_pos, "term:sym<self>")
+    rx741_cur."!cursor_debug"("PASS  ", "term:sym<self>", " at pos=", rx741_pos)
+    .return (rx741_cur)
+  rx741_fail:
 .annotate "line", 4
-    (rx736_rep, rx736_pos, $I10, $P10) = rx736_cur."!mark_fail"(0)
-    lt rx736_pos, -1, rx736_done
-    eq rx736_pos, -1, rx736_fail
+    (rx741_rep, rx741_pos, $I10, $P10) = rx741_cur."!mark_fail"(0)
+    lt rx741_pos, -1, rx741_done
+    eq rx741_pos, -1, rx741_fail
     jump $I10
-  rx736_done:
-    rx736_cur."!cursor_fail"()
-    rx736_cur."!cursor_debug"("FAIL  ", "term:sym<self>")
-    .return (rx736_cur)
+  rx741_done:
+    rx741_cur."!cursor_fail"()
+    rx741_cur."!cursor_debug"("FAIL  ", "term:sym<self>")
+    .return (rx741_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<self>"  :subid("170_1261064023.05912") :method
+.sub "!PREFIX__term:sym<self>"  :subid("170_1267204702.05125") :method
 .annotate "line", 4
-    new $P738, "ResizablePMCArray"
-    push $P738, "self"
-    .return ($P738)
+    new $P743, "ResizablePMCArray"
+    push $P743, "self"
+    .return ($P743)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<identifier>"  :subid("171_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<identifier>"  :subid("171_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx742_tgt
-    .local int rx742_pos
-    .local int rx742_off
-    .local int rx742_eos
-    .local int rx742_rep
-    .local pmc rx742_cur
-    (rx742_cur, rx742_pos, rx742_tgt) = self."!cursor_start"()
-    rx742_cur."!cursor_debug"("START ", "term:sym<identifier>")
-    .lex unicode:"$\x{a2}", rx742_cur
+    .local string rx747_tgt
+    .local int rx747_pos
+    .local int rx747_off
+    .local int rx747_eos
+    .local int rx747_rep
+    .local pmc rx747_cur
+    (rx747_cur, rx747_pos, rx747_tgt) = self."!cursor_start"()
+    rx747_cur."!cursor_debug"("START ", "term:sym<identifier>")
+    .lex unicode:"$\x{a2}", rx747_cur
     .local pmc match
     .lex "$/", match
-    length rx742_eos, rx742_tgt
-    set rx742_off, 0
-    lt rx742_pos, 2, rx742_start
-    sub rx742_off, rx742_pos, 1
-    substr rx742_tgt, rx742_tgt, rx742_off
-  rx742_start:
+    length rx747_eos, rx747_tgt
+    set rx747_off, 0
+    lt rx747_pos, 2, rx747_start
+    sub rx747_off, rx747_pos, 1
+    substr rx747_tgt, rx747_tgt, rx747_off
+  rx747_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan746_done
-    goto rxscan746_scan
-  rxscan746_loop:
-    ($P10) = rx742_cur."from"()
+    ne $I10, -1, rxscan751_done
+    goto rxscan751_scan
+  rxscan751_loop:
+    ($P10) = rx747_cur."from"()
     inc $P10
-    set rx742_pos, $P10
-    ge rx742_pos, rx742_eos, rxscan746_done
-  rxscan746_scan:
-    set_addr $I10, rxscan746_loop
-    rx742_cur."!mark_push"(0, rx742_pos, $I10)
-  rxscan746_done:
-.annotate "line", 348
+    set rx747_pos, $P10
+    ge rx747_pos, rx747_eos, rxscan751_done
+  rxscan751_scan:
+    set_addr $I10, rxscan751_loop
+    rx747_cur."!mark_push"(0, rx747_pos, $I10)
+  rxscan751_done:
+.annotate "line", 352
   # rx subrule "identifier" subtype=capture negate=
-    rx742_cur."!cursor_pos"(rx742_pos)
-    $P10 = rx742_cur."identifier"()
-    unless $P10, rx742_fail
-    rx742_cur."!mark_push"(0, -1, 0, $P10)
+    rx747_cur."!cursor_pos"(rx747_pos)
+    $P10 = rx747_cur."identifier"()
+    unless $P10, rx747_fail
+    rx747_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("identifier")
-    rx742_pos = $P10."pos"()
+    rx747_pos = $P10."pos"()
   # rx enumcharlist negate=0 zerowidth
-    ge rx742_pos, rx742_eos, rx742_fail
-    sub $I10, rx742_pos, rx742_off
-    substr $S10, rx742_tgt, $I10, 1
+    ge rx747_pos, rx747_eos, rx747_fail
+    sub $I10, rx747_pos, rx747_off
+    substr $S10, rx747_tgt, $I10, 1
     index $I11, "(", $S10
-    lt $I11, 0, rx742_fail
+    lt $I11, 0, rx747_fail
   # rx subrule "args" subtype=capture negate=
-    rx742_cur."!cursor_pos"(rx742_pos)
-    $P10 = rx742_cur."args"()
-    unless $P10, rx742_fail
-    rx742_cur."!mark_push"(0, -1, 0, $P10)
+    rx747_cur."!cursor_pos"(rx747_pos)
+    $P10 = rx747_cur."args"()
+    unless $P10, rx747_fail
+    rx747_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("args")
-    rx742_pos = $P10."pos"()
-.annotate "line", 347
+    rx747_pos = $P10."pos"()
+.annotate "line", 351
   # rx pass
-    rx742_cur."!cursor_pass"(rx742_pos, "term:sym<identifier>")
-    rx742_cur."!cursor_debug"("PASS  ", "term:sym<identifier>", " at pos=", rx742_pos)
-    .return (rx742_cur)
-  rx742_fail:
+    rx747_cur."!cursor_pass"(rx747_pos, "term:sym<identifier>")
+    rx747_cur."!cursor_debug"("PASS  ", "term:sym<identifier>", " at pos=", rx747_pos)
+    .return (rx747_cur)
+  rx747_fail:
 .annotate "line", 4
-    (rx742_rep, rx742_pos, $I10, $P10) = rx742_cur."!mark_fail"(0)
-    lt rx742_pos, -1, rx742_done
-    eq rx742_pos, -1, rx742_fail
+    (rx747_rep, rx747_pos, $I10, $P10) = rx747_cur."!mark_fail"(0)
+    lt rx747_pos, -1, rx747_done
+    eq rx747_pos, -1, rx747_fail
     jump $I10
-  rx742_done:
-    rx742_cur."!cursor_fail"()
-    rx742_cur."!cursor_debug"("FAIL  ", "term:sym<identifier>")
-    .return (rx742_cur)
+  rx747_done:
+    rx747_cur."!cursor_fail"()
+    rx747_cur."!cursor_debug"("FAIL  ", "term:sym<identifier>")
+    .return (rx747_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<identifier>"  :subid("172_1261064023.05912") :method
+.sub "!PREFIX__term:sym<identifier>"  :subid("172_1267204702.05125") :method
 .annotate "line", 4
-    $P744 = self."!PREFIX__!subrule"("identifier", "")
-    new $P745, "ResizablePMCArray"
-    push $P745, $P744
-    .return ($P745)
+    $P749 = self."!PREFIX__!subrule"("identifier", "")
+    new $P750, "ResizablePMCArray"
+    push $P750, $P749
+    .return ($P750)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<name>"  :subid("173_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<name>"  :subid("173_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx748_tgt
-    .local int rx748_pos
-    .local int rx748_off
-    .local int rx748_eos
-    .local int rx748_rep
-    .local pmc rx748_cur
-    (rx748_cur, rx748_pos, rx748_tgt) = self."!cursor_start"()
-    rx748_cur."!cursor_debug"("START ", "term:sym<name>")
-    rx748_cur."!cursor_caparray"("args")
-    .lex unicode:"$\x{a2}", rx748_cur
+    .local string rx753_tgt
+    .local int rx753_pos
+    .local int rx753_off
+    .local int rx753_eos
+    .local int rx753_rep
+    .local pmc rx753_cur
+    (rx753_cur, rx753_pos, rx753_tgt) = self."!cursor_start"()
+    rx753_cur."!cursor_debug"("START ", "term:sym<name>")
+    rx753_cur."!cursor_caparray"("args")
+    .lex unicode:"$\x{a2}", rx753_cur
     .local pmc match
     .lex "$/", match
-    length rx748_eos, rx748_tgt
-    set rx748_off, 0
-    lt rx748_pos, 2, rx748_start
-    sub rx748_off, rx748_pos, 1
-    substr rx748_tgt, rx748_tgt, rx748_off
-  rx748_start:
+    length rx753_eos, rx753_tgt
+    set rx753_off, 0
+    lt rx753_pos, 2, rx753_start
+    sub rx753_off, rx753_pos, 1
+    substr rx753_tgt, rx753_tgt, rx753_off
+  rx753_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan752_done
-    goto rxscan752_scan
-  rxscan752_loop:
-    ($P10) = rx748_cur."from"()
+    ne $I10, -1, rxscan757_done
+    goto rxscan757_scan
+  rxscan757_loop:
+    ($P10) = rx753_cur."from"()
     inc $P10
-    set rx748_pos, $P10
-    ge rx748_pos, rx748_eos, rxscan752_done
-  rxscan752_scan:
-    set_addr $I10, rxscan752_loop
-    rx748_cur."!mark_push"(0, rx748_pos, $I10)
-  rxscan752_done:
-.annotate "line", 352
+    set rx753_pos, $P10
+    ge rx753_pos, rx753_eos, rxscan757_done
+  rxscan757_scan:
+    set_addr $I10, rxscan757_loop
+    rx753_cur."!mark_push"(0, rx753_pos, $I10)
+  rxscan757_done:
+.annotate "line", 356
   # rx subrule "name" subtype=capture negate=
-    rx748_cur."!cursor_pos"(rx748_pos)
-    $P10 = rx748_cur."name"()
-    unless $P10, rx748_fail
-    rx748_cur."!mark_push"(0, -1, 0, $P10)
+    rx753_cur."!cursor_pos"(rx753_pos)
+    $P10 = rx753_cur."name"()
+    unless $P10, rx753_fail
+    rx753_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("name")
-    rx748_pos = $P10."pos"()
-  # rx rxquantr753 ** 0..1
-    set_addr $I754, rxquantr753_done
-    rx748_cur."!mark_push"(0, rx748_pos, $I754)
-  rxquantr753_loop:
+    rx753_pos = $P10."pos"()
+  # rx rxquantr758 ** 0..1
+    set_addr $I759, rxquantr758_done
+    rx753_cur."!mark_push"(0, rx753_pos, $I759)
+  rxquantr758_loop:
   # rx subrule "args" subtype=capture negate=
-    rx748_cur."!cursor_pos"(rx748_pos)
-    $P10 = rx748_cur."args"()
-    unless $P10, rx748_fail
-    rx748_cur."!mark_push"(0, -1, 0, $P10)
+    rx753_cur."!cursor_pos"(rx753_pos)
+    $P10 = rx753_cur."args"()
+    unless $P10, rx753_fail
+    rx753_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("args")
-    rx748_pos = $P10."pos"()
-    (rx748_rep) = rx748_cur."!mark_commit"($I754)
-  rxquantr753_done:
-.annotate "line", 351
+    rx753_pos = $P10."pos"()
+    (rx753_rep) = rx753_cur."!mark_commit"($I759)
+  rxquantr758_done:
+.annotate "line", 355
   # rx pass
-    rx748_cur."!cursor_pass"(rx748_pos, "term:sym<name>")
-    rx748_cur."!cursor_debug"("PASS  ", "term:sym<name>", " at pos=", rx748_pos)
-    .return (rx748_cur)
-  rx748_fail:
+    rx753_cur."!cursor_pass"(rx753_pos, "term:sym<name>")
+    rx753_cur."!cursor_debug"("PASS  ", "term:sym<name>", " at pos=", rx753_pos)
+    .return (rx753_cur)
+  rx753_fail:
 .annotate "line", 4
-    (rx748_rep, rx748_pos, $I10, $P10) = rx748_cur."!mark_fail"(0)
-    lt rx748_pos, -1, rx748_done
-    eq rx748_pos, -1, rx748_fail
+    (rx753_rep, rx753_pos, $I10, $P10) = rx753_cur."!mark_fail"(0)
+    lt rx753_pos, -1, rx753_done
+    eq rx753_pos, -1, rx753_fail
     jump $I10
-  rx748_done:
-    rx748_cur."!cursor_fail"()
-    rx748_cur."!cursor_debug"("FAIL  ", "term:sym<name>")
-    .return (rx748_cur)
+  rx753_done:
+    rx753_cur."!cursor_fail"()
+    rx753_cur."!cursor_debug"("FAIL  ", "term:sym<name>")
+    .return (rx753_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<name>"  :subid("174_1261064023.05912") :method
+.sub "!PREFIX__term:sym<name>"  :subid("174_1267204702.05125") :method
 .annotate "line", 4
-    $P750 = self."!PREFIX__!subrule"("name", "")
-    new $P751, "ResizablePMCArray"
-    push $P751, $P750
-    .return ($P751)
+    $P755 = self."!PREFIX__!subrule"("name", "")
+    new $P756, "ResizablePMCArray"
+    push $P756, $P755
+    .return ($P756)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<pir::op>"  :subid("175_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<pir::op>"  :subid("175_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx756_tgt
-    .local int rx756_pos
-    .local int rx756_off
-    .local int rx756_eos
-    .local int rx756_rep
-    .local pmc rx756_cur
-    (rx756_cur, rx756_pos, rx756_tgt) = self."!cursor_start"()
-    rx756_cur."!cursor_debug"("START ", "term:sym<pir::op>")
-    rx756_cur."!cursor_caparray"("args")
-    .lex unicode:"$\x{a2}", rx756_cur
+    .local string rx761_tgt
+    .local int rx761_pos
+    .local int rx761_off
+    .local int rx761_eos
+    .local int rx761_rep
+    .local pmc rx761_cur
+    (rx761_cur, rx761_pos, rx761_tgt) = self."!cursor_start"()
+    rx761_cur."!cursor_debug"("START ", "term:sym<pir::op>")
+    rx761_cur."!cursor_caparray"("args")
+    .lex unicode:"$\x{a2}", rx761_cur
     .local pmc match
     .lex "$/", match
-    length rx756_eos, rx756_tgt
-    set rx756_off, 0
-    lt rx756_pos, 2, rx756_start
-    sub rx756_off, rx756_pos, 1
-    substr rx756_tgt, rx756_tgt, rx756_off
-  rx756_start:
+    length rx761_eos, rx761_tgt
+    set rx761_off, 0
+    lt rx761_pos, 2, rx761_start
+    sub rx761_off, rx761_pos, 1
+    substr rx761_tgt, rx761_tgt, rx761_off
+  rx761_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan759_done
-    goto rxscan759_scan
-  rxscan759_loop:
-    ($P10) = rx756_cur."from"()
+    ne $I10, -1, rxscan764_done
+    goto rxscan764_scan
+  rxscan764_loop:
+    ($P10) = rx761_cur."from"()
     inc $P10
-    set rx756_pos, $P10
-    ge rx756_pos, rx756_eos, rxscan759_done
-  rxscan759_scan:
-    set_addr $I10, rxscan759_loop
-    rx756_cur."!mark_push"(0, rx756_pos, $I10)
-  rxscan759_done:
-.annotate "line", 356
+    set rx761_pos, $P10
+    ge rx761_pos, rx761_eos, rxscan764_done
+  rxscan764_scan:
+    set_addr $I10, rxscan764_loop
+    rx761_cur."!mark_push"(0, rx761_pos, $I10)
+  rxscan764_done:
+.annotate "line", 360
   # rx literal  "pir::"
-    add $I11, rx756_pos, 5
-    gt $I11, rx756_eos, rx756_fail
-    sub $I11, rx756_pos, rx756_off
-    substr $S10, rx756_tgt, $I11, 5
-    ne $S10, "pir::", rx756_fail
-    add rx756_pos, 5
+    add $I11, rx761_pos, 5
+    gt $I11, rx761_eos, rx761_fail
+    sub $I11, rx761_pos, rx761_off
+    substr $S10, rx761_tgt, $I11, 5
+    ne $S10, "pir::", rx761_fail
+    add rx761_pos, 5
   # rx subcapture "op"
-    set_addr $I10, rxcap_760_fail
-    rx756_cur."!mark_push"(0, rx756_pos, $I10)
+    set_addr $I10, rxcap_765_fail
+    rx761_cur."!mark_push"(0, rx761_pos, $I10)
   # rx charclass_q w r 1..-1
-    sub $I10, rx756_pos, rx756_off
-    find_not_cclass $I11, 8192, rx756_tgt, $I10, rx756_eos
+    sub $I10, rx761_pos, rx761_off
+    find_not_cclass $I11, 8192, rx761_tgt, $I10, rx761_eos
     add $I12, $I10, 1
-    lt $I11, $I12, rx756_fail
-    add rx756_pos, rx756_off, $I11
-    set_addr $I10, rxcap_760_fail
-    ($I12, $I11) = rx756_cur."!mark_peek"($I10)
-    rx756_cur."!cursor_pos"($I11)
-    ($P10) = rx756_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx756_pos, "")
-    rx756_cur."!mark_push"(0, -1, 0, $P10)
+    lt $I11, $I12, rx761_fail
+    add rx761_pos, rx761_off, $I11
+    set_addr $I10, rxcap_765_fail
+    ($I12, $I11) = rx761_cur."!mark_peek"($I10)
+    rx761_cur."!cursor_pos"($I11)
+    ($P10) = rx761_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx761_pos, "")
+    rx761_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("op")
-    goto rxcap_760_done
-  rxcap_760_fail:
-    goto rx756_fail
-  rxcap_760_done:
-  # rx rxquantr761 ** 0..1
-    set_addr $I762, rxquantr761_done
-    rx756_cur."!mark_push"(0, rx756_pos, $I762)
-  rxquantr761_loop:
+    goto rxcap_765_done
+  rxcap_765_fail:
+    goto rx761_fail
+  rxcap_765_done:
+  # rx rxquantr766 ** 0..1
+    set_addr $I767, rxquantr766_done
+    rx761_cur."!mark_push"(0, rx761_pos, $I767)
+  rxquantr766_loop:
   # rx subrule "args" subtype=capture negate=
-    rx756_cur."!cursor_pos"(rx756_pos)
-    $P10 = rx756_cur."args"()
-    unless $P10, rx756_fail
-    rx756_cur."!mark_push"(0, -1, 0, $P10)
+    rx761_cur."!cursor_pos"(rx761_pos)
+    $P10 = rx761_cur."args"()
+    unless $P10, rx761_fail
+    rx761_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("args")
-    rx756_pos = $P10."pos"()
-    (rx756_rep) = rx756_cur."!mark_commit"($I762)
-  rxquantr761_done:
-.annotate "line", 355
+    rx761_pos = $P10."pos"()
+    (rx761_rep) = rx761_cur."!mark_commit"($I767)
+  rxquantr766_done:
+.annotate "line", 359
   # rx pass
-    rx756_cur."!cursor_pass"(rx756_pos, "term:sym<pir::op>")
-    rx756_cur."!cursor_debug"("PASS  ", "term:sym<pir::op>", " at pos=", rx756_pos)
-    .return (rx756_cur)
-  rx756_fail:
+    rx761_cur."!cursor_pass"(rx761_pos, "term:sym<pir::op>")
+    rx761_cur."!cursor_debug"("PASS  ", "term:sym<pir::op>", " at pos=", rx761_pos)
+    .return (rx761_cur)
+  rx761_fail:
 .annotate "line", 4
-    (rx756_rep, rx756_pos, $I10, $P10) = rx756_cur."!mark_fail"(0)
-    lt rx756_pos, -1, rx756_done
-    eq rx756_pos, -1, rx756_fail
+    (rx761_rep, rx761_pos, $I10, $P10) = rx761_cur."!mark_fail"(0)
+    lt rx761_pos, -1, rx761_done
+    eq rx761_pos, -1, rx761_fail
     jump $I10
-  rx756_done:
-    rx756_cur."!cursor_fail"()
-    rx756_cur."!cursor_debug"("FAIL  ", "term:sym<pir::op>")
-    .return (rx756_cur)
+  rx761_done:
+    rx761_cur."!cursor_fail"()
+    rx761_cur."!cursor_debug"("FAIL  ", "term:sym<pir::op>")
+    .return (rx761_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<pir::op>"  :subid("176_1261064023.05912") :method
+.sub "!PREFIX__term:sym<pir::op>"  :subid("176_1267204702.05125") :method
 .annotate "line", 4
-    new $P758, "ResizablePMCArray"
-    push $P758, "pir::"
-    .return ($P758)
+    new $P763, "ResizablePMCArray"
+    push $P763, "pir::"
+    .return ($P763)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "args"  :subid("177_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "args"  :subid("177_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx764_tgt
-    .local int rx764_pos
-    .local int rx764_off
-    .local int rx764_eos
-    .local int rx764_rep
-    .local pmc rx764_cur
-    (rx764_cur, rx764_pos, rx764_tgt) = self."!cursor_start"()
-    rx764_cur."!cursor_debug"("START ", "args")
-    .lex unicode:"$\x{a2}", rx764_cur
+    .local string rx769_tgt
+    .local int rx769_pos
+    .local int rx769_off
+    .local int rx769_eos
+    .local int rx769_rep
+    .local pmc rx769_cur
+    (rx769_cur, rx769_pos, rx769_tgt) = self."!cursor_start"()
+    rx769_cur."!cursor_debug"("START ", "args")
+    .lex unicode:"$\x{a2}", rx769_cur
     .local pmc match
     .lex "$/", match
-    length rx764_eos, rx764_tgt
-    set rx764_off, 0
-    lt rx764_pos, 2, rx764_start
-    sub rx764_off, rx764_pos, 1
-    substr rx764_tgt, rx764_tgt, rx764_off
-  rx764_start:
+    length rx769_eos, rx769_tgt
+    set rx769_off, 0
+    lt rx769_pos, 2, rx769_start
+    sub rx769_off, rx769_pos, 1
+    substr rx769_tgt, rx769_tgt, rx769_off
+  rx769_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan768_done
-    goto rxscan768_scan
-  rxscan768_loop:
-    ($P10) = rx764_cur."from"()
+    ne $I10, -1, rxscan773_done
+    goto rxscan773_scan
+  rxscan773_loop:
+    ($P10) = rx769_cur."from"()
     inc $P10
-    set rx764_pos, $P10
-    ge rx764_pos, rx764_eos, rxscan768_done
-  rxscan768_scan:
-    set_addr $I10, rxscan768_loop
-    rx764_cur."!mark_push"(0, rx764_pos, $I10)
-  rxscan768_done:
-.annotate "line", 360
+    set rx769_pos, $P10
+    ge rx769_pos, rx769_eos, rxscan773_done
+  rxscan773_scan:
+    set_addr $I10, rxscan773_loop
+    rx769_cur."!mark_push"(0, rx769_pos, $I10)
+  rxscan773_done:
+.annotate "line", 364
   # rx literal  "("
-    add $I11, rx764_pos, 1
-    gt $I11, rx764_eos, rx764_fail
-    sub $I11, rx764_pos, rx764_off
-    substr $S10, rx764_tgt, $I11, 1
-    ne $S10, "(", rx764_fail
-    add rx764_pos, 1
+    add $I11, rx769_pos, 1
+    gt $I11, rx769_eos, rx769_fail
+    sub $I11, rx769_pos, rx769_off
+    substr $S10, rx769_tgt, $I11, 1
+    ne $S10, "(", rx769_fail
+    add rx769_pos, 1
   # rx subrule "arglist" subtype=capture negate=
-    rx764_cur."!cursor_pos"(rx764_pos)
-    $P10 = rx764_cur."arglist"()
-    unless $P10, rx764_fail
-    rx764_cur."!mark_push"(0, -1, 0, $P10)
+    rx769_cur."!cursor_pos"(rx769_pos)
+    $P10 = rx769_cur."arglist"()
+    unless $P10, rx769_fail
+    rx769_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("arglist")
-    rx764_pos = $P10."pos"()
+    rx769_pos = $P10."pos"()
   # rx literal  ")"
-    add $I11, rx764_pos, 1
-    gt $I11, rx764_eos, rx764_fail
-    sub $I11, rx764_pos, rx764_off
-    substr $S10, rx764_tgt, $I11, 1
-    ne $S10, ")", rx764_fail
-    add rx764_pos, 1
+    add $I11, rx769_pos, 1
+    gt $I11, rx769_eos, rx769_fail
+    sub $I11, rx769_pos, rx769_off
+    substr $S10, rx769_tgt, $I11, 1
+    ne $S10, ")", rx769_fail
+    add rx769_pos, 1
   # rx pass
-    rx764_cur."!cursor_pass"(rx764_pos, "args")
-    rx764_cur."!cursor_debug"("PASS  ", "args", " at pos=", rx764_pos)
-    .return (rx764_cur)
-  rx764_fail:
+    rx769_cur."!cursor_pass"(rx769_pos, "args")
+    rx769_cur."!cursor_debug"("PASS  ", "args", " at pos=", rx769_pos)
+    .return (rx769_cur)
+  rx769_fail:
 .annotate "line", 4
-    (rx764_rep, rx764_pos, $I10, $P10) = rx764_cur."!mark_fail"(0)
-    lt rx764_pos, -1, rx764_done
-    eq rx764_pos, -1, rx764_fail
+    (rx769_rep, rx769_pos, $I10, $P10) = rx769_cur."!mark_fail"(0)
+    lt rx769_pos, -1, rx769_done
+    eq rx769_pos, -1, rx769_fail
     jump $I10
-  rx764_done:
-    rx764_cur."!cursor_fail"()
-    rx764_cur."!cursor_debug"("FAIL  ", "args")
-    .return (rx764_cur)
+  rx769_done:
+    rx769_cur."!cursor_fail"()
+    rx769_cur."!cursor_debug"("FAIL  ", "args")
+    .return (rx769_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__args"  :subid("178_1261064023.05912") :method
+.sub "!PREFIX__args"  :subid("178_1267204702.05125") :method
 .annotate "line", 4
-    $P766 = self."!PREFIX__!subrule"("arglist", "(")
-    new $P767, "ResizablePMCArray"
-    push $P767, $P766
-    .return ($P767)
+    $P771 = self."!PREFIX__!subrule"("arglist", "(")
+    new $P772, "ResizablePMCArray"
+    push $P772, $P771
+    .return ($P772)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "arglist"  :subid("179_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "arglist"  :subid("179_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx770_tgt
-    .local int rx770_pos
-    .local int rx770_off
-    .local int rx770_eos
-    .local int rx770_rep
-    .local pmc rx770_cur
-    (rx770_cur, rx770_pos, rx770_tgt) = self."!cursor_start"()
-    rx770_cur."!cursor_debug"("START ", "arglist")
-    .lex unicode:"$\x{a2}", rx770_cur
-    .local pmc match
-    .lex "$/", match
-    length rx770_eos, rx770_tgt
-    set rx770_off, 0
-    lt rx770_pos, 2, rx770_start
-    sub rx770_off, rx770_pos, 1
-    substr rx770_tgt, rx770_tgt, rx770_off
-  rx770_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan774_done
-    goto rxscan774_scan
-  rxscan774_loop:
-    ($P10) = rx770_cur."from"()
-    inc $P10
-    set rx770_pos, $P10
-    ge rx770_pos, rx770_eos, rxscan774_done
-  rxscan774_scan:
-    set_addr $I10, rxscan774_loop
-    rx770_cur."!mark_push"(0, rx770_pos, $I10)
-  rxscan774_done:
-.annotate "line", 364
+    .local string rx775_tgt
+    .local int rx775_pos
+    .local int rx775_off
+    .local int rx775_eos
+    .local int rx775_rep
+    .local pmc rx775_cur
+    (rx775_cur, rx775_pos, rx775_tgt) = self."!cursor_start"()
+    rx775_cur."!cursor_debug"("START ", "arglist")
+    .lex unicode:"$\x{a2}", rx775_cur
+    .local pmc match
+    .lex "$/", match
+    length rx775_eos, rx775_tgt
+    set rx775_off, 0
+    lt rx775_pos, 2, rx775_start
+    sub rx775_off, rx775_pos, 1
+    substr rx775_tgt, rx775_tgt, rx775_off
+  rx775_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan779_done
+    goto rxscan779_scan
+  rxscan779_loop:
+    ($P10) = rx775_cur."from"()
+    inc $P10
+    set rx775_pos, $P10
+    ge rx775_pos, rx775_eos, rxscan779_done
+  rxscan779_scan:
+    set_addr $I10, rxscan779_loop
+    rx775_cur."!mark_push"(0, rx775_pos, $I10)
+  rxscan779_done:
+.annotate "line", 368
   # rx subrule "ws" subtype=method negate=
-    rx770_cur."!cursor_pos"(rx770_pos)
-    $P10 = rx770_cur."ws"()
-    unless $P10, rx770_fail
-    rx770_pos = $P10."pos"()
-  alt775_0:
-.annotate "line", 365
-    set_addr $I10, alt775_1
-    rx770_cur."!mark_push"(0, rx770_pos, $I10)
-.annotate "line", 366
+    rx775_cur."!cursor_pos"(rx775_pos)
+    $P10 = rx775_cur."ws"()
+    unless $P10, rx775_fail
+    rx775_pos = $P10."pos"()
+  alt780_0:
+.annotate "line", 369
+    set_addr $I10, alt780_1
+    rx775_cur."!mark_push"(0, rx775_pos, $I10)
+.annotate "line", 370
   # rx subrule "EXPR" subtype=capture negate=
-    rx770_cur."!cursor_pos"(rx770_pos)
-    $P10 = rx770_cur."EXPR"("f=")
-    unless $P10, rx770_fail
-    rx770_cur."!mark_push"(0, -1, 0, $P10)
+    rx775_cur."!cursor_pos"(rx775_pos)
+    $P10 = rx775_cur."EXPR"("f=")
+    unless $P10, rx775_fail
+    rx775_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("EXPR")
-    rx770_pos = $P10."pos"()
-    goto alt775_end
-  alt775_1:
-  alt775_end:
-.annotate "line", 363
+    rx775_pos = $P10."pos"()
+    goto alt780_end
+  alt780_1:
+  alt780_end:
+.annotate "line", 367
   # rx pass
-    rx770_cur."!cursor_pass"(rx770_pos, "arglist")
-    rx770_cur."!cursor_debug"("PASS  ", "arglist", " at pos=", rx770_pos)
-    .return (rx770_cur)
-  rx770_fail:
+    rx775_cur."!cursor_pass"(rx775_pos, "arglist")
+    rx775_cur."!cursor_debug"("PASS  ", "arglist", " at pos=", rx775_pos)
+    .return (rx775_cur)
+  rx775_fail:
 .annotate "line", 4
-    (rx770_rep, rx770_pos, $I10, $P10) = rx770_cur."!mark_fail"(0)
-    lt rx770_pos, -1, rx770_done
-    eq rx770_pos, -1, rx770_fail
+    (rx775_rep, rx775_pos, $I10, $P10) = rx775_cur."!mark_fail"(0)
+    lt rx775_pos, -1, rx775_done
+    eq rx775_pos, -1, rx775_fail
     jump $I10
-  rx770_done:
-    rx770_cur."!cursor_fail"()
-    rx770_cur."!cursor_debug"("FAIL  ", "arglist")
-    .return (rx770_cur)
+  rx775_done:
+    rx775_cur."!cursor_fail"()
+    rx775_cur."!cursor_debug"("FAIL  ", "arglist")
+    .return (rx775_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("180_1261064023.05912") :method
+.sub "!PREFIX__arglist"  :subid("180_1267204702.05125") :method
 .annotate "line", 4
-    $P772 = self."!PREFIX__!subrule"("", "")
-    new $P773, "ResizablePMCArray"
-    push $P773, $P772
-    .return ($P773)
+    $P777 = self."!PREFIX__!subrule"("", "")
+    new $P778, "ResizablePMCArray"
+    push $P778, $P777
+    .return ($P778)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<value>"  :subid("181_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<value>"  :subid("181_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx777_tgt
-    .local int rx777_pos
-    .local int rx777_off
-    .local int rx777_eos
-    .local int rx777_rep
-    .local pmc rx777_cur
-    (rx777_cur, rx777_pos, rx777_tgt) = self."!cursor_start"()
-    rx777_cur."!cursor_debug"("START ", "term:sym<value>")
-    .lex unicode:"$\x{a2}", rx777_cur
+    .local string rx782_tgt
+    .local int rx782_pos
+    .local int rx782_off
+    .local int rx782_eos
+    .local int rx782_rep
+    .local pmc rx782_cur
+    (rx782_cur, rx782_pos, rx782_tgt) = self."!cursor_start"()
+    rx782_cur."!cursor_debug"("START ", "term:sym<value>")
+    .lex unicode:"$\x{a2}", rx782_cur
     .local pmc match
     .lex "$/", match
-    length rx777_eos, rx777_tgt
-    set rx777_off, 0
-    lt rx777_pos, 2, rx777_start
-    sub rx777_off, rx777_pos, 1
-    substr rx777_tgt, rx777_tgt, rx777_off
-  rx777_start:
+    length rx782_eos, rx782_tgt
+    set rx782_off, 0
+    lt rx782_pos, 2, rx782_start
+    sub rx782_off, rx782_pos, 1
+    substr rx782_tgt, rx782_tgt, rx782_off
+  rx782_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan781_done
-    goto rxscan781_scan
-  rxscan781_loop:
-    ($P10) = rx777_cur."from"()
+    ne $I10, -1, rxscan786_done
+    goto rxscan786_scan
+  rxscan786_loop:
+    ($P10) = rx782_cur."from"()
     inc $P10
-    set rx777_pos, $P10
-    ge rx777_pos, rx777_eos, rxscan781_done
-  rxscan781_scan:
-    set_addr $I10, rxscan781_loop
-    rx777_cur."!mark_push"(0, rx777_pos, $I10)
-  rxscan781_done:
-.annotate "line", 372
+    set rx782_pos, $P10
+    ge rx782_pos, rx782_eos, rxscan786_done
+  rxscan786_scan:
+    set_addr $I10, rxscan786_loop
+    rx782_cur."!mark_push"(0, rx782_pos, $I10)
+  rxscan786_done:
+.annotate "line", 376
   # rx subrule "value" subtype=capture negate=
-    rx777_cur."!cursor_pos"(rx777_pos)
-    $P10 = rx777_cur."value"()
-    unless $P10, rx777_fail
-    rx777_cur."!mark_push"(0, -1, 0, $P10)
+    rx782_cur."!cursor_pos"(rx782_pos)
+    $P10 = rx782_cur."value"()
+    unless $P10, rx782_fail
+    rx782_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("value")
-    rx777_pos = $P10."pos"()
+    rx782_pos = $P10."pos"()
   # rx pass
-    rx777_cur."!cursor_pass"(rx777_pos, "term:sym<value>")
-    rx777_cur."!cursor_debug"("PASS  ", "term:sym<value>", " at pos=", rx777_pos)
-    .return (rx777_cur)
-  rx777_fail:
+    rx782_cur."!cursor_pass"(rx782_pos, "term:sym<value>")
+    rx782_cur."!cursor_debug"("PASS  ", "term:sym<value>", " at pos=", rx782_pos)
+    .return (rx782_cur)
+  rx782_fail:
 .annotate "line", 4
-    (rx777_rep, rx777_pos, $I10, $P10) = rx777_cur."!mark_fail"(0)
-    lt rx777_pos, -1, rx777_done
-    eq rx777_pos, -1, rx777_fail
+    (rx782_rep, rx782_pos, $I10, $P10) = rx782_cur."!mark_fail"(0)
+    lt rx782_pos, -1, rx782_done
+    eq rx782_pos, -1, rx782_fail
     jump $I10
-  rx777_done:
-    rx777_cur."!cursor_fail"()
-    rx777_cur."!cursor_debug"("FAIL  ", "term:sym<value>")
-    .return (rx777_cur)
+  rx782_done:
+    rx782_cur."!cursor_fail"()
+    rx782_cur."!cursor_debug"("FAIL  ", "term:sym<value>")
+    .return (rx782_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<value>"  :subid("182_1261064023.05912") :method
+.sub "!PREFIX__term:sym<value>"  :subid("182_1267204702.05125") :method
 .annotate "line", 4
-    $P779 = self."!PREFIX__!subrule"("value", "")
-    new $P780, "ResizablePMCArray"
-    push $P780, $P779
-    .return ($P780)
+    $P784 = self."!PREFIX__!subrule"("value", "")
+    new $P785, "ResizablePMCArray"
+    push $P785, $P784
+    .return ($P785)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "value"  :subid("183_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "value"  :subid("183_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx783_tgt
-    .local int rx783_pos
-    .local int rx783_off
-    .local int rx783_eos
-    .local int rx783_rep
-    .local pmc rx783_cur
-    (rx783_cur, rx783_pos, rx783_tgt) = self."!cursor_start"()
-    rx783_cur."!cursor_debug"("START ", "value")
-    .lex unicode:"$\x{a2}", rx783_cur
-    .local pmc match
-    .lex "$/", match
-    length rx783_eos, rx783_tgt
-    set rx783_off, 0
-    lt rx783_pos, 2, rx783_start
-    sub rx783_off, rx783_pos, 1
-    substr rx783_tgt, rx783_tgt, rx783_off
-  rx783_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan788_done
-    goto rxscan788_scan
-  rxscan788_loop:
-    ($P10) = rx783_cur."from"()
-    inc $P10
-    set rx783_pos, $P10
-    ge rx783_pos, rx783_eos, rxscan788_done
-  rxscan788_scan:
-    set_addr $I10, rxscan788_loop
-    rx783_cur."!mark_push"(0, rx783_pos, $I10)
-  rxscan788_done:
-  alt789_0:
-.annotate "line", 374
-    set_addr $I10, alt789_1
-    rx783_cur."!mark_push"(0, rx783_pos, $I10)
-.annotate "line", 375
+    .local string rx788_tgt
+    .local int rx788_pos
+    .local int rx788_off
+    .local int rx788_eos
+    .local int rx788_rep
+    .local pmc rx788_cur
+    (rx788_cur, rx788_pos, rx788_tgt) = self."!cursor_start"()
+    rx788_cur."!cursor_debug"("START ", "value")
+    .lex unicode:"$\x{a2}", rx788_cur
+    .local pmc match
+    .lex "$/", match
+    length rx788_eos, rx788_tgt
+    set rx788_off, 0
+    lt rx788_pos, 2, rx788_start
+    sub rx788_off, rx788_pos, 1
+    substr rx788_tgt, rx788_tgt, rx788_off
+  rx788_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan793_done
+    goto rxscan793_scan
+  rxscan793_loop:
+    ($P10) = rx788_cur."from"()
+    inc $P10
+    set rx788_pos, $P10
+    ge rx788_pos, rx788_eos, rxscan793_done
+  rxscan793_scan:
+    set_addr $I10, rxscan793_loop
+    rx788_cur."!mark_push"(0, rx788_pos, $I10)
+  rxscan793_done:
+  alt794_0:
+.annotate "line", 378
+    set_addr $I10, alt794_1
+    rx788_cur."!mark_push"(0, rx788_pos, $I10)
+.annotate "line", 379
   # rx subrule "quote" subtype=capture negate=
-    rx783_cur."!cursor_pos"(rx783_pos)
-    $P10 = rx783_cur."quote"()
-    unless $P10, rx783_fail
-    rx783_cur."!mark_push"(0, -1, 0, $P10)
+    rx788_cur."!cursor_pos"(rx788_pos)
+    $P10 = rx788_cur."quote"()
+    unless $P10, rx788_fail
+    rx788_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("quote")
-    rx783_pos = $P10."pos"()
-    goto alt789_end
-  alt789_1:
-.annotate "line", 376
+    rx788_pos = $P10."pos"()
+    goto alt794_end
+  alt794_1:
+.annotate "line", 380
   # rx subrule "number" subtype=capture negate=
-    rx783_cur."!cursor_pos"(rx783_pos)
-    $P10 = rx783_cur."number"()
-    unless $P10, rx783_fail
-    rx783_cur."!mark_push"(0, -1, 0, $P10)
+    rx788_cur."!cursor_pos"(rx788_pos)
+    $P10 = rx788_cur."number"()
+    unless $P10, rx788_fail
+    rx788_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("number")
-    rx783_pos = $P10."pos"()
-  alt789_end:
-.annotate "line", 374
+    rx788_pos = $P10."pos"()
+  alt794_end:
+.annotate "line", 378
   # rx pass
-    rx783_cur."!cursor_pass"(rx783_pos, "value")
-    rx783_cur."!cursor_debug"("PASS  ", "value", " at pos=", rx783_pos)
-    .return (rx783_cur)
-  rx783_fail:
+    rx788_cur."!cursor_pass"(rx788_pos, "value")
+    rx788_cur."!cursor_debug"("PASS  ", "value", " at pos=", rx788_pos)
+    .return (rx788_cur)
+  rx788_fail:
 .annotate "line", 4
-    (rx783_rep, rx783_pos, $I10, $P10) = rx783_cur."!mark_fail"(0)
-    lt rx783_pos, -1, rx783_done
-    eq rx783_pos, -1, rx783_fail
+    (rx788_rep, rx788_pos, $I10, $P10) = rx788_cur."!mark_fail"(0)
+    lt rx788_pos, -1, rx788_done
+    eq rx788_pos, -1, rx788_fail
     jump $I10
-  rx783_done:
-    rx783_cur."!cursor_fail"()
-    rx783_cur."!cursor_debug"("FAIL  ", "value")
-    .return (rx783_cur)
+  rx788_done:
+    rx788_cur."!cursor_fail"()
+    rx788_cur."!cursor_debug"("FAIL  ", "value")
+    .return (rx788_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__value"  :subid("184_1261064023.05912") :method
+.sub "!PREFIX__value"  :subid("184_1267204702.05125") :method
 .annotate "line", 4
-    $P785 = self."!PREFIX__!subrule"("number", "")
-    $P786 = self."!PREFIX__!subrule"("quote", "")
-    new $P787, "ResizablePMCArray"
-    push $P787, $P785
-    push $P787, $P786
-    .return ($P787)
+    $P790 = self."!PREFIX__!subrule"("number", "")
+    $P791 = self."!PREFIX__!subrule"("quote", "")
+    new $P792, "ResizablePMCArray"
+    push $P792, $P790
+    push $P792, $P791
+    .return ($P792)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "number"  :subid("185_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "number"  :subid("185_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx791_tgt
-    .local int rx791_pos
-    .local int rx791_off
-    .local int rx791_eos
-    .local int rx791_rep
-    .local pmc rx791_cur
-    (rx791_cur, rx791_pos, rx791_tgt) = self."!cursor_start"()
-    rx791_cur."!cursor_debug"("START ", "number")
-    .lex unicode:"$\x{a2}", rx791_cur
-    .local pmc match
-    .lex "$/", match
-    length rx791_eos, rx791_tgt
-    set rx791_off, 0
-    lt rx791_pos, 2, rx791_start
-    sub rx791_off, rx791_pos, 1
-    substr rx791_tgt, rx791_tgt, rx791_off
-  rx791_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan794_done
-    goto rxscan794_scan
-  rxscan794_loop:
-    ($P10) = rx791_cur."from"()
-    inc $P10
-    set rx791_pos, $P10
-    ge rx791_pos, rx791_eos, rxscan794_done
-  rxscan794_scan:
-    set_addr $I10, rxscan794_loop
-    rx791_cur."!mark_push"(0, rx791_pos, $I10)
-  rxscan794_done:
-.annotate "line", 380
+    .local string rx796_tgt
+    .local int rx796_pos
+    .local int rx796_off
+    .local int rx796_eos
+    .local int rx796_rep
+    .local pmc rx796_cur
+    (rx796_cur, rx796_pos, rx796_tgt) = self."!cursor_start"()
+    rx796_cur."!cursor_debug"("START ", "number")
+    .lex unicode:"$\x{a2}", rx796_cur
+    .local pmc match
+    .lex "$/", match
+    length rx796_eos, rx796_tgt
+    set rx796_off, 0
+    lt rx796_pos, 2, rx796_start
+    sub rx796_off, rx796_pos, 1
+    substr rx796_tgt, rx796_tgt, rx796_off
+  rx796_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan799_done
+    goto rxscan799_scan
+  rxscan799_loop:
+    ($P10) = rx796_cur."from"()
+    inc $P10
+    set rx796_pos, $P10
+    ge rx796_pos, rx796_eos, rxscan799_done
+  rxscan799_scan:
+    set_addr $I10, rxscan799_loop
+    rx796_cur."!mark_push"(0, rx796_pos, $I10)
+  rxscan799_done:
+.annotate "line", 384
   # rx subcapture "sign"
-    set_addr $I10, rxcap_797_fail
-    rx791_cur."!mark_push"(0, rx791_pos, $I10)
-  # rx rxquantr795 ** 0..1
-    set_addr $I796, rxquantr795_done
-    rx791_cur."!mark_push"(0, rx791_pos, $I796)
-  rxquantr795_loop:
+    set_addr $I10, rxcap_802_fail
+    rx796_cur."!mark_push"(0, rx796_pos, $I10)
+  # rx rxquantr800 ** 0..1
+    set_addr $I801, rxquantr800_done
+    rx796_cur."!mark_push"(0, rx796_pos, $I801)
+  rxquantr800_loop:
   # rx enumcharlist negate=0 
-    ge rx791_pos, rx791_eos, rx791_fail
-    sub $I10, rx791_pos, rx791_off
-    substr $S10, rx791_tgt, $I10, 1
+    ge rx796_pos, rx796_eos, rx796_fail
+    sub $I10, rx796_pos, rx796_off
+    substr $S10, rx796_tgt, $I10, 1
     index $I11, "+-", $S10
-    lt $I11, 0, rx791_fail
-    inc rx791_pos
-    (rx791_rep) = rx791_cur."!mark_commit"($I796)
-  rxquantr795_done:
-    set_addr $I10, rxcap_797_fail
-    ($I12, $I11) = rx791_cur."!mark_peek"($I10)
-    rx791_cur."!cursor_pos"($I11)
-    ($P10) = rx791_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx791_pos, "")
-    rx791_cur."!mark_push"(0, -1, 0, $P10)
+    lt $I11, 0, rx796_fail
+    inc rx796_pos
+    (rx796_rep) = rx796_cur."!mark_commit"($I801)
+  rxquantr800_done:
+    set_addr $I10, rxcap_802_fail
+    ($I12, $I11) = rx796_cur."!mark_peek"($I10)
+    rx796_cur."!cursor_pos"($I11)
+    ($P10) = rx796_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx796_pos, "")
+    rx796_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sign")
-    goto rxcap_797_done
-  rxcap_797_fail:
-    goto rx791_fail
-  rxcap_797_done:
-  alt798_0:
-.annotate "line", 381
-    set_addr $I10, alt798_1
-    rx791_cur."!mark_push"(0, rx791_pos, $I10)
+    goto rxcap_802_done
+  rxcap_802_fail:
+    goto rx796_fail
+  rxcap_802_done:
+  alt803_0:
+.annotate "line", 385
+    set_addr $I10, alt803_1
+    rx796_cur."!mark_push"(0, rx796_pos, $I10)
   # rx subrule "dec_number" subtype=capture negate=
-    rx791_cur."!cursor_pos"(rx791_pos)
-    $P10 = rx791_cur."dec_number"()
-    unless $P10, rx791_fail
-    rx791_cur."!mark_push"(0, -1, 0, $P10)
+    rx796_cur."!cursor_pos"(rx796_pos)
+    $P10 = rx796_cur."dec_number"()
+    unless $P10, rx796_fail
+    rx796_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("dec_number")
-    rx791_pos = $P10."pos"()
-    goto alt798_end
-  alt798_1:
+    rx796_pos = $P10."pos"()
+    goto alt803_end
+  alt803_1:
   # rx subrule "integer" subtype=capture negate=
-    rx791_cur."!cursor_pos"(rx791_pos)
-    $P10 = rx791_cur."integer"()
-    unless $P10, rx791_fail
-    rx791_cur."!mark_push"(0, -1, 0, $P10)
+    rx796_cur."!cursor_pos"(rx796_pos)
+    $P10 = rx796_cur."integer"()
+    unless $P10, rx796_fail
+    rx796_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("integer")
-    rx791_pos = $P10."pos"()
-  alt798_end:
-.annotate "line", 379
+    rx796_pos = $P10."pos"()
+  alt803_end:
+.annotate "line", 383
   # rx pass
-    rx791_cur."!cursor_pass"(rx791_pos, "number")
-    rx791_cur."!cursor_debug"("PASS  ", "number", " at pos=", rx791_pos)
-    .return (rx791_cur)
-  rx791_fail:
+    rx796_cur."!cursor_pass"(rx796_pos, "number")
+    rx796_cur."!cursor_debug"("PASS  ", "number", " at pos=", rx796_pos)
+    .return (rx796_cur)
+  rx796_fail:
 .annotate "line", 4
-    (rx791_rep, rx791_pos, $I10, $P10) = rx791_cur."!mark_fail"(0)
-    lt rx791_pos, -1, rx791_done
-    eq rx791_pos, -1, rx791_fail
+    (rx796_rep, rx796_pos, $I10, $P10) = rx796_cur."!mark_fail"(0)
+    lt rx796_pos, -1, rx796_done
+    eq rx796_pos, -1, rx796_fail
     jump $I10
-  rx791_done:
-    rx791_cur."!cursor_fail"()
-    rx791_cur."!cursor_debug"("FAIL  ", "number")
-    .return (rx791_cur)
+  rx796_done:
+    rx796_cur."!cursor_fail"()
+    rx796_cur."!cursor_debug"("FAIL  ", "number")
+    .return (rx796_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__number"  :subid("186_1261064023.05912") :method
+.sub "!PREFIX__number"  :subid("186_1267204702.05125") :method
 .annotate "line", 4
-    new $P793, "ResizablePMCArray"
-    push $P793, ""
-    .return ($P793)
-.end
-
-
-.namespace ["NQP";"Grammar"]
-.sub "quote"  :subid("187_1261064023.05912") :method
-.annotate "line", 384
-    $P800 = self."!protoregex"("quote")
-    .return ($P800)
+    new $P798, "ResizablePMCArray"
+    push $P798, ""
+    .return ($P798)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote"  :subid("188_1261064023.05912") :method
-.annotate "line", 384
-    $P802 = self."!PREFIX__!protoregex"("quote")
-    .return ($P802)
-.end
-
-
-.namespace ["NQP";"Grammar"]
-.sub "quote:sym<apos>"  :subid("189_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 4
-    .local string rx804_tgt
-    .local int rx804_pos
-    .local int rx804_off
-    .local int rx804_eos
-    .local int rx804_rep
-    .local pmc rx804_cur
-    (rx804_cur, rx804_pos, rx804_tgt) = self."!cursor_start"()
-    rx804_cur."!cursor_debug"("START ", "quote:sym<apos>")
-    .lex unicode:"$\x{a2}", rx804_cur
-    .local pmc match
-    .lex "$/", match
-    length rx804_eos, rx804_tgt
-    set rx804_off, 0
-    lt rx804_pos, 2, rx804_start
-    sub rx804_off, rx804_pos, 1
-    substr rx804_tgt, rx804_tgt, rx804_off
-  rx804_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan807_done
-    goto rxscan807_scan
-  rxscan807_loop:
-    ($P10) = rx804_cur."from"()
-    inc $P10
-    set rx804_pos, $P10
-    ge rx804_pos, rx804_eos, rxscan807_done
-  rxscan807_scan:
-    set_addr $I10, rxscan807_loop
-    rx804_cur."!mark_push"(0, rx804_pos, $I10)
-  rxscan807_done:
-.annotate "line", 385
-  # rx enumcharlist negate=0 zerowidth
-    ge rx804_pos, rx804_eos, rx804_fail
-    sub $I10, rx804_pos, rx804_off
-    substr $S10, rx804_tgt, $I10, 1
-    index $I11, "'", $S10
-    lt $I11, 0, rx804_fail
-  # rx subrule "quote_EXPR" subtype=capture negate=
-    rx804_cur."!cursor_pos"(rx804_pos)
-    $P10 = rx804_cur."quote_EXPR"(":q")
-    unless $P10, rx804_fail
-    rx804_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("quote_EXPR")
-    rx804_pos = $P10."pos"()
-  # rx pass
-    rx804_cur."!cursor_pass"(rx804_pos, "quote:sym<apos>")
-    rx804_cur."!cursor_debug"("PASS  ", "quote:sym<apos>", " at pos=", rx804_pos)
-    .return (rx804_cur)
-  rx804_fail:
-.annotate "line", 4
-    (rx804_rep, rx804_pos, $I10, $P10) = rx804_cur."!mark_fail"(0)
-    lt rx804_pos, -1, rx804_done
-    eq rx804_pos, -1, rx804_fail
-    jump $I10
-  rx804_done:
-    rx804_cur."!cursor_fail"()
-    rx804_cur."!cursor_debug"("FAIL  ", "quote:sym<apos>")
-    .return (rx804_cur)
-    .return ()
+.sub "quote"  :subid("187_1267204702.05125") :method
+.annotate "line", 388
+    $P805 = self."!protoregex"("quote")
+    .return ($P805)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<apos>"  :subid("190_1261064023.05912") :method
-.annotate "line", 4
-    new $P806, "ResizablePMCArray"
-    push $P806, "'"
-    .return ($P806)
+.sub "!PREFIX__quote"  :subid("188_1267204702.05125") :method
+.annotate "line", 388
+    $P807 = self."!PREFIX__!protoregex"("quote")
+    .return ($P807)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<dblq>"  :subid("191_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym<apos>"  :subid("189_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx809_tgt
     .local int rx809_pos
@@ -9546,7 +9516,7 @@
     .local int rx809_rep
     .local pmc rx809_cur
     (rx809_cur, rx809_pos, rx809_tgt) = self."!cursor_start"()
-    rx809_cur."!cursor_debug"("START ", "quote:sym<dblq>")
+    rx809_cur."!cursor_debug"("START ", "quote:sym<apos>")
     .lex unicode:"$\x{a2}", rx809_cur
     .local pmc match
     .lex "$/", match
@@ -9568,23 +9538,23 @@
     set_addr $I10, rxscan812_loop
     rx809_cur."!mark_push"(0, rx809_pos, $I10)
   rxscan812_done:
-.annotate "line", 386
+.annotate "line", 389
   # rx enumcharlist negate=0 zerowidth
     ge rx809_pos, rx809_eos, rx809_fail
     sub $I10, rx809_pos, rx809_off
     substr $S10, rx809_tgt, $I10, 1
-    index $I11, "\"", $S10
+    index $I11, "'", $S10
     lt $I11, 0, rx809_fail
   # rx subrule "quote_EXPR" subtype=capture negate=
     rx809_cur."!cursor_pos"(rx809_pos)
-    $P10 = rx809_cur."quote_EXPR"(":qq")
+    $P10 = rx809_cur."quote_EXPR"(":q")
     unless $P10, rx809_fail
     rx809_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("quote_EXPR")
     rx809_pos = $P10."pos"()
   # rx pass
-    rx809_cur."!cursor_pass"(rx809_pos, "quote:sym<dblq>")
-    rx809_cur."!cursor_debug"("PASS  ", "quote:sym<dblq>", " at pos=", rx809_pos)
+    rx809_cur."!cursor_pass"(rx809_pos, "quote:sym<apos>")
+    rx809_cur."!cursor_debug"("PASS  ", "quote:sym<apos>", " at pos=", rx809_pos)
     .return (rx809_cur)
   rx809_fail:
 .annotate "line", 4
@@ -9594,23 +9564,23 @@
     jump $I10
   rx809_done:
     rx809_cur."!cursor_fail"()
-    rx809_cur."!cursor_debug"("FAIL  ", "quote:sym<dblq>")
+    rx809_cur."!cursor_debug"("FAIL  ", "quote:sym<apos>")
     .return (rx809_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<dblq>"  :subid("192_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<apos>"  :subid("190_1267204702.05125") :method
 .annotate "line", 4
     new $P811, "ResizablePMCArray"
-    push $P811, "\""
+    push $P811, "'"
     .return ($P811)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<q>"  :subid("193_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym<dblq>"  :subid("191_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx814_tgt
     .local int rx814_pos
@@ -9619,7 +9589,7 @@
     .local int rx814_rep
     .local pmc rx814_cur
     (rx814_cur, rx814_pos, rx814_tgt) = self."!cursor_start"()
-    rx814_cur."!cursor_debug"("START ", "quote:sym<q>")
+    rx814_cur."!cursor_debug"("START ", "quote:sym<dblq>")
     .lex unicode:"$\x{a2}", rx814_cur
     .local pmc match
     .lex "$/", match
@@ -9630,46 +9600,34 @@
     substr rx814_tgt, rx814_tgt, rx814_off
   rx814_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan818_done
-    goto rxscan818_scan
-  rxscan818_loop:
+    ne $I10, -1, rxscan817_done
+    goto rxscan817_scan
+  rxscan817_loop:
     ($P10) = rx814_cur."from"()
     inc $P10
     set rx814_pos, $P10
-    ge rx814_pos, rx814_eos, rxscan818_done
-  rxscan818_scan:
-    set_addr $I10, rxscan818_loop
+    ge rx814_pos, rx814_eos, rxscan817_done
+  rxscan817_scan:
+    set_addr $I10, rxscan817_loop
     rx814_cur."!mark_push"(0, rx814_pos, $I10)
-  rxscan818_done:
-.annotate "line", 387
-  # rx literal  "q"
-    add $I11, rx814_pos, 1
-    gt $I11, rx814_eos, rx814_fail
-    sub $I11, rx814_pos, rx814_off
-    substr $S10, rx814_tgt, $I11, 1
-    ne $S10, "q", rx814_fail
-    add rx814_pos, 1
-  # rx enumcharlist negate=1 zerowidth
+  rxscan817_done:
+.annotate "line", 390
+  # rx enumcharlist negate=0 zerowidth
     ge rx814_pos, rx814_eos, rx814_fail
     sub $I10, rx814_pos, rx814_off
     substr $S10, rx814_tgt, $I10, 1
-    index $I11, "(", $S10
-    ge $I11, 0, rx814_fail
-  # rx subrule "ws" subtype=method negate=
-    rx814_cur."!cursor_pos"(rx814_pos)
-    $P10 = rx814_cur."ws"()
-    unless $P10, rx814_fail
-    rx814_pos = $P10."pos"()
+    index $I11, "\"", $S10
+    lt $I11, 0, rx814_fail
   # rx subrule "quote_EXPR" subtype=capture negate=
     rx814_cur."!cursor_pos"(rx814_pos)
-    $P10 = rx814_cur."quote_EXPR"(":q")
+    $P10 = rx814_cur."quote_EXPR"(":qq")
     unless $P10, rx814_fail
     rx814_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("quote_EXPR")
     rx814_pos = $P10."pos"()
   # rx pass
-    rx814_cur."!cursor_pass"(rx814_pos, "quote:sym<q>")
-    rx814_cur."!cursor_debug"("PASS  ", "quote:sym<q>", " at pos=", rx814_pos)
+    rx814_cur."!cursor_pass"(rx814_pos, "quote:sym<dblq>")
+    rx814_cur."!cursor_debug"("PASS  ", "quote:sym<dblq>", " at pos=", rx814_pos)
     .return (rx814_cur)
   rx814_fail:
 .annotate "line", 4
@@ -9679,448 +9637,456 @@
     jump $I10
   rx814_done:
     rx814_cur."!cursor_fail"()
-    rx814_cur."!cursor_debug"("FAIL  ", "quote:sym<q>")
+    rx814_cur."!cursor_debug"("FAIL  ", "quote:sym<dblq>")
     .return (rx814_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<q>"  :subid("194_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<dblq>"  :subid("192_1267204702.05125") :method
 .annotate "line", 4
-    $P816 = self."!PREFIX__!subrule"("", "q")
-    new $P817, "ResizablePMCArray"
-    push $P817, $P816
-    .return ($P817)
+    new $P816, "ResizablePMCArray"
+    push $P816, "\""
+    .return ($P816)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<qq>"  :subid("195_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 4
-    .local string rx820_tgt
-    .local int rx820_pos
-    .local int rx820_off
-    .local int rx820_eos
-    .local int rx820_rep
-    .local pmc rx820_cur
-    (rx820_cur, rx820_pos, rx820_tgt) = self."!cursor_start"()
-    rx820_cur."!cursor_debug"("START ", "quote:sym<qq>")
-    .lex unicode:"$\x{a2}", rx820_cur
-    .local pmc match
-    .lex "$/", match
-    length rx820_eos, rx820_tgt
-    set rx820_off, 0
-    lt rx820_pos, 2, rx820_start
-    sub rx820_off, rx820_pos, 1
-    substr rx820_tgt, rx820_tgt, rx820_off
-  rx820_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan824_done
-    goto rxscan824_scan
-  rxscan824_loop:
-    ($P10) = rx820_cur."from"()
-    inc $P10
-    set rx820_pos, $P10
-    ge rx820_pos, rx820_eos, rxscan824_done
-  rxscan824_scan:
-    set_addr $I10, rxscan824_loop
-    rx820_cur."!mark_push"(0, rx820_pos, $I10)
-  rxscan824_done:
-.annotate "line", 388
-  # rx literal  "qq"
-    add $I11, rx820_pos, 2
-    gt $I11, rx820_eos, rx820_fail
-    sub $I11, rx820_pos, rx820_off
-    substr $S10, rx820_tgt, $I11, 2
-    ne $S10, "qq", rx820_fail
-    add rx820_pos, 2
+.sub "quote:sym<q>"  :subid("193_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 4
+    .local string rx819_tgt
+    .local int rx819_pos
+    .local int rx819_off
+    .local int rx819_eos
+    .local int rx819_rep
+    .local pmc rx819_cur
+    (rx819_cur, rx819_pos, rx819_tgt) = self."!cursor_start"()
+    rx819_cur."!cursor_debug"("START ", "quote:sym<q>")
+    .lex unicode:"$\x{a2}", rx819_cur
+    .local pmc match
+    .lex "$/", match
+    length rx819_eos, rx819_tgt
+    set rx819_off, 0
+    lt rx819_pos, 2, rx819_start
+    sub rx819_off, rx819_pos, 1
+    substr rx819_tgt, rx819_tgt, rx819_off
+  rx819_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan823_done
+    goto rxscan823_scan
+  rxscan823_loop:
+    ($P10) = rx819_cur."from"()
+    inc $P10
+    set rx819_pos, $P10
+    ge rx819_pos, rx819_eos, rxscan823_done
+  rxscan823_scan:
+    set_addr $I10, rxscan823_loop
+    rx819_cur."!mark_push"(0, rx819_pos, $I10)
+  rxscan823_done:
+.annotate "line", 391
+  # rx literal  "q"
+    add $I11, rx819_pos, 1
+    gt $I11, rx819_eos, rx819_fail
+    sub $I11, rx819_pos, rx819_off
+    substr $S10, rx819_tgt, $I11, 1
+    ne $S10, "q", rx819_fail
+    add rx819_pos, 1
   # rx enumcharlist negate=1 zerowidth
-    ge rx820_pos, rx820_eos, rx820_fail
-    sub $I10, rx820_pos, rx820_off
-    substr $S10, rx820_tgt, $I10, 1
+    ge rx819_pos, rx819_eos, rx819_fail
+    sub $I10, rx819_pos, rx819_off
+    substr $S10, rx819_tgt, $I10, 1
     index $I11, "(", $S10
-    ge $I11, 0, rx820_fail
+    ge $I11, 0, rx819_fail
   # rx subrule "ws" subtype=method negate=
-    rx820_cur."!cursor_pos"(rx820_pos)
-    $P10 = rx820_cur."ws"()
-    unless $P10, rx820_fail
-    rx820_pos = $P10."pos"()
+    rx819_cur."!cursor_pos"(rx819_pos)
+    $P10 = rx819_cur."ws"()
+    unless $P10, rx819_fail
+    rx819_pos = $P10."pos"()
   # rx subrule "quote_EXPR" subtype=capture negate=
-    rx820_cur."!cursor_pos"(rx820_pos)
-    $P10 = rx820_cur."quote_EXPR"(":qq")
-    unless $P10, rx820_fail
-    rx820_cur."!mark_push"(0, -1, 0, $P10)
+    rx819_cur."!cursor_pos"(rx819_pos)
+    $P10 = rx819_cur."quote_EXPR"(":q")
+    unless $P10, rx819_fail
+    rx819_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("quote_EXPR")
-    rx820_pos = $P10."pos"()
+    rx819_pos = $P10."pos"()
   # rx pass
-    rx820_cur."!cursor_pass"(rx820_pos, "quote:sym<qq>")
-    rx820_cur."!cursor_debug"("PASS  ", "quote:sym<qq>", " at pos=", rx820_pos)
-    .return (rx820_cur)
-  rx820_fail:
+    rx819_cur."!cursor_pass"(rx819_pos, "quote:sym<q>")
+    rx819_cur."!cursor_debug"("PASS  ", "quote:sym<q>", " at pos=", rx819_pos)
+    .return (rx819_cur)
+  rx819_fail:
 .annotate "line", 4
-    (rx820_rep, rx820_pos, $I10, $P10) = rx820_cur."!mark_fail"(0)
-    lt rx820_pos, -1, rx820_done
-    eq rx820_pos, -1, rx820_fail
+    (rx819_rep, rx819_pos, $I10, $P10) = rx819_cur."!mark_fail"(0)
+    lt rx819_pos, -1, rx819_done
+    eq rx819_pos, -1, rx819_fail
     jump $I10
-  rx820_done:
-    rx820_cur."!cursor_fail"()
-    rx820_cur."!cursor_debug"("FAIL  ", "quote:sym<qq>")
-    .return (rx820_cur)
+  rx819_done:
+    rx819_cur."!cursor_fail"()
+    rx819_cur."!cursor_debug"("FAIL  ", "quote:sym<q>")
+    .return (rx819_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<qq>"  :subid("196_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<q>"  :subid("194_1267204702.05125") :method
 .annotate "line", 4
-    $P822 = self."!PREFIX__!subrule"("", "qq")
-    new $P823, "ResizablePMCArray"
-    push $P823, $P822
-    .return ($P823)
+    $P821 = self."!PREFIX__!subrule"("", "q")
+    new $P822, "ResizablePMCArray"
+    push $P822, $P821
+    .return ($P822)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q>"  :subid("197_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym<qq>"  :subid("195_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx826_tgt
-    .local int rx826_pos
-    .local int rx826_off
-    .local int rx826_eos
-    .local int rx826_rep
-    .local pmc rx826_cur
-    (rx826_cur, rx826_pos, rx826_tgt) = self."!cursor_start"()
-    rx826_cur."!cursor_debug"("START ", "quote:sym<Q>")
-    .lex unicode:"$\x{a2}", rx826_cur
+    .local string rx825_tgt
+    .local int rx825_pos
+    .local int rx825_off
+    .local int rx825_eos
+    .local int rx825_rep
+    .local pmc rx825_cur
+    (rx825_cur, rx825_pos, rx825_tgt) = self."!cursor_start"()
+    rx825_cur."!cursor_debug"("START ", "quote:sym<qq>")
+    .lex unicode:"$\x{a2}", rx825_cur
     .local pmc match
     .lex "$/", match
-    length rx826_eos, rx826_tgt
-    set rx826_off, 0
-    lt rx826_pos, 2, rx826_start
-    sub rx826_off, rx826_pos, 1
-    substr rx826_tgt, rx826_tgt, rx826_off
-  rx826_start:
+    length rx825_eos, rx825_tgt
+    set rx825_off, 0
+    lt rx825_pos, 2, rx825_start
+    sub rx825_off, rx825_pos, 1
+    substr rx825_tgt, rx825_tgt, rx825_off
+  rx825_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan830_done
-    goto rxscan830_scan
-  rxscan830_loop:
-    ($P10) = rx826_cur."from"()
+    ne $I10, -1, rxscan829_done
+    goto rxscan829_scan
+  rxscan829_loop:
+    ($P10) = rx825_cur."from"()
     inc $P10
-    set rx826_pos, $P10
-    ge rx826_pos, rx826_eos, rxscan830_done
-  rxscan830_scan:
-    set_addr $I10, rxscan830_loop
-    rx826_cur."!mark_push"(0, rx826_pos, $I10)
-  rxscan830_done:
-.annotate "line", 389
-  # rx literal  "Q"
-    add $I11, rx826_pos, 1
-    gt $I11, rx826_eos, rx826_fail
-    sub $I11, rx826_pos, rx826_off
-    substr $S10, rx826_tgt, $I11, 1
-    ne $S10, "Q", rx826_fail
-    add rx826_pos, 1
+    set rx825_pos, $P10
+    ge rx825_pos, rx825_eos, rxscan829_done
+  rxscan829_scan:
+    set_addr $I10, rxscan829_loop
+    rx825_cur."!mark_push"(0, rx825_pos, $I10)
+  rxscan829_done:
+.annotate "line", 392
+  # rx literal  "qq"
+    add $I11, rx825_pos, 2
+    gt $I11, rx825_eos, rx825_fail
+    sub $I11, rx825_pos, rx825_off
+    substr $S10, rx825_tgt, $I11, 2
+    ne $S10, "qq", rx825_fail
+    add rx825_pos, 2
   # rx enumcharlist negate=1 zerowidth
-    ge rx826_pos, rx826_eos, rx826_fail
-    sub $I10, rx826_pos, rx826_off
-    substr $S10, rx826_tgt, $I10, 1
+    ge rx825_pos, rx825_eos, rx825_fail
+    sub $I10, rx825_pos, rx825_off
+    substr $S10, rx825_tgt, $I10, 1
     index $I11, "(", $S10
-    ge $I11, 0, rx826_fail
+    ge $I11, 0, rx825_fail
   # rx subrule "ws" subtype=method negate=
-    rx826_cur."!cursor_pos"(rx826_pos)
-    $P10 = rx826_cur."ws"()
-    unless $P10, rx826_fail
-    rx826_pos = $P10."pos"()
+    rx825_cur."!cursor_pos"(rx825_pos)
+    $P10 = rx825_cur."ws"()
+    unless $P10, rx825_fail
+    rx825_pos = $P10."pos"()
   # rx subrule "quote_EXPR" subtype=capture negate=
-    rx826_cur."!cursor_pos"(rx826_pos)
-    $P10 = rx826_cur."quote_EXPR"()
-    unless $P10, rx826_fail
-    rx826_cur."!mark_push"(0, -1, 0, $P10)
+    rx825_cur."!cursor_pos"(rx825_pos)
+    $P10 = rx825_cur."quote_EXPR"(":qq")
+    unless $P10, rx825_fail
+    rx825_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("quote_EXPR")
-    rx826_pos = $P10."pos"()
+    rx825_pos = $P10."pos"()
   # rx pass
-    rx826_cur."!cursor_pass"(rx826_pos, "quote:sym<Q>")
-    rx826_cur."!cursor_debug"("PASS  ", "quote:sym<Q>", " at pos=", rx826_pos)
-    .return (rx826_cur)
-  rx826_fail:
+    rx825_cur."!cursor_pass"(rx825_pos, "quote:sym<qq>")
+    rx825_cur."!cursor_debug"("PASS  ", "quote:sym<qq>", " at pos=", rx825_pos)
+    .return (rx825_cur)
+  rx825_fail:
 .annotate "line", 4
-    (rx826_rep, rx826_pos, $I10, $P10) = rx826_cur."!mark_fail"(0)
-    lt rx826_pos, -1, rx826_done
-    eq rx826_pos, -1, rx826_fail
+    (rx825_rep, rx825_pos, $I10, $P10) = rx825_cur."!mark_fail"(0)
+    lt rx825_pos, -1, rx825_done
+    eq rx825_pos, -1, rx825_fail
     jump $I10
-  rx826_done:
-    rx826_cur."!cursor_fail"()
-    rx826_cur."!cursor_debug"("FAIL  ", "quote:sym<Q>")
-    .return (rx826_cur)
+  rx825_done:
+    rx825_cur."!cursor_fail"()
+    rx825_cur."!cursor_debug"("FAIL  ", "quote:sym<qq>")
+    .return (rx825_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q>"  :subid("198_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<qq>"  :subid("196_1267204702.05125") :method
 .annotate "line", 4
-    $P828 = self."!PREFIX__!subrule"("", "Q")
-    new $P829, "ResizablePMCArray"
-    push $P829, $P828
-    .return ($P829)
+    $P827 = self."!PREFIX__!subrule"("", "qq")
+    new $P828, "ResizablePMCArray"
+    push $P828, $P827
+    .return ($P828)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q:PIR>"  :subid("199_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym<Q>"  :subid("197_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx832_tgt
-    .local int rx832_pos
-    .local int rx832_off
-    .local int rx832_eos
-    .local int rx832_rep
-    .local pmc rx832_cur
-    (rx832_cur, rx832_pos, rx832_tgt) = self."!cursor_start"()
-    rx832_cur."!cursor_debug"("START ", "quote:sym<Q:PIR>")
-    .lex unicode:"$\x{a2}", rx832_cur
-    .local pmc match
-    .lex "$/", match
-    length rx832_eos, rx832_tgt
-    set rx832_off, 0
-    lt rx832_pos, 2, rx832_start
-    sub rx832_off, rx832_pos, 1
-    substr rx832_tgt, rx832_tgt, rx832_off
-  rx832_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan836_done
-    goto rxscan836_scan
-  rxscan836_loop:
-    ($P10) = rx832_cur."from"()
-    inc $P10
-    set rx832_pos, $P10
-    ge rx832_pos, rx832_eos, rxscan836_done
-  rxscan836_scan:
-    set_addr $I10, rxscan836_loop
-    rx832_cur."!mark_push"(0, rx832_pos, $I10)
-  rxscan836_done:
-.annotate "line", 390
-  # rx literal  "Q:PIR"
-    add $I11, rx832_pos, 5
-    gt $I11, rx832_eos, rx832_fail
-    sub $I11, rx832_pos, rx832_off
-    substr $S10, rx832_tgt, $I11, 5
-    ne $S10, "Q:PIR", rx832_fail
-    add rx832_pos, 5
-  # rx subrule "ws" subtype=method negate=
-    rx832_cur."!cursor_pos"(rx832_pos)
-    $P10 = rx832_cur."ws"()
-    unless $P10, rx832_fail
-    rx832_pos = $P10."pos"()
+    .local string rx831_tgt
+    .local int rx831_pos
+    .local int rx831_off
+    .local int rx831_eos
+    .local int rx831_rep
+    .local pmc rx831_cur
+    (rx831_cur, rx831_pos, rx831_tgt) = self."!cursor_start"()
+    rx831_cur."!cursor_debug"("START ", "quote:sym<Q>")
+    .lex unicode:"$\x{a2}", rx831_cur
+    .local pmc match
+    .lex "$/", match
+    length rx831_eos, rx831_tgt
+    set rx831_off, 0
+    lt rx831_pos, 2, rx831_start
+    sub rx831_off, rx831_pos, 1
+    substr rx831_tgt, rx831_tgt, rx831_off
+  rx831_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan835_done
+    goto rxscan835_scan
+  rxscan835_loop:
+    ($P10) = rx831_cur."from"()
+    inc $P10
+    set rx831_pos, $P10
+    ge rx831_pos, rx831_eos, rxscan835_done
+  rxscan835_scan:
+    set_addr $I10, rxscan835_loop
+    rx831_cur."!mark_push"(0, rx831_pos, $I10)
+  rxscan835_done:
+.annotate "line", 393
+  # rx literal  "Q"
+    add $I11, rx831_pos, 1
+    gt $I11, rx831_eos, rx831_fail
+    sub $I11, rx831_pos, rx831_off
+    substr $S10, rx831_tgt, $I11, 1
+    ne $S10, "Q", rx831_fail
+    add rx831_pos, 1
+  # rx enumcharlist negate=1 zerowidth
+    ge rx831_pos, rx831_eos, rx831_fail
+    sub $I10, rx831_pos, rx831_off
+    substr $S10, rx831_tgt, $I10, 1
+    index $I11, "(", $S10
+    ge $I11, 0, rx831_fail
+  # rx subrule "ws" subtype=method negate=
+    rx831_cur."!cursor_pos"(rx831_pos)
+    $P10 = rx831_cur."ws"()
+    unless $P10, rx831_fail
+    rx831_pos = $P10."pos"()
   # rx subrule "quote_EXPR" subtype=capture negate=
-    rx832_cur."!cursor_pos"(rx832_pos)
-    $P10 = rx832_cur."quote_EXPR"()
-    unless $P10, rx832_fail
-    rx832_cur."!mark_push"(0, -1, 0, $P10)
+    rx831_cur."!cursor_pos"(rx831_pos)
+    $P10 = rx831_cur."quote_EXPR"()
+    unless $P10, rx831_fail
+    rx831_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("quote_EXPR")
-    rx832_pos = $P10."pos"()
+    rx831_pos = $P10."pos"()
   # rx pass
-    rx832_cur."!cursor_pass"(rx832_pos, "quote:sym<Q:PIR>")
-    rx832_cur."!cursor_debug"("PASS  ", "quote:sym<Q:PIR>", " at pos=", rx832_pos)
-    .return (rx832_cur)
-  rx832_fail:
+    rx831_cur."!cursor_pass"(rx831_pos, "quote:sym<Q>")
+    rx831_cur."!cursor_debug"("PASS  ", "quote:sym<Q>", " at pos=", rx831_pos)
+    .return (rx831_cur)
+  rx831_fail:
 .annotate "line", 4
-    (rx832_rep, rx832_pos, $I10, $P10) = rx832_cur."!mark_fail"(0)
-    lt rx832_pos, -1, rx832_done
-    eq rx832_pos, -1, rx832_fail
+    (rx831_rep, rx831_pos, $I10, $P10) = rx831_cur."!mark_fail"(0)
+    lt rx831_pos, -1, rx831_done
+    eq rx831_pos, -1, rx831_fail
     jump $I10
-  rx832_done:
-    rx832_cur."!cursor_fail"()
-    rx832_cur."!cursor_debug"("FAIL  ", "quote:sym<Q:PIR>")
-    .return (rx832_cur)
+  rx831_done:
+    rx831_cur."!cursor_fail"()
+    rx831_cur."!cursor_debug"("FAIL  ", "quote:sym<Q>")
+    .return (rx831_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("200_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<Q>"  :subid("198_1267204702.05125") :method
 .annotate "line", 4
-    $P834 = self."!PREFIX__!subrule"("", "Q:PIR")
-    new $P835, "ResizablePMCArray"
-    push $P835, $P834
-    .return ($P835)
+    $P833 = self."!PREFIX__!subrule"("", "Q")
+    new $P834, "ResizablePMCArray"
+    push $P834, $P833
+    .return ($P834)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym</ />"  :subid("201_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym<Q:PIR>"  :subid("199_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx838_tgt
-    .local int rx838_pos
-    .local int rx838_off
-    .local int rx838_eos
-    .local int rx838_rep
-    .local pmc rx838_cur
-    (rx838_cur, rx838_pos, rx838_tgt) = self."!cursor_start"()
-    rx838_cur."!cursor_debug"("START ", "quote:sym</ />")
-    .lex unicode:"$\x{a2}", rx838_cur
+    .local string rx837_tgt
+    .local int rx837_pos
+    .local int rx837_off
+    .local int rx837_eos
+    .local int rx837_rep
+    .local pmc rx837_cur
+    (rx837_cur, rx837_pos, rx837_tgt) = self."!cursor_start"()
+    rx837_cur."!cursor_debug"("START ", "quote:sym<Q:PIR>")
+    .lex unicode:"$\x{a2}", rx837_cur
     .local pmc match
     .lex "$/", match
-    length rx838_eos, rx838_tgt
-    set rx838_off, 0
-    lt rx838_pos, 2, rx838_start
-    sub rx838_off, rx838_pos, 1
-    substr rx838_tgt, rx838_tgt, rx838_off
-  rx838_start:
+    length rx837_eos, rx837_tgt
+    set rx837_off, 0
+    lt rx837_pos, 2, rx837_start
+    sub rx837_off, rx837_pos, 1
+    substr rx837_tgt, rx837_tgt, rx837_off
+  rx837_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan842_done
-    goto rxscan842_scan
-  rxscan842_loop:
-    ($P10) = rx838_cur."from"()
+    ne $I10, -1, rxscan841_done
+    goto rxscan841_scan
+  rxscan841_loop:
+    ($P10) = rx837_cur."from"()
     inc $P10
-    set rx838_pos, $P10
-    ge rx838_pos, rx838_eos, rxscan842_done
-  rxscan842_scan:
-    set_addr $I10, rxscan842_loop
-    rx838_cur."!mark_push"(0, rx838_pos, $I10)
-  rxscan842_done:
-.annotate "line", 392
-  # rx literal  "/"
-    add $I11, rx838_pos, 1
-    gt $I11, rx838_eos, rx838_fail
-    sub $I11, rx838_pos, rx838_off
-    substr $S10, rx838_tgt, $I11, 1
-    ne $S10, "/", rx838_fail
-    add rx838_pos, 1
-.annotate "line", 393
-  # rx subrule "newpad" subtype=method negate=
-    rx838_cur."!cursor_pos"(rx838_pos)
-    $P10 = rx838_cur."newpad"()
-    unless $P10, rx838_fail
-    rx838_pos = $P10."pos"()
+    set rx837_pos, $P10
+    ge rx837_pos, rx837_eos, rxscan841_done
+  rxscan841_scan:
+    set_addr $I10, rxscan841_loop
+    rx837_cur."!mark_push"(0, rx837_pos, $I10)
+  rxscan841_done:
 .annotate "line", 394
-  # rx reduce name="quote:sym</ />" key="open"
-    rx838_cur."!cursor_pos"(rx838_pos)
-    rx838_cur."!reduce"("quote:sym</ />", "open")
-.annotate "line", 395
-  # rx subrule "LANG" subtype=capture negate=
-    rx838_cur."!cursor_pos"(rx838_pos)
-    $P10 = rx838_cur."LANG"("Regex", "nibbler")
-    unless $P10, rx838_fail
-    rx838_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("p6regex")
-    rx838_pos = $P10."pos"()
-.annotate "line", 396
-  # rx literal  "/"
-    add $I11, rx838_pos, 1
-    gt $I11, rx838_eos, rx838_fail
-    sub $I11, rx838_pos, rx838_off
-    substr $S10, rx838_tgt, $I11, 1
-    ne $S10, "/", rx838_fail
-    add rx838_pos, 1
-.annotate "line", 391
+  # rx literal  "Q:PIR"
+    add $I11, rx837_pos, 5
+    gt $I11, rx837_eos, rx837_fail
+    sub $I11, rx837_pos, rx837_off
+    substr $S10, rx837_tgt, $I11, 5
+    ne $S10, "Q:PIR", rx837_fail
+    add rx837_pos, 5
+  # rx subrule "ws" subtype=method negate=
+    rx837_cur."!cursor_pos"(rx837_pos)
+    $P10 = rx837_cur."ws"()
+    unless $P10, rx837_fail
+    rx837_pos = $P10."pos"()
+  # rx subrule "quote_EXPR" subtype=capture negate=
+    rx837_cur."!cursor_pos"(rx837_pos)
+    $P10 = rx837_cur."quote_EXPR"()
+    unless $P10, rx837_fail
+    rx837_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote_EXPR")
+    rx837_pos = $P10."pos"()
   # rx pass
-    rx838_cur."!cursor_pass"(rx838_pos, "quote:sym</ />")
-    rx838_cur."!cursor_debug"("PASS  ", "quote:sym</ />", " at pos=", rx838_pos)
-    .return (rx838_cur)
-  rx838_fail:
+    rx837_cur."!cursor_pass"(rx837_pos, "quote:sym<Q:PIR>")
+    rx837_cur."!cursor_debug"("PASS  ", "quote:sym<Q:PIR>", " at pos=", rx837_pos)
+    .return (rx837_cur)
+  rx837_fail:
 .annotate "line", 4
-    (rx838_rep, rx838_pos, $I10, $P10) = rx838_cur."!mark_fail"(0)
-    lt rx838_pos, -1, rx838_done
-    eq rx838_pos, -1, rx838_fail
+    (rx837_rep, rx837_pos, $I10, $P10) = rx837_cur."!mark_fail"(0)
+    lt rx837_pos, -1, rx837_done
+    eq rx837_pos, -1, rx837_fail
     jump $I10
-  rx838_done:
-    rx838_cur."!cursor_fail"()
-    rx838_cur."!cursor_debug"("FAIL  ", "quote:sym</ />")
-    .return (rx838_cur)
+  rx837_done:
+    rx837_cur."!cursor_fail"()
+    rx837_cur."!cursor_debug"("FAIL  ", "quote:sym<Q:PIR>")
+    .return (rx837_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym</ />"  :subid("202_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("200_1267204702.05125") :method
 .annotate "line", 4
-    $P840 = self."!PREFIX__!subrule"("", "/")
-    new $P841, "ResizablePMCArray"
-    push $P841, $P840
-    .return ($P841)
+    $P839 = self."!PREFIX__!subrule"("", "Q:PIR")
+    new $P840, "ResizablePMCArray"
+    push $P840, $P839
+    .return ($P840)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<$>"  :subid("203_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym</ />"  :subid("201_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx844_tgt
-    .local int rx844_pos
-    .local int rx844_off
-    .local int rx844_eos
-    .local int rx844_rep
-    .local pmc rx844_cur
-    (rx844_cur, rx844_pos, rx844_tgt) = self."!cursor_start"()
-    rx844_cur."!cursor_debug"("START ", "quote_escape:sym<$>")
-    .lex unicode:"$\x{a2}", rx844_cur
+    .local string rx843_tgt
+    .local int rx843_pos
+    .local int rx843_off
+    .local int rx843_eos
+    .local int rx843_rep
+    .local pmc rx843_cur
+    (rx843_cur, rx843_pos, rx843_tgt) = self."!cursor_start"()
+    rx843_cur."!cursor_debug"("START ", "quote:sym</ />")
+    .lex unicode:"$\x{a2}", rx843_cur
     .local pmc match
     .lex "$/", match
-    length rx844_eos, rx844_tgt
-    set rx844_off, 0
-    lt rx844_pos, 2, rx844_start
-    sub rx844_off, rx844_pos, 1
-    substr rx844_tgt, rx844_tgt, rx844_off
-  rx844_start:
+    length rx843_eos, rx843_tgt
+    set rx843_off, 0
+    lt rx843_pos, 2, rx843_start
+    sub rx843_off, rx843_pos, 1
+    substr rx843_tgt, rx843_tgt, rx843_off
+  rx843_start:
     $I10 = self.'from'()
     ne $I10, -1, rxscan847_done
     goto rxscan847_scan
   rxscan847_loop:
-    ($P10) = rx844_cur."from"()
+    ($P10) = rx843_cur."from"()
     inc $P10
-    set rx844_pos, $P10
-    ge rx844_pos, rx844_eos, rxscan847_done
+    set rx843_pos, $P10
+    ge rx843_pos, rx843_eos, rxscan847_done
   rxscan847_scan:
     set_addr $I10, rxscan847_loop
-    rx844_cur."!mark_push"(0, rx844_pos, $I10)
+    rx843_cur."!mark_push"(0, rx843_pos, $I10)
   rxscan847_done:
+.annotate "line", 396
+  # rx literal  "/"
+    add $I11, rx843_pos, 1
+    gt $I11, rx843_eos, rx843_fail
+    sub $I11, rx843_pos, rx843_off
+    substr $S10, rx843_tgt, $I11, 1
+    ne $S10, "/", rx843_fail
+    add rx843_pos, 1
+.annotate "line", 397
+  # rx subrule "newpad" subtype=method negate=
+    rx843_cur."!cursor_pos"(rx843_pos)
+    $P10 = rx843_cur."newpad"()
+    unless $P10, rx843_fail
+    rx843_pos = $P10."pos"()
+.annotate "line", 398
+  # rx reduce name="quote:sym</ />" key="open"
+    rx843_cur."!cursor_pos"(rx843_pos)
+    rx843_cur."!reduce"("quote:sym</ />", "open")
 .annotate "line", 399
-  # rx enumcharlist negate=0 zerowidth
-    ge rx844_pos, rx844_eos, rx844_fail
-    sub $I10, rx844_pos, rx844_off
-    substr $S10, rx844_tgt, $I10, 1
-    index $I11, "$", $S10
-    lt $I11, 0, rx844_fail
-  # rx subrule "quotemod_check" subtype=zerowidth negate=
-    rx844_cur."!cursor_pos"(rx844_pos)
-    $P10 = rx844_cur."quotemod_check"("s")
-    unless $P10, rx844_fail
-  # rx subrule "variable" subtype=capture negate=
-    rx844_cur."!cursor_pos"(rx844_pos)
-    $P10 = rx844_cur."variable"()
-    unless $P10, rx844_fail
-    rx844_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("variable")
-    rx844_pos = $P10."pos"()
+  # rx subrule "LANG" subtype=capture negate=
+    rx843_cur."!cursor_pos"(rx843_pos)
+    $P10 = rx843_cur."LANG"("Regex", "nibbler")
+    unless $P10, rx843_fail
+    rx843_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("p6regex")
+    rx843_pos = $P10."pos"()
+.annotate "line", 400
+  # rx literal  "/"
+    add $I11, rx843_pos, 1
+    gt $I11, rx843_eos, rx843_fail
+    sub $I11, rx843_pos, rx843_off
+    substr $S10, rx843_tgt, $I11, 1
+    ne $S10, "/", rx843_fail
+    add rx843_pos, 1
+.annotate "line", 395
   # rx pass
-    rx844_cur."!cursor_pass"(rx844_pos, "quote_escape:sym<$>")
-    rx844_cur."!cursor_debug"("PASS  ", "quote_escape:sym<$>", " at pos=", rx844_pos)
-    .return (rx844_cur)
-  rx844_fail:
+    rx843_cur."!cursor_pass"(rx843_pos, "quote:sym</ />")
+    rx843_cur."!cursor_debug"("PASS  ", "quote:sym</ />", " at pos=", rx843_pos)
+    .return (rx843_cur)
+  rx843_fail:
 .annotate "line", 4
-    (rx844_rep, rx844_pos, $I10, $P10) = rx844_cur."!mark_fail"(0)
-    lt rx844_pos, -1, rx844_done
-    eq rx844_pos, -1, rx844_fail
+    (rx843_rep, rx843_pos, $I10, $P10) = rx843_cur."!mark_fail"(0)
+    lt rx843_pos, -1, rx843_done
+    eq rx843_pos, -1, rx843_fail
     jump $I10
-  rx844_done:
-    rx844_cur."!cursor_fail"()
-    rx844_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<$>")
-    .return (rx844_cur)
+  rx843_done:
+    rx843_cur."!cursor_fail"()
+    rx843_cur."!cursor_debug"("FAIL  ", "quote:sym</ />")
+    .return (rx843_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<$>"  :subid("204_1261064023.05912") :method
+.sub "!PREFIX__quote:sym</ />"  :subid("202_1267204702.05125") :method
 .annotate "line", 4
+    $P845 = self."!PREFIX__!subrule"("", "/")
     new $P846, "ResizablePMCArray"
-    push $P846, "$"
+    push $P846, $P845
     .return ($P846)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<{ }>"  :subid("205_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote_escape:sym<$>"  :subid("203_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx849_tgt
     .local int rx849_pos
@@ -10129,7 +10095,7 @@
     .local int rx849_rep
     .local pmc rx849_cur
     (rx849_cur, rx849_pos, rx849_tgt) = self."!cursor_start"()
-    rx849_cur."!cursor_debug"("START ", "quote_escape:sym<{ }>")
+    rx849_cur."!cursor_debug"("START ", "quote_escape:sym<$>")
     .lex unicode:"$\x{a2}", rx849_cur
     .local pmc match
     .lex "$/", match
@@ -10151,27 +10117,27 @@
     set_addr $I10, rxscan852_loop
     rx849_cur."!mark_push"(0, rx849_pos, $I10)
   rxscan852_done:
-.annotate "line", 400
+.annotate "line", 403
   # rx enumcharlist negate=0 zerowidth
     ge rx849_pos, rx849_eos, rx849_fail
     sub $I10, rx849_pos, rx849_off
     substr $S10, rx849_tgt, $I10, 1
-    index $I11, "{", $S10
+    index $I11, "$", $S10
     lt $I11, 0, rx849_fail
   # rx subrule "quotemod_check" subtype=zerowidth negate=
     rx849_cur."!cursor_pos"(rx849_pos)
-    $P10 = rx849_cur."quotemod_check"("c")
+    $P10 = rx849_cur."quotemod_check"("s")
     unless $P10, rx849_fail
-  # rx subrule "block" subtype=capture negate=
+  # rx subrule "variable" subtype=capture negate=
     rx849_cur."!cursor_pos"(rx849_pos)
-    $P10 = rx849_cur."block"()
+    $P10 = rx849_cur."variable"()
     unless $P10, rx849_fail
     rx849_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("block")
+    $P10."!cursor_names"("variable")
     rx849_pos = $P10."pos"()
   # rx pass
-    rx849_cur."!cursor_pass"(rx849_pos, "quote_escape:sym<{ }>")
-    rx849_cur."!cursor_debug"("PASS  ", "quote_escape:sym<{ }>", " at pos=", rx849_pos)
+    rx849_cur."!cursor_pass"(rx849_pos, "quote_escape:sym<$>")
+    rx849_cur."!cursor_debug"("PASS  ", "quote_escape:sym<$>", " at pos=", rx849_pos)
     .return (rx849_cur)
   rx849_fail:
 .annotate "line", 4
@@ -10181,23 +10147,23 @@
     jump $I10
   rx849_done:
     rx849_cur."!cursor_fail"()
-    rx849_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<{ }>")
+    rx849_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<$>")
     .return (rx849_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("206_1261064023.05912") :method
+.sub "!PREFIX__quote_escape:sym<$>"  :subid("204_1267204702.05125") :method
 .annotate "line", 4
     new $P851, "ResizablePMCArray"
-    push $P851, "{"
+    push $P851, "$"
     .return ($P851)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<( )>"  :subid("207_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote_escape:sym<{ }>"  :subid("205_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx854_tgt
     .local int rx854_pos
@@ -10206,8 +10172,7 @@
     .local int rx854_rep
     .local pmc rx854_cur
     (rx854_cur, rx854_pos, rx854_tgt) = self."!cursor_start"()
-    rx854_cur."!cursor_debug"("START ", "circumfix:sym<( )>")
-    rx854_cur."!cursor_caparray"("EXPR")
+    rx854_cur."!cursor_debug"("START ", "quote_escape:sym<{ }>")
     .lex unicode:"$\x{a2}", rx854_cur
     .local pmc match
     .lex "$/", match
@@ -10218,53 +10183,38 @@
     substr rx854_tgt, rx854_tgt, rx854_off
   rx854_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan858_done
-    goto rxscan858_scan
-  rxscan858_loop:
+    ne $I10, -1, rxscan857_done
+    goto rxscan857_scan
+  rxscan857_loop:
     ($P10) = rx854_cur."from"()
     inc $P10
     set rx854_pos, $P10
-    ge rx854_pos, rx854_eos, rxscan858_done
-  rxscan858_scan:
-    set_addr $I10, rxscan858_loop
+    ge rx854_pos, rx854_eos, rxscan857_done
+  rxscan857_scan:
+    set_addr $I10, rxscan857_loop
     rx854_cur."!mark_push"(0, rx854_pos, $I10)
-  rxscan858_done:
-.annotate "line", 402
-  # rx literal  "("
-    add $I11, rx854_pos, 1
-    gt $I11, rx854_eos, rx854_fail
-    sub $I11, rx854_pos, rx854_off
-    substr $S10, rx854_tgt, $I11, 1
-    ne $S10, "(", rx854_fail
-    add rx854_pos, 1
-  # rx subrule "ws" subtype=method negate=
+  rxscan857_done:
+.annotate "line", 404
+  # rx enumcharlist negate=0 zerowidth
+    ge rx854_pos, rx854_eos, rx854_fail
+    sub $I10, rx854_pos, rx854_off
+    substr $S10, rx854_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx854_fail
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
     rx854_cur."!cursor_pos"(rx854_pos)
-    $P10 = rx854_cur."ws"()
+    $P10 = rx854_cur."quotemod_check"("c")
     unless $P10, rx854_fail
-    rx854_pos = $P10."pos"()
-  # rx rxquantr859 ** 0..1
-    set_addr $I860, rxquantr859_done
-    rx854_cur."!mark_push"(0, rx854_pos, $I860)
-  rxquantr859_loop:
-  # rx subrule "EXPR" subtype=capture negate=
+  # rx subrule "block" subtype=capture negate=
     rx854_cur."!cursor_pos"(rx854_pos)
-    $P10 = rx854_cur."EXPR"()
+    $P10 = rx854_cur."block"()
     unless $P10, rx854_fail
     rx854_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("EXPR")
+    $P10."!cursor_names"("block")
     rx854_pos = $P10."pos"()
-    (rx854_rep) = rx854_cur."!mark_commit"($I860)
-  rxquantr859_done:
-  # rx literal  ")"
-    add $I11, rx854_pos, 1
-    gt $I11, rx854_eos, rx854_fail
-    sub $I11, rx854_pos, rx854_off
-    substr $S10, rx854_tgt, $I11, 1
-    ne $S10, ")", rx854_fail
-    add rx854_pos, 1
   # rx pass
-    rx854_cur."!cursor_pass"(rx854_pos, "circumfix:sym<( )>")
-    rx854_cur."!cursor_debug"("PASS  ", "circumfix:sym<( )>", " at pos=", rx854_pos)
+    rx854_cur."!cursor_pass"(rx854_pos, "quote_escape:sym<{ }>")
+    rx854_cur."!cursor_debug"("PASS  ", "quote_escape:sym<{ }>", " at pos=", rx854_pos)
     .return (rx854_cur)
   rx854_fail:
 .annotate "line", 4
@@ -10274,191 +10224,211 @@
     jump $I10
   rx854_done:
     rx854_cur."!cursor_fail"()
-    rx854_cur."!cursor_debug"("FAIL  ", "circumfix:sym<( )>")
+    rx854_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<{ }>")
     .return (rx854_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<( )>"  :subid("208_1261064023.05912") :method
+.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("206_1267204702.05125") :method
 .annotate "line", 4
-    $P856 = self."!PREFIX__!subrule"("", "(")
-    new $P857, "ResizablePMCArray"
-    push $P857, $P856
-    .return ($P857)
+    new $P856, "ResizablePMCArray"
+    push $P856, "{"
+    .return ($P856)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<[ ]>"  :subid("209_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 4
-    .local string rx862_tgt
-    .local int rx862_pos
-    .local int rx862_off
-    .local int rx862_eos
-    .local int rx862_rep
-    .local pmc rx862_cur
-    (rx862_cur, rx862_pos, rx862_tgt) = self."!cursor_start"()
-    rx862_cur."!cursor_debug"("START ", "circumfix:sym<[ ]>")
-    rx862_cur."!cursor_caparray"("EXPR")
-    .lex unicode:"$\x{a2}", rx862_cur
-    .local pmc match
-    .lex "$/", match
-    length rx862_eos, rx862_tgt
-    set rx862_off, 0
-    lt rx862_pos, 2, rx862_start
-    sub rx862_off, rx862_pos, 1
-    substr rx862_tgt, rx862_tgt, rx862_off
-  rx862_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan866_done
-    goto rxscan866_scan
-  rxscan866_loop:
-    ($P10) = rx862_cur."from"()
-    inc $P10
-    set rx862_pos, $P10
-    ge rx862_pos, rx862_eos, rxscan866_done
-  rxscan866_scan:
-    set_addr $I10, rxscan866_loop
-    rx862_cur."!mark_push"(0, rx862_pos, $I10)
-  rxscan866_done:
-.annotate "line", 403
-  # rx literal  "["
-    add $I11, rx862_pos, 1
-    gt $I11, rx862_eos, rx862_fail
-    sub $I11, rx862_pos, rx862_off
-    substr $S10, rx862_tgt, $I11, 1
-    ne $S10, "[", rx862_fail
-    add rx862_pos, 1
-  # rx subrule "ws" subtype=method negate=
-    rx862_cur."!cursor_pos"(rx862_pos)
-    $P10 = rx862_cur."ws"()
-    unless $P10, rx862_fail
-    rx862_pos = $P10."pos"()
-  # rx rxquantr867 ** 0..1
-    set_addr $I868, rxquantr867_done
-    rx862_cur."!mark_push"(0, rx862_pos, $I868)
-  rxquantr867_loop:
+.sub "circumfix:sym<( )>"  :subid("207_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 4
+    .local string rx859_tgt
+    .local int rx859_pos
+    .local int rx859_off
+    .local int rx859_eos
+    .local int rx859_rep
+    .local pmc rx859_cur
+    (rx859_cur, rx859_pos, rx859_tgt) = self."!cursor_start"()
+    rx859_cur."!cursor_debug"("START ", "circumfix:sym<( )>")
+    rx859_cur."!cursor_caparray"("EXPR")
+    .lex unicode:"$\x{a2}", rx859_cur
+    .local pmc match
+    .lex "$/", match
+    length rx859_eos, rx859_tgt
+    set rx859_off, 0
+    lt rx859_pos, 2, rx859_start
+    sub rx859_off, rx859_pos, 1
+    substr rx859_tgt, rx859_tgt, rx859_off
+  rx859_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan863_done
+    goto rxscan863_scan
+  rxscan863_loop:
+    ($P10) = rx859_cur."from"()
+    inc $P10
+    set rx859_pos, $P10
+    ge rx859_pos, rx859_eos, rxscan863_done
+  rxscan863_scan:
+    set_addr $I10, rxscan863_loop
+    rx859_cur."!mark_push"(0, rx859_pos, $I10)
+  rxscan863_done:
+.annotate "line", 406
+  # rx literal  "("
+    add $I11, rx859_pos, 1
+    gt $I11, rx859_eos, rx859_fail
+    sub $I11, rx859_pos, rx859_off
+    substr $S10, rx859_tgt, $I11, 1
+    ne $S10, "(", rx859_fail
+    add rx859_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx859_cur."!cursor_pos"(rx859_pos)
+    $P10 = rx859_cur."ws"()
+    unless $P10, rx859_fail
+    rx859_pos = $P10."pos"()
+  # rx rxquantr864 ** 0..1
+    set_addr $I865, rxquantr864_done
+    rx859_cur."!mark_push"(0, rx859_pos, $I865)
+  rxquantr864_loop:
   # rx subrule "EXPR" subtype=capture negate=
-    rx862_cur."!cursor_pos"(rx862_pos)
-    $P10 = rx862_cur."EXPR"()
-    unless $P10, rx862_fail
-    rx862_cur."!mark_push"(0, -1, 0, $P10)
+    rx859_cur."!cursor_pos"(rx859_pos)
+    $P10 = rx859_cur."EXPR"()
+    unless $P10, rx859_fail
+    rx859_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("EXPR")
-    rx862_pos = $P10."pos"()
-    (rx862_rep) = rx862_cur."!mark_commit"($I868)
-  rxquantr867_done:
-  # rx literal  "]"
-    add $I11, rx862_pos, 1
-    gt $I11, rx862_eos, rx862_fail
-    sub $I11, rx862_pos, rx862_off
-    substr $S10, rx862_tgt, $I11, 1
-    ne $S10, "]", rx862_fail
-    add rx862_pos, 1
+    rx859_pos = $P10."pos"()
+    (rx859_rep) = rx859_cur."!mark_commit"($I865)
+  rxquantr864_done:
+  # rx literal  ")"
+    add $I11, rx859_pos, 1
+    gt $I11, rx859_eos, rx859_fail
+    sub $I11, rx859_pos, rx859_off
+    substr $S10, rx859_tgt, $I11, 1
+    ne $S10, ")", rx859_fail
+    add rx859_pos, 1
   # rx pass
-    rx862_cur."!cursor_pass"(rx862_pos, "circumfix:sym<[ ]>")
-    rx862_cur."!cursor_debug"("PASS  ", "circumfix:sym<[ ]>", " at pos=", rx862_pos)
-    .return (rx862_cur)
-  rx862_fail:
+    rx859_cur."!cursor_pass"(rx859_pos, "circumfix:sym<( )>")
+    rx859_cur."!cursor_debug"("PASS  ", "circumfix:sym<( )>", " at pos=", rx859_pos)
+    .return (rx859_cur)
+  rx859_fail:
 .annotate "line", 4
-    (rx862_rep, rx862_pos, $I10, $P10) = rx862_cur."!mark_fail"(0)
-    lt rx862_pos, -1, rx862_done
-    eq rx862_pos, -1, rx862_fail
+    (rx859_rep, rx859_pos, $I10, $P10) = rx859_cur."!mark_fail"(0)
+    lt rx859_pos, -1, rx859_done
+    eq rx859_pos, -1, rx859_fail
     jump $I10
-  rx862_done:
-    rx862_cur."!cursor_fail"()
-    rx862_cur."!cursor_debug"("FAIL  ", "circumfix:sym<[ ]>")
-    .return (rx862_cur)
+  rx859_done:
+    rx859_cur."!cursor_fail"()
+    rx859_cur."!cursor_debug"("FAIL  ", "circumfix:sym<( )>")
+    .return (rx859_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("210_1261064023.05912") :method
+.sub "!PREFIX__circumfix:sym<( )>"  :subid("208_1267204702.05125") :method
 .annotate "line", 4
-    $P864 = self."!PREFIX__!subrule"("", "[")
-    new $P865, "ResizablePMCArray"
-    push $P865, $P864
-    .return ($P865)
+    $P861 = self."!PREFIX__!subrule"("", "(")
+    new $P862, "ResizablePMCArray"
+    push $P862, $P861
+    .return ($P862)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<ang>"  :subid("211_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "circumfix:sym<[ ]>"  :subid("209_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
-    .local string rx870_tgt
-    .local int rx870_pos
-    .local int rx870_off
-    .local int rx870_eos
-    .local int rx870_rep
-    .local pmc rx870_cur
-    (rx870_cur, rx870_pos, rx870_tgt) = self."!cursor_start"()
-    rx870_cur."!cursor_debug"("START ", "circumfix:sym<ang>")
-    .lex unicode:"$\x{a2}", rx870_cur
+    .local string rx867_tgt
+    .local int rx867_pos
+    .local int rx867_off
+    .local int rx867_eos
+    .local int rx867_rep
+    .local pmc rx867_cur
+    (rx867_cur, rx867_pos, rx867_tgt) = self."!cursor_start"()
+    rx867_cur."!cursor_debug"("START ", "circumfix:sym<[ ]>")
+    rx867_cur."!cursor_caparray"("EXPR")
+    .lex unicode:"$\x{a2}", rx867_cur
     .local pmc match
     .lex "$/", match
-    length rx870_eos, rx870_tgt
-    set rx870_off, 0
-    lt rx870_pos, 2, rx870_start
-    sub rx870_off, rx870_pos, 1
-    substr rx870_tgt, rx870_tgt, rx870_off
-  rx870_start:
+    length rx867_eos, rx867_tgt
+    set rx867_off, 0
+    lt rx867_pos, 2, rx867_start
+    sub rx867_off, rx867_pos, 1
+    substr rx867_tgt, rx867_tgt, rx867_off
+  rx867_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan873_done
-    goto rxscan873_scan
-  rxscan873_loop:
-    ($P10) = rx870_cur."from"()
+    ne $I10, -1, rxscan871_done
+    goto rxscan871_scan
+  rxscan871_loop:
+    ($P10) = rx867_cur."from"()
     inc $P10
-    set rx870_pos, $P10
-    ge rx870_pos, rx870_eos, rxscan873_done
-  rxscan873_scan:
-    set_addr $I10, rxscan873_loop
-    rx870_cur."!mark_push"(0, rx870_pos, $I10)
-  rxscan873_done:
-.annotate "line", 404
-  # rx enumcharlist negate=0 zerowidth
-    ge rx870_pos, rx870_eos, rx870_fail
-    sub $I10, rx870_pos, rx870_off
-    substr $S10, rx870_tgt, $I10, 1
-    index $I11, "<", $S10
-    lt $I11, 0, rx870_fail
-  # rx subrule "quote_EXPR" subtype=capture negate=
-    rx870_cur."!cursor_pos"(rx870_pos)
-    $P10 = rx870_cur."quote_EXPR"(":q", ":w")
-    unless $P10, rx870_fail
-    rx870_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("quote_EXPR")
-    rx870_pos = $P10."pos"()
+    set rx867_pos, $P10
+    ge rx867_pos, rx867_eos, rxscan871_done
+  rxscan871_scan:
+    set_addr $I10, rxscan871_loop
+    rx867_cur."!mark_push"(0, rx867_pos, $I10)
+  rxscan871_done:
+.annotate "line", 407
+  # rx literal  "["
+    add $I11, rx867_pos, 1
+    gt $I11, rx867_eos, rx867_fail
+    sub $I11, rx867_pos, rx867_off
+    substr $S10, rx867_tgt, $I11, 1
+    ne $S10, "[", rx867_fail
+    add rx867_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx867_cur."!cursor_pos"(rx867_pos)
+    $P10 = rx867_cur."ws"()
+    unless $P10, rx867_fail
+    rx867_pos = $P10."pos"()
+  # rx rxquantr872 ** 0..1
+    set_addr $I873, rxquantr872_done
+    rx867_cur."!mark_push"(0, rx867_pos, $I873)
+  rxquantr872_loop:
+  # rx subrule "EXPR" subtype=capture negate=
+    rx867_cur."!cursor_pos"(rx867_pos)
+    $P10 = rx867_cur."EXPR"()
+    unless $P10, rx867_fail
+    rx867_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx867_pos = $P10."pos"()
+    (rx867_rep) = rx867_cur."!mark_commit"($I873)
+  rxquantr872_done:
+  # rx literal  "]"
+    add $I11, rx867_pos, 1
+    gt $I11, rx867_eos, rx867_fail
+    sub $I11, rx867_pos, rx867_off
+    substr $S10, rx867_tgt, $I11, 1
+    ne $S10, "]", rx867_fail
+    add rx867_pos, 1
   # rx pass
-    rx870_cur."!cursor_pass"(rx870_pos, "circumfix:sym<ang>")
-    rx870_cur."!cursor_debug"("PASS  ", "circumfix:sym<ang>", " at pos=", rx870_pos)
-    .return (rx870_cur)
-  rx870_fail:
+    rx867_cur."!cursor_pass"(rx867_pos, "circumfix:sym<[ ]>")
+    rx867_cur."!cursor_debug"("PASS  ", "circumfix:sym<[ ]>", " at pos=", rx867_pos)
+    .return (rx867_cur)
+  rx867_fail:
 .annotate "line", 4
-    (rx870_rep, rx870_pos, $I10, $P10) = rx870_cur."!mark_fail"(0)
-    lt rx870_pos, -1, rx870_done
-    eq rx870_pos, -1, rx870_fail
+    (rx867_rep, rx867_pos, $I10, $P10) = rx867_cur."!mark_fail"(0)
+    lt rx867_pos, -1, rx867_done
+    eq rx867_pos, -1, rx867_fail
     jump $I10
-  rx870_done:
-    rx870_cur."!cursor_fail"()
-    rx870_cur."!cursor_debug"("FAIL  ", "circumfix:sym<ang>")
-    .return (rx870_cur)
+  rx867_done:
+    rx867_cur."!cursor_fail"()
+    rx867_cur."!cursor_debug"("FAIL  ", "circumfix:sym<[ ]>")
+    .return (rx867_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<ang>"  :subid("212_1261064023.05912") :method
+.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("210_1267204702.05125") :method
 .annotate "line", 4
-    new $P872, "ResizablePMCArray"
-    push $P872, "<"
-    .return ($P872)
+    $P869 = self."!PREFIX__!subrule"("", "[")
+    new $P870, "ResizablePMCArray"
+    push $P870, $P869
+    .return ($P870)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("213_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "circumfix:sym<ang>"  :subid("211_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx875_tgt
     .local int rx875_pos
@@ -10467,7 +10437,7 @@
     .local int rx875_rep
     .local pmc rx875_cur
     (rx875_cur, rx875_pos, rx875_tgt) = self."!cursor_start"()
-    rx875_cur."!cursor_debug"("START ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
+    rx875_cur."!cursor_debug"("START ", "circumfix:sym<ang>")
     .lex unicode:"$\x{a2}", rx875_cur
     .local pmc match
     .lex "$/", match
@@ -10489,23 +10459,23 @@
     set_addr $I10, rxscan878_loop
     rx875_cur."!mark_push"(0, rx875_pos, $I10)
   rxscan878_done:
-.annotate "line", 405
+.annotate "line", 408
   # rx enumcharlist negate=0 zerowidth
     ge rx875_pos, rx875_eos, rx875_fail
     sub $I10, rx875_pos, rx875_off
     substr $S10, rx875_tgt, $I10, 1
-    index $I11, unicode:"\x{ab}", $S10
+    index $I11, "<", $S10
     lt $I11, 0, rx875_fail
   # rx subrule "quote_EXPR" subtype=capture negate=
     rx875_cur."!cursor_pos"(rx875_pos)
-    $P10 = rx875_cur."quote_EXPR"(":qq", ":w")
+    $P10 = rx875_cur."quote_EXPR"(":q", ":w")
     unless $P10, rx875_fail
     rx875_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("quote_EXPR")
     rx875_pos = $P10."pos"()
   # rx pass
-    rx875_cur."!cursor_pass"(rx875_pos, unicode:"circumfix:sym<\x{ab} \x{bb}>")
-    rx875_cur."!cursor_debug"("PASS  ", unicode:"circumfix:sym<\x{ab} \x{bb}>", " at pos=", rx875_pos)
+    rx875_cur."!cursor_pass"(rx875_pos, "circumfix:sym<ang>")
+    rx875_cur."!cursor_debug"("PASS  ", "circumfix:sym<ang>", " at pos=", rx875_pos)
     .return (rx875_cur)
   rx875_fail:
 .annotate "line", 4
@@ -10515,23 +10485,23 @@
     jump $I10
   rx875_done:
     rx875_cur."!cursor_fail"()
-    rx875_cur."!cursor_debug"("FAIL  ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
+    rx875_cur."!cursor_debug"("FAIL  ", "circumfix:sym<ang>")
     .return (rx875_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("214_1261064023.05912") :method
+.sub "!PREFIX__circumfix:sym<ang>"  :subid("212_1267204702.05125") :method
 .annotate "line", 4
     new $P877, "ResizablePMCArray"
-    push $P877, unicode:"\x{ab}"
+    push $P877, "<"
     .return ($P877)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<{ }>"  :subid("215_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("213_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx880_tgt
     .local int rx880_pos
@@ -10540,7 +10510,7 @@
     .local int rx880_rep
     .local pmc rx880_cur
     (rx880_cur, rx880_pos, rx880_tgt) = self."!cursor_start"()
-    rx880_cur."!cursor_debug"("START ", "circumfix:sym<{ }>")
+    rx880_cur."!cursor_debug"("START ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
     .lex unicode:"$\x{a2}", rx880_cur
     .local pmc match
     .lex "$/", match
@@ -10562,23 +10532,23 @@
     set_addr $I10, rxscan883_loop
     rx880_cur."!mark_push"(0, rx880_pos, $I10)
   rxscan883_done:
-.annotate "line", 406
+.annotate "line", 409
   # rx enumcharlist negate=0 zerowidth
     ge rx880_pos, rx880_eos, rx880_fail
     sub $I10, rx880_pos, rx880_off
     substr $S10, rx880_tgt, $I10, 1
-    index $I11, "{", $S10
+    index $I11, unicode:"\x{ab}", $S10
     lt $I11, 0, rx880_fail
-  # rx subrule "pblock" subtype=capture negate=
+  # rx subrule "quote_EXPR" subtype=capture negate=
     rx880_cur."!cursor_pos"(rx880_pos)
-    $P10 = rx880_cur."pblock"()
+    $P10 = rx880_cur."quote_EXPR"(":qq", ":w")
     unless $P10, rx880_fail
     rx880_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("pblock")
+    $P10."!cursor_names"("quote_EXPR")
     rx880_pos = $P10."pos"()
   # rx pass
-    rx880_cur."!cursor_pass"(rx880_pos, "circumfix:sym<{ }>")
-    rx880_cur."!cursor_debug"("PASS  ", "circumfix:sym<{ }>", " at pos=", rx880_pos)
+    rx880_cur."!cursor_pass"(rx880_pos, unicode:"circumfix:sym<\x{ab} \x{bb}>")
+    rx880_cur."!cursor_debug"("PASS  ", unicode:"circumfix:sym<\x{ab} \x{bb}>", " at pos=", rx880_pos)
     .return (rx880_cur)
   rx880_fail:
 .annotate "line", 4
@@ -10588,23 +10558,23 @@
     jump $I10
   rx880_done:
     rx880_cur."!cursor_fail"()
-    rx880_cur."!cursor_debug"("FAIL  ", "circumfix:sym<{ }>")
+    rx880_cur."!cursor_debug"("FAIL  ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
     .return (rx880_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<{ }>"  :subid("216_1261064023.05912") :method
+.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("214_1267204702.05125") :method
 .annotate "line", 4
     new $P882, "ResizablePMCArray"
-    push $P882, "{"
+    push $P882, unicode:"\x{ab}"
     .return ($P882)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<sigil>"  :subid("217_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "circumfix:sym<{ }>"  :subid("215_1267204702.05125") :method :outer("11_1267204702.05125")
 .annotate "line", 4
     .local string rx885_tgt
     .local int rx885_pos
@@ -10613,7 +10583,7 @@
     .local int rx885_rep
     .local pmc rx885_cur
     (rx885_cur, rx885_pos, rx885_tgt) = self."!cursor_start"()
-    rx885_cur."!cursor_debug"("START ", "circumfix:sym<sigil>")
+    rx885_cur."!cursor_debug"("START ", "circumfix:sym<{ }>")
     .lex unicode:"$\x{a2}", rx885_cur
     .local pmc match
     .lex "$/", match
@@ -10624,60 +10594,34 @@
     substr rx885_tgt, rx885_tgt, rx885_off
   rx885_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan889_done
-    goto rxscan889_scan
-  rxscan889_loop:
+    ne $I10, -1, rxscan888_done
+    goto rxscan888_scan
+  rxscan888_loop:
     ($P10) = rx885_cur."from"()
     inc $P10
     set rx885_pos, $P10
-    ge rx885_pos, rx885_eos, rxscan889_done
-  rxscan889_scan:
-    set_addr $I10, rxscan889_loop
+    ge rx885_pos, rx885_eos, rxscan888_done
+  rxscan888_scan:
+    set_addr $I10, rxscan888_loop
     rx885_cur."!mark_push"(0, rx885_pos, $I10)
-  rxscan889_done:
-.annotate "line", 407
-  # rx subrule "sigil" subtype=capture negate=
-    rx885_cur."!cursor_pos"(rx885_pos)
-    $P10 = rx885_cur."sigil"()
-    unless $P10, rx885_fail
-    rx885_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("sigil")
-    rx885_pos = $P10."pos"()
-  # rx literal  "("
-    add $I11, rx885_pos, 1
-    gt $I11, rx885_eos, rx885_fail
-    sub $I11, rx885_pos, rx885_off
-    substr $S10, rx885_tgt, $I11, 1
-    ne $S10, "(", rx885_fail
-    add rx885_pos, 1
-  # rx subrule "semilist" subtype=capture negate=
+  rxscan888_done:
+.annotate "line", 410
+  # rx enumcharlist negate=0 zerowidth
+    ge rx885_pos, rx885_eos, rx885_fail
+    sub $I10, rx885_pos, rx885_off
+    substr $S10, rx885_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx885_fail
+  # rx subrule "pblock" subtype=capture negate=
     rx885_cur."!cursor_pos"(rx885_pos)
-    $P10 = rx885_cur."semilist"()
+    $P10 = rx885_cur."pblock"()
     unless $P10, rx885_fail
     rx885_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("semilist")
-    rx885_pos = $P10."pos"()
-  alt890_0:
-    set_addr $I10, alt890_1
-    rx885_cur."!mark_push"(0, rx885_pos, $I10)
-  # rx literal  ")"
-    add $I11, rx885_pos, 1
-    gt $I11, rx885_eos, rx885_fail
-    sub $I11, rx885_pos, rx885_off
-    substr $S10, rx885_tgt, $I11, 1
-    ne $S10, ")", rx885_fail
-    add rx885_pos, 1
-    goto alt890_end
-  alt890_1:
-  # rx subrule "FAILGOAL" subtype=method negate=
-    rx885_cur."!cursor_pos"(rx885_pos)
-    $P10 = rx885_cur."FAILGOAL"("')'")
-    unless $P10, rx885_fail
+    $P10."!cursor_names"("pblock")
     rx885_pos = $P10."pos"()
-  alt890_end:
   # rx pass
-    rx885_cur."!cursor_pass"(rx885_pos, "circumfix:sym<sigil>")
-    rx885_cur."!cursor_debug"("PASS  ", "circumfix:sym<sigil>", " at pos=", rx885_pos)
+    rx885_cur."!cursor_pass"(rx885_pos, "circumfix:sym<{ }>")
+    rx885_cur."!cursor_debug"("PASS  ", "circumfix:sym<{ }>", " at pos=", rx885_pos)
     .return (rx885_cur)
   rx885_fail:
 .annotate "line", 4
@@ -10687,173 +10631,201 @@
     jump $I10
   rx885_done:
     rx885_cur."!cursor_fail"()
-    rx885_cur."!cursor_debug"("FAIL  ", "circumfix:sym<sigil>")
+    rx885_cur."!cursor_debug"("FAIL  ", "circumfix:sym<{ }>")
     .return (rx885_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<sigil>"  :subid("218_1261064023.05912") :method
+.sub "!PREFIX__circumfix:sym<{ }>"  :subid("216_1267204702.05125") :method
 .annotate "line", 4
-    $P887 = self."!PREFIX__!subrule"("sigil", "")
-    new $P888, "ResizablePMCArray"
-    push $P888, $P887
-    .return ($P888)
+    new $P887, "ResizablePMCArray"
+    push $P887, "{"
+    .return ($P887)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "semilist"  :subid("219_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 4
-    .local string rx893_tgt
-    .local int rx893_pos
-    .local int rx893_off
-    .local int rx893_eos
-    .local int rx893_rep
-    .local pmc rx893_cur
-    (rx893_cur, rx893_pos, rx893_tgt) = self."!cursor_start"()
-    rx893_cur."!cursor_debug"("START ", "semilist")
-    .lex unicode:"$\x{a2}", rx893_cur
-    .local pmc match
-    .lex "$/", match
-    length rx893_eos, rx893_tgt
-    set rx893_off, 0
-    lt rx893_pos, 2, rx893_start
-    sub rx893_off, rx893_pos, 1
-    substr rx893_tgt, rx893_tgt, rx893_off
-  rx893_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan896_done
-    goto rxscan896_scan
-  rxscan896_loop:
-    ($P10) = rx893_cur."from"()
-    inc $P10
-    set rx893_pos, $P10
-    ge rx893_pos, rx893_eos, rxscan896_done
-  rxscan896_scan:
-    set_addr $I10, rxscan896_loop
-    rx893_cur."!mark_push"(0, rx893_pos, $I10)
-  rxscan896_done:
-.annotate "line", 409
-  # rx subrule "ws" subtype=method negate=
-    rx893_cur."!cursor_pos"(rx893_pos)
-    $P10 = rx893_cur."ws"()
-    unless $P10, rx893_fail
-    rx893_pos = $P10."pos"()
-  # rx subrule "statement" subtype=capture negate=
-    rx893_cur."!cursor_pos"(rx893_pos)
-    $P10 = rx893_cur."statement"()
-    unless $P10, rx893_fail
-    rx893_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("statement")
-    rx893_pos = $P10."pos"()
-  # rx subrule "ws" subtype=method negate=
-    rx893_cur."!cursor_pos"(rx893_pos)
-    $P10 = rx893_cur."ws"()
-    unless $P10, rx893_fail
-    rx893_pos = $P10."pos"()
+.sub "circumfix:sym<sigil>"  :subid("217_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 4
+    .local string rx890_tgt
+    .local int rx890_pos
+    .local int rx890_off
+    .local int rx890_eos
+    .local int rx890_rep
+    .local pmc rx890_cur
+    (rx890_cur, rx890_pos, rx890_tgt) = self."!cursor_start"()
+    rx890_cur."!cursor_debug"("START ", "circumfix:sym<sigil>")
+    .lex unicode:"$\x{a2}", rx890_cur
+    .local pmc match
+    .lex "$/", match
+    length rx890_eos, rx890_tgt
+    set rx890_off, 0
+    lt rx890_pos, 2, rx890_start
+    sub rx890_off, rx890_pos, 1
+    substr rx890_tgt, rx890_tgt, rx890_off
+  rx890_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan894_done
+    goto rxscan894_scan
+  rxscan894_loop:
+    ($P10) = rx890_cur."from"()
+    inc $P10
+    set rx890_pos, $P10
+    ge rx890_pos, rx890_eos, rxscan894_done
+  rxscan894_scan:
+    set_addr $I10, rxscan894_loop
+    rx890_cur."!mark_push"(0, rx890_pos, $I10)
+  rxscan894_done:
+.annotate "line", 411
+  # rx subrule "sigil" subtype=capture negate=
+    rx890_cur."!cursor_pos"(rx890_pos)
+    $P10 = rx890_cur."sigil"()
+    unless $P10, rx890_fail
+    rx890_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sigil")
+    rx890_pos = $P10."pos"()
+  # rx literal  "("
+    add $I11, rx890_pos, 1
+    gt $I11, rx890_eos, rx890_fail
+    sub $I11, rx890_pos, rx890_off
+    substr $S10, rx890_tgt, $I11, 1
+    ne $S10, "(", rx890_fail
+    add rx890_pos, 1
+  # rx subrule "semilist" subtype=capture negate=
+    rx890_cur."!cursor_pos"(rx890_pos)
+    $P10 = rx890_cur."semilist"()
+    unless $P10, rx890_fail
+    rx890_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("semilist")
+    rx890_pos = $P10."pos"()
+  alt895_0:
+    set_addr $I10, alt895_1
+    rx890_cur."!mark_push"(0, rx890_pos, $I10)
+  # rx literal  ")"
+    add $I11, rx890_pos, 1
+    gt $I11, rx890_eos, rx890_fail
+    sub $I11, rx890_pos, rx890_off
+    substr $S10, rx890_tgt, $I11, 1
+    ne $S10, ")", rx890_fail
+    add rx890_pos, 1
+    goto alt895_end
+  alt895_1:
+  # rx subrule "FAILGOAL" subtype=method negate=
+    rx890_cur."!cursor_pos"(rx890_pos)
+    $P10 = rx890_cur."FAILGOAL"("')'")
+    unless $P10, rx890_fail
+    rx890_pos = $P10."pos"()
+  alt895_end:
   # rx pass
-    rx893_cur."!cursor_pass"(rx893_pos, "semilist")
-    rx893_cur."!cursor_debug"("PASS  ", "semilist", " at pos=", rx893_pos)
-    .return (rx893_cur)
-  rx893_fail:
+    rx890_cur."!cursor_pass"(rx890_pos, "circumfix:sym<sigil>")
+    rx890_cur."!cursor_debug"("PASS  ", "circumfix:sym<sigil>", " at pos=", rx890_pos)
+    .return (rx890_cur)
+  rx890_fail:
 .annotate "line", 4
-    (rx893_rep, rx893_pos, $I10, $P10) = rx893_cur."!mark_fail"(0)
-    lt rx893_pos, -1, rx893_done
-    eq rx893_pos, -1, rx893_fail
+    (rx890_rep, rx890_pos, $I10, $P10) = rx890_cur."!mark_fail"(0)
+    lt rx890_pos, -1, rx890_done
+    eq rx890_pos, -1, rx890_fail
     jump $I10
-  rx893_done:
-    rx893_cur."!cursor_fail"()
-    rx893_cur."!cursor_debug"("FAIL  ", "semilist")
-    .return (rx893_cur)
+  rx890_done:
+    rx890_cur."!cursor_fail"()
+    rx890_cur."!cursor_debug"("FAIL  ", "circumfix:sym<sigil>")
+    .return (rx890_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__semilist"  :subid("220_1261064023.05912") :method
+.sub "!PREFIX__circumfix:sym<sigil>"  :subid("218_1267204702.05125") :method
 .annotate "line", 4
-    new $P895, "ResizablePMCArray"
-    push $P895, ""
-    .return ($P895)
+    $P892 = self."!PREFIX__!subrule"("sigil", "")
+    new $P893, "ResizablePMCArray"
+    push $P893, $P892
+    .return ($P893)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixish"  :subid("221_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "semilist"  :subid("219_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 4
+    .local string rx898_tgt
+    .local int rx898_pos
+    .local int rx898_off
+    .local int rx898_eos
+    .local int rx898_rep
+    .local pmc rx898_cur
+    (rx898_cur, rx898_pos, rx898_tgt) = self."!cursor_start"()
+    rx898_cur."!cursor_debug"("START ", "semilist")
+    .lex unicode:"$\x{a2}", rx898_cur
+    .local pmc match
+    .lex "$/", match
+    length rx898_eos, rx898_tgt
+    set rx898_off, 0
+    lt rx898_pos, 2, rx898_start
+    sub rx898_off, rx898_pos, 1
+    substr rx898_tgt, rx898_tgt, rx898_off
+  rx898_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan901_done
+    goto rxscan901_scan
+  rxscan901_loop:
+    ($P10) = rx898_cur."from"()
+    inc $P10
+    set rx898_pos, $P10
+    ge rx898_pos, rx898_eos, rxscan901_done
+  rxscan901_scan:
+    set_addr $I10, rxscan901_loop
+    rx898_cur."!mark_push"(0, rx898_pos, $I10)
+  rxscan901_done:
 .annotate "line", 413
-    .local string rx900_tgt
-    .local int rx900_pos
-    .local int rx900_off
-    .local int rx900_eos
-    .local int rx900_rep
-    .local pmc rx900_cur
-    (rx900_cur, rx900_pos, rx900_tgt) = self."!cursor_start"()
-    rx900_cur."!cursor_debug"("START ", "infixish")
-    .lex unicode:"$\x{a2}", rx900_cur
-    .local pmc match
-    .lex "$/", match
-    length rx900_eos, rx900_tgt
-    set rx900_off, 0
-    lt rx900_pos, 2, rx900_start
-    sub rx900_off, rx900_pos, 1
-    substr rx900_tgt, rx900_tgt, rx900_off
-  rx900_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan903_done
-    goto rxscan903_scan
-  rxscan903_loop:
-    ($P10) = rx900_cur."from"()
-    inc $P10
-    set rx900_pos, $P10
-    ge rx900_pos, rx900_eos, rxscan903_done
-  rxscan903_scan:
-    set_addr $I10, rxscan903_loop
-    rx900_cur."!mark_push"(0, rx900_pos, $I10)
-  rxscan903_done:
-.annotate "line", 432
-  # rx subrule "infixstopper" subtype=zerowidth negate=1
-    rx900_cur."!cursor_pos"(rx900_pos)
-    $P10 = rx900_cur."infixstopper"()
-    if $P10, rx900_fail
-  # rx subrule "infix" subtype=capture negate=
-    rx900_cur."!cursor_pos"(rx900_pos)
-    $P10 = rx900_cur."infix"()
-    unless $P10, rx900_fail
-    rx900_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("OPER=infix")
-    rx900_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx898_cur."!cursor_pos"(rx898_pos)
+    $P10 = rx898_cur."ws"()
+    unless $P10, rx898_fail
+    rx898_pos = $P10."pos"()
+  # rx subrule "statement" subtype=capture negate=
+    rx898_cur."!cursor_pos"(rx898_pos)
+    $P10 = rx898_cur."statement"()
+    unless $P10, rx898_fail
+    rx898_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("statement")
+    rx898_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx898_cur."!cursor_pos"(rx898_pos)
+    $P10 = rx898_cur."ws"()
+    unless $P10, rx898_fail
+    rx898_pos = $P10."pos"()
   # rx pass
-    rx900_cur."!cursor_pass"(rx900_pos, "infixish")
-    rx900_cur."!cursor_debug"("PASS  ", "infixish", " at pos=", rx900_pos)
-    .return (rx900_cur)
-  rx900_fail:
-.annotate "line", 413
-    (rx900_rep, rx900_pos, $I10, $P10) = rx900_cur."!mark_fail"(0)
-    lt rx900_pos, -1, rx900_done
-    eq rx900_pos, -1, rx900_fail
+    rx898_cur."!cursor_pass"(rx898_pos, "semilist")
+    rx898_cur."!cursor_debug"("PASS  ", "semilist", " at pos=", rx898_pos)
+    .return (rx898_cur)
+  rx898_fail:
+.annotate "line", 4
+    (rx898_rep, rx898_pos, $I10, $P10) = rx898_cur."!mark_fail"(0)
+    lt rx898_pos, -1, rx898_done
+    eq rx898_pos, -1, rx898_fail
     jump $I10
-  rx900_done:
-    rx900_cur."!cursor_fail"()
-    rx900_cur."!cursor_debug"("FAIL  ", "infixish")
-    .return (rx900_cur)
+  rx898_done:
+    rx898_cur."!cursor_fail"()
+    rx898_cur."!cursor_debug"("FAIL  ", "semilist")
+    .return (rx898_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("222_1261064023.05912") :method
-.annotate "line", 413
-    new $P902, "ResizablePMCArray"
-    push $P902, ""
-    .return ($P902)
+.sub "!PREFIX__semilist"  :subid("220_1267204702.05125") :method
+.annotate "line", 4
+    new $P900, "ResizablePMCArray"
+    push $P900, ""
+    .return ($P900)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixstopper"  :subid("223_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
+.sub "infixish"  :subid("221_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
     .local string rx905_tgt
     .local int rx905_pos
     .local int rx905_off
@@ -10861,7 +10833,7 @@
     .local int rx905_rep
     .local pmc rx905_cur
     (rx905_cur, rx905_pos, rx905_tgt) = self."!cursor_start"()
-    rx905_cur."!cursor_debug"("START ", "infixstopper")
+    rx905_cur."!cursor_debug"("START ", "infixish")
     .lex unicode:"$\x{a2}", rx905_cur
     .local pmc match
     .lex "$/", match
@@ -10883,32 +10855,39 @@
     set_addr $I10, rxscan908_loop
     rx905_cur."!mark_push"(0, rx905_pos, $I10)
   rxscan908_done:
-.annotate "line", 433
-  # rx subrule "lambda" subtype=zerowidth negate=
+.annotate "line", 436
+  # rx subrule "infixstopper" subtype=zerowidth negate=1
+    rx905_cur."!cursor_pos"(rx905_pos)
+    $P10 = rx905_cur."infixstopper"()
+    if $P10, rx905_fail
+  # rx subrule "infix" subtype=capture negate=
     rx905_cur."!cursor_pos"(rx905_pos)
-    $P10 = rx905_cur."lambda"()
+    $P10 = rx905_cur."infix"()
     unless $P10, rx905_fail
+    rx905_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("OPER=infix")
+    rx905_pos = $P10."pos"()
   # rx pass
-    rx905_cur."!cursor_pass"(rx905_pos, "infixstopper")
-    rx905_cur."!cursor_debug"("PASS  ", "infixstopper", " at pos=", rx905_pos)
+    rx905_cur."!cursor_pass"(rx905_pos, "infixish")
+    rx905_cur."!cursor_debug"("PASS  ", "infixish", " at pos=", rx905_pos)
     .return (rx905_cur)
   rx905_fail:
-.annotate "line", 413
+.annotate "line", 417
     (rx905_rep, rx905_pos, $I10, $P10) = rx905_cur."!mark_fail"(0)
     lt rx905_pos, -1, rx905_done
     eq rx905_pos, -1, rx905_fail
     jump $I10
   rx905_done:
     rx905_cur."!cursor_fail"()
-    rx905_cur."!cursor_debug"("FAIL  ", "infixstopper")
+    rx905_cur."!cursor_debug"("FAIL  ", "infixish")
     .return (rx905_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixstopper"  :subid("224_1261064023.05912") :method
-.annotate "line", 413
+.sub "!PREFIX__infixish"  :subid("222_1267204702.05125") :method
+.annotate "line", 417
     new $P907, "ResizablePMCArray"
     push $P907, ""
     .return ($P907)
@@ -10916,8 +10895,8 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<[ ]>"  :subid("225_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
+.sub "infixstopper"  :subid("223_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
     .local string rx910_tgt
     .local int rx910_pos
     .local int rx910_off
@@ -10925,7 +10904,7 @@
     .local int rx910_rep
     .local pmc rx910_cur
     (rx910_cur, rx910_pos, rx910_tgt) = self."!cursor_start"()
-    rx910_cur."!cursor_debug"("START ", "postcircumfix:sym<[ ]>")
+    rx910_cur."!cursor_debug"("START ", "infixstopper")
     .lex unicode:"$\x{a2}", rx910_cur
     .local pmc match
     .lex "$/", match
@@ -10936,262 +10915,244 @@
     substr rx910_tgt, rx910_tgt, rx910_off
   rx910_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan914_done
-    goto rxscan914_scan
-  rxscan914_loop:
+    ne $I10, -1, rxscan913_done
+    goto rxscan913_scan
+  rxscan913_loop:
     ($P10) = rx910_cur."from"()
     inc $P10
     set rx910_pos, $P10
-    ge rx910_pos, rx910_eos, rxscan914_done
-  rxscan914_scan:
-    set_addr $I10, rxscan914_loop
+    ge rx910_pos, rx910_eos, rxscan913_done
+  rxscan913_scan:
+    set_addr $I10, rxscan913_loop
     rx910_cur."!mark_push"(0, rx910_pos, $I10)
-  rxscan914_done:
-.annotate "line", 436
-  # rx literal  "["
-    add $I11, rx910_pos, 1
-    gt $I11, rx910_eos, rx910_fail
-    sub $I11, rx910_pos, rx910_off
-    substr $S10, rx910_tgt, $I11, 1
-    ne $S10, "[", rx910_fail
-    add rx910_pos, 1
-  # rx subrule "ws" subtype=method negate=
-    rx910_cur."!cursor_pos"(rx910_pos)
-    $P10 = rx910_cur."ws"()
-    unless $P10, rx910_fail
-    rx910_pos = $P10."pos"()
-  # rx subrule "EXPR" subtype=capture negate=
-    rx910_cur."!cursor_pos"(rx910_pos)
-    $P10 = rx910_cur."EXPR"()
-    unless $P10, rx910_fail
-    rx910_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("EXPR")
-    rx910_pos = $P10."pos"()
-  # rx literal  "]"
-    add $I11, rx910_pos, 1
-    gt $I11, rx910_eos, rx910_fail
-    sub $I11, rx910_pos, rx910_off
-    substr $S10, rx910_tgt, $I11, 1
-    ne $S10, "]", rx910_fail
-    add rx910_pos, 1
+  rxscan913_done:
 .annotate "line", 437
-  # rx subrule "O" subtype=capture negate=
+  # rx subrule "lambda" subtype=zerowidth negate=
     rx910_cur."!cursor_pos"(rx910_pos)
-    $P10 = rx910_cur."O"("%methodop")
+    $P10 = rx910_cur."lambda"()
     unless $P10, rx910_fail
-    rx910_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("O")
-    rx910_pos = $P10."pos"()
-.annotate "line", 435
   # rx pass
-    rx910_cur."!cursor_pass"(rx910_pos, "postcircumfix:sym<[ ]>")
-    rx910_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<[ ]>", " at pos=", rx910_pos)
+    rx910_cur."!cursor_pass"(rx910_pos, "infixstopper")
+    rx910_cur."!cursor_debug"("PASS  ", "infixstopper", " at pos=", rx910_pos)
     .return (rx910_cur)
   rx910_fail:
-.annotate "line", 413
+.annotate "line", 417
     (rx910_rep, rx910_pos, $I10, $P10) = rx910_cur."!mark_fail"(0)
     lt rx910_pos, -1, rx910_done
     eq rx910_pos, -1, rx910_fail
     jump $I10
   rx910_done:
     rx910_cur."!cursor_fail"()
-    rx910_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<[ ]>")
+    rx910_cur."!cursor_debug"("FAIL  ", "infixstopper")
     .return (rx910_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("226_1261064023.05912") :method
-.annotate "line", 413
-    $P912 = self."!PREFIX__!subrule"("", "[")
-    new $P913, "ResizablePMCArray"
-    push $P913, $P912
-    .return ($P913)
+.sub "!PREFIX__infixstopper"  :subid("224_1267204702.05125") :method
+.annotate "line", 417
+    new $P912, "ResizablePMCArray"
+    push $P912, ""
+    .return ($P912)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<{ }>"  :subid("227_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx916_tgt
-    .local int rx916_pos
-    .local int rx916_off
-    .local int rx916_eos
-    .local int rx916_rep
-    .local pmc rx916_cur
-    (rx916_cur, rx916_pos, rx916_tgt) = self."!cursor_start"()
-    rx916_cur."!cursor_debug"("START ", "postcircumfix:sym<{ }>")
-    .lex unicode:"$\x{a2}", rx916_cur
-    .local pmc match
-    .lex "$/", match
-    length rx916_eos, rx916_tgt
-    set rx916_off, 0
-    lt rx916_pos, 2, rx916_start
-    sub rx916_off, rx916_pos, 1
-    substr rx916_tgt, rx916_tgt, rx916_off
-  rx916_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan920_done
-    goto rxscan920_scan
-  rxscan920_loop:
-    ($P10) = rx916_cur."from"()
-    inc $P10
-    set rx916_pos, $P10
-    ge rx916_pos, rx916_eos, rxscan920_done
-  rxscan920_scan:
-    set_addr $I10, rxscan920_loop
-    rx916_cur."!mark_push"(0, rx916_pos, $I10)
-  rxscan920_done:
-.annotate "line", 441
-  # rx literal  "{"
-    add $I11, rx916_pos, 1
-    gt $I11, rx916_eos, rx916_fail
-    sub $I11, rx916_pos, rx916_off
-    substr $S10, rx916_tgt, $I11, 1
-    ne $S10, "{", rx916_fail
-    add rx916_pos, 1
-  # rx subrule "ws" subtype=method negate=
-    rx916_cur."!cursor_pos"(rx916_pos)
-    $P10 = rx916_cur."ws"()
-    unless $P10, rx916_fail
-    rx916_pos = $P10."pos"()
+.sub "postcircumfix:sym<[ ]>"  :subid("225_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx915_tgt
+    .local int rx915_pos
+    .local int rx915_off
+    .local int rx915_eos
+    .local int rx915_rep
+    .local pmc rx915_cur
+    (rx915_cur, rx915_pos, rx915_tgt) = self."!cursor_start"()
+    rx915_cur."!cursor_debug"("START ", "postcircumfix:sym<[ ]>")
+    .lex unicode:"$\x{a2}", rx915_cur
+    .local pmc match
+    .lex "$/", match
+    length rx915_eos, rx915_tgt
+    set rx915_off, 0
+    lt rx915_pos, 2, rx915_start
+    sub rx915_off, rx915_pos, 1
+    substr rx915_tgt, rx915_tgt, rx915_off
+  rx915_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan919_done
+    goto rxscan919_scan
+  rxscan919_loop:
+    ($P10) = rx915_cur."from"()
+    inc $P10
+    set rx915_pos, $P10
+    ge rx915_pos, rx915_eos, rxscan919_done
+  rxscan919_scan:
+    set_addr $I10, rxscan919_loop
+    rx915_cur."!mark_push"(0, rx915_pos, $I10)
+  rxscan919_done:
+.annotate "line", 440
+  # rx literal  "["
+    add $I11, rx915_pos, 1
+    gt $I11, rx915_eos, rx915_fail
+    sub $I11, rx915_pos, rx915_off
+    substr $S10, rx915_tgt, $I11, 1
+    ne $S10, "[", rx915_fail
+    add rx915_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx915_cur."!cursor_pos"(rx915_pos)
+    $P10 = rx915_cur."ws"()
+    unless $P10, rx915_fail
+    rx915_pos = $P10."pos"()
   # rx subrule "EXPR" subtype=capture negate=
-    rx916_cur."!cursor_pos"(rx916_pos)
-    $P10 = rx916_cur."EXPR"()
-    unless $P10, rx916_fail
-    rx916_cur."!mark_push"(0, -1, 0, $P10)
+    rx915_cur."!cursor_pos"(rx915_pos)
+    $P10 = rx915_cur."EXPR"()
+    unless $P10, rx915_fail
+    rx915_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("EXPR")
-    rx916_pos = $P10."pos"()
-  # rx literal  "}"
-    add $I11, rx916_pos, 1
-    gt $I11, rx916_eos, rx916_fail
-    sub $I11, rx916_pos, rx916_off
-    substr $S10, rx916_tgt, $I11, 1
-    ne $S10, "}", rx916_fail
-    add rx916_pos, 1
-.annotate "line", 442
+    rx915_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx915_pos, 1
+    gt $I11, rx915_eos, rx915_fail
+    sub $I11, rx915_pos, rx915_off
+    substr $S10, rx915_tgt, $I11, 1
+    ne $S10, "]", rx915_fail
+    add rx915_pos, 1
+.annotate "line", 441
   # rx subrule "O" subtype=capture negate=
-    rx916_cur."!cursor_pos"(rx916_pos)
-    $P10 = rx916_cur."O"("%methodop")
-    unless $P10, rx916_fail
-    rx916_cur."!mark_push"(0, -1, 0, $P10)
+    rx915_cur."!cursor_pos"(rx915_pos)
+    $P10 = rx915_cur."O"("%methodop")
+    unless $P10, rx915_fail
+    rx915_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx916_pos = $P10."pos"()
-.annotate "line", 440
+    rx915_pos = $P10."pos"()
+.annotate "line", 439
   # rx pass
-    rx916_cur."!cursor_pass"(rx916_pos, "postcircumfix:sym<{ }>")
-    rx916_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<{ }>", " at pos=", rx916_pos)
-    .return (rx916_cur)
-  rx916_fail:
-.annotate "line", 413
-    (rx916_rep, rx916_pos, $I10, $P10) = rx916_cur."!mark_fail"(0)
-    lt rx916_pos, -1, rx916_done
-    eq rx916_pos, -1, rx916_fail
+    rx915_cur."!cursor_pass"(rx915_pos, "postcircumfix:sym<[ ]>")
+    rx915_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<[ ]>", " at pos=", rx915_pos)
+    .return (rx915_cur)
+  rx915_fail:
+.annotate "line", 417
+    (rx915_rep, rx915_pos, $I10, $P10) = rx915_cur."!mark_fail"(0)
+    lt rx915_pos, -1, rx915_done
+    eq rx915_pos, -1, rx915_fail
     jump $I10
-  rx916_done:
-    rx916_cur."!cursor_fail"()
-    rx916_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<{ }>")
-    .return (rx916_cur)
+  rx915_done:
+    rx915_cur."!cursor_fail"()
+    rx915_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<[ ]>")
+    .return (rx915_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("228_1261064023.05912") :method
-.annotate "line", 413
-    $P918 = self."!PREFIX__!subrule"("", "{")
-    new $P919, "ResizablePMCArray"
-    push $P919, $P918
-    .return ($P919)
+.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("226_1267204702.05125") :method
+.annotate "line", 417
+    $P917 = self."!PREFIX__!subrule"("", "[")
+    new $P918, "ResizablePMCArray"
+    push $P918, $P917
+    .return ($P918)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<ang>"  :subid("229_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx922_tgt
-    .local int rx922_pos
-    .local int rx922_off
-    .local int rx922_eos
-    .local int rx922_rep
-    .local pmc rx922_cur
-    (rx922_cur, rx922_pos, rx922_tgt) = self."!cursor_start"()
-    rx922_cur."!cursor_debug"("START ", "postcircumfix:sym<ang>")
-    .lex unicode:"$\x{a2}", rx922_cur
-    .local pmc match
-    .lex "$/", match
-    length rx922_eos, rx922_tgt
-    set rx922_off, 0
-    lt rx922_pos, 2, rx922_start
-    sub rx922_off, rx922_pos, 1
-    substr rx922_tgt, rx922_tgt, rx922_off
-  rx922_start:
+.sub "postcircumfix:sym<{ }>"  :subid("227_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx921_tgt
+    .local int rx921_pos
+    .local int rx921_off
+    .local int rx921_eos
+    .local int rx921_rep
+    .local pmc rx921_cur
+    (rx921_cur, rx921_pos, rx921_tgt) = self."!cursor_start"()
+    rx921_cur."!cursor_debug"("START ", "postcircumfix:sym<{ }>")
+    .lex unicode:"$\x{a2}", rx921_cur
+    .local pmc match
+    .lex "$/", match
+    length rx921_eos, rx921_tgt
+    set rx921_off, 0
+    lt rx921_pos, 2, rx921_start
+    sub rx921_off, rx921_pos, 1
+    substr rx921_tgt, rx921_tgt, rx921_off
+  rx921_start:
     $I10 = self.'from'()
     ne $I10, -1, rxscan925_done
     goto rxscan925_scan
   rxscan925_loop:
-    ($P10) = rx922_cur."from"()
+    ($P10) = rx921_cur."from"()
     inc $P10
-    set rx922_pos, $P10
-    ge rx922_pos, rx922_eos, rxscan925_done
+    set rx921_pos, $P10
+    ge rx921_pos, rx921_eos, rxscan925_done
   rxscan925_scan:
     set_addr $I10, rxscan925_loop
-    rx922_cur."!mark_push"(0, rx922_pos, $I10)
+    rx921_cur."!mark_push"(0, rx921_pos, $I10)
   rxscan925_done:
+.annotate "line", 445
+  # rx literal  "{"
+    add $I11, rx921_pos, 1
+    gt $I11, rx921_eos, rx921_fail
+    sub $I11, rx921_pos, rx921_off
+    substr $S10, rx921_tgt, $I11, 1
+    ne $S10, "{", rx921_fail
+    add rx921_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx921_cur."!cursor_pos"(rx921_pos)
+    $P10 = rx921_cur."ws"()
+    unless $P10, rx921_fail
+    rx921_pos = $P10."pos"()
+  # rx subrule "EXPR" subtype=capture negate=
+    rx921_cur."!cursor_pos"(rx921_pos)
+    $P10 = rx921_cur."EXPR"()
+    unless $P10, rx921_fail
+    rx921_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx921_pos = $P10."pos"()
+  # rx literal  "}"
+    add $I11, rx921_pos, 1
+    gt $I11, rx921_eos, rx921_fail
+    sub $I11, rx921_pos, rx921_off
+    substr $S10, rx921_tgt, $I11, 1
+    ne $S10, "}", rx921_fail
+    add rx921_pos, 1
 .annotate "line", 446
-  # rx enumcharlist negate=0 zerowidth
-    ge rx922_pos, rx922_eos, rx922_fail
-    sub $I10, rx922_pos, rx922_off
-    substr $S10, rx922_tgt, $I10, 1
-    index $I11, "<", $S10
-    lt $I11, 0, rx922_fail
-  # rx subrule "quote_EXPR" subtype=capture negate=
-    rx922_cur."!cursor_pos"(rx922_pos)
-    $P10 = rx922_cur."quote_EXPR"(":q")
-    unless $P10, rx922_fail
-    rx922_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("quote_EXPR")
-    rx922_pos = $P10."pos"()
-.annotate "line", 447
   # rx subrule "O" subtype=capture negate=
-    rx922_cur."!cursor_pos"(rx922_pos)
-    $P10 = rx922_cur."O"("%methodop")
-    unless $P10, rx922_fail
-    rx922_cur."!mark_push"(0, -1, 0, $P10)
+    rx921_cur."!cursor_pos"(rx921_pos)
+    $P10 = rx921_cur."O"("%methodop")
+    unless $P10, rx921_fail
+    rx921_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx922_pos = $P10."pos"()
-.annotate "line", 445
+    rx921_pos = $P10."pos"()
+.annotate "line", 444
   # rx pass
-    rx922_cur."!cursor_pass"(rx922_pos, "postcircumfix:sym<ang>")
-    rx922_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<ang>", " at pos=", rx922_pos)
-    .return (rx922_cur)
-  rx922_fail:
-.annotate "line", 413
-    (rx922_rep, rx922_pos, $I10, $P10) = rx922_cur."!mark_fail"(0)
-    lt rx922_pos, -1, rx922_done
-    eq rx922_pos, -1, rx922_fail
+    rx921_cur."!cursor_pass"(rx921_pos, "postcircumfix:sym<{ }>")
+    rx921_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<{ }>", " at pos=", rx921_pos)
+    .return (rx921_cur)
+  rx921_fail:
+.annotate "line", 417
+    (rx921_rep, rx921_pos, $I10, $P10) = rx921_cur."!mark_fail"(0)
+    lt rx921_pos, -1, rx921_done
+    eq rx921_pos, -1, rx921_fail
     jump $I10
-  rx922_done:
-    rx922_cur."!cursor_fail"()
-    rx922_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<ang>")
-    .return (rx922_cur)
+  rx921_done:
+    rx921_cur."!cursor_fail"()
+    rx921_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<{ }>")
+    .return (rx921_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("230_1261064023.05912") :method
-.annotate "line", 413
+.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("228_1267204702.05125") :method
+.annotate "line", 417
+    $P923 = self."!PREFIX__!subrule"("", "{")
     new $P924, "ResizablePMCArray"
-    push $P924, "<"
+    push $P924, $P923
     .return ($P924)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<( )>"  :subid("231_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
+.sub "postcircumfix:sym<ang>"  :subid("229_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
     .local string rx927_tgt
     .local int rx927_pos
     .local int rx927_off
@@ -11199,7 +11160,7 @@
     .local int rx927_rep
     .local pmc rx927_cur
     (rx927_cur, rx927_pos, rx927_tgt) = self."!cursor_start"()
-    rx927_cur."!cursor_debug"("START ", "postcircumfix:sym<( )>")
+    rx927_cur."!cursor_debug"("START ", "postcircumfix:sym<ang>")
     .lex unicode:"$\x{a2}", rx927_cur
     .local pmc match
     .lex "$/", match
@@ -11210,45 +11171,32 @@
     substr rx927_tgt, rx927_tgt, rx927_off
   rx927_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan931_done
-    goto rxscan931_scan
-  rxscan931_loop:
+    ne $I10, -1, rxscan930_done
+    goto rxscan930_scan
+  rxscan930_loop:
     ($P10) = rx927_cur."from"()
     inc $P10
     set rx927_pos, $P10
-    ge rx927_pos, rx927_eos, rxscan931_done
-  rxscan931_scan:
-    set_addr $I10, rxscan931_loop
+    ge rx927_pos, rx927_eos, rxscan930_done
+  rxscan930_scan:
+    set_addr $I10, rxscan930_loop
     rx927_cur."!mark_push"(0, rx927_pos, $I10)
-  rxscan931_done:
-.annotate "line", 451
-  # rx literal  "("
-    add $I11, rx927_pos, 1
-    gt $I11, rx927_eos, rx927_fail
-    sub $I11, rx927_pos, rx927_off
-    substr $S10, rx927_tgt, $I11, 1
-    ne $S10, "(", rx927_fail
-    add rx927_pos, 1
-  # rx subrule "ws" subtype=method negate=
-    rx927_cur."!cursor_pos"(rx927_pos)
-    $P10 = rx927_cur."ws"()
-    unless $P10, rx927_fail
-    rx927_pos = $P10."pos"()
-  # rx subrule "arglist" subtype=capture negate=
+  rxscan930_done:
+.annotate "line", 450
+  # rx enumcharlist negate=0 zerowidth
+    ge rx927_pos, rx927_eos, rx927_fail
+    sub $I10, rx927_pos, rx927_off
+    substr $S10, rx927_tgt, $I10, 1
+    index $I11, "<", $S10
+    lt $I11, 0, rx927_fail
+  # rx subrule "quote_EXPR" subtype=capture negate=
     rx927_cur."!cursor_pos"(rx927_pos)
-    $P10 = rx927_cur."arglist"()
+    $P10 = rx927_cur."quote_EXPR"(":q")
     unless $P10, rx927_fail
     rx927_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("arglist")
+    $P10."!cursor_names"("quote_EXPR")
     rx927_pos = $P10."pos"()
-  # rx literal  ")"
-    add $I11, rx927_pos, 1
-    gt $I11, rx927_eos, rx927_fail
-    sub $I11, rx927_pos, rx927_off
-    substr $S10, rx927_tgt, $I11, 1
-    ne $S10, ")", rx927_fail
-    add rx927_pos, 1
-.annotate "line", 452
+.annotate "line", 451
   # rx subrule "O" subtype=capture negate=
     rx927_cur."!cursor_pos"(rx927_pos)
     $P10 = rx927_cur."O"("%methodop")
@@ -11256,4087 +11204,4108 @@
     rx927_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
     rx927_pos = $P10."pos"()
-.annotate "line", 450
+.annotate "line", 449
   # rx pass
-    rx927_cur."!cursor_pass"(rx927_pos, "postcircumfix:sym<( )>")
-    rx927_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<( )>", " at pos=", rx927_pos)
+    rx927_cur."!cursor_pass"(rx927_pos, "postcircumfix:sym<ang>")
+    rx927_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<ang>", " at pos=", rx927_pos)
     .return (rx927_cur)
   rx927_fail:
-.annotate "line", 413
+.annotate "line", 417
     (rx927_rep, rx927_pos, $I10, $P10) = rx927_cur."!mark_fail"(0)
     lt rx927_pos, -1, rx927_done
     eq rx927_pos, -1, rx927_fail
     jump $I10
   rx927_done:
     rx927_cur."!cursor_fail"()
-    rx927_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<( )>")
+    rx927_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<ang>")
     .return (rx927_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("232_1261064023.05912") :method
-.annotate "line", 413
-    $P929 = self."!PREFIX__!subrule"("", "(")
-    new $P930, "ResizablePMCArray"
-    push $P930, $P929
-    .return ($P930)
+.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("230_1267204702.05125") :method
+.annotate "line", 417
+    new $P929, "ResizablePMCArray"
+    push $P929, "<"
+    .return ($P929)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<.>"  :subid("233_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx933_tgt
-    .local int rx933_pos
-    .local int rx933_off
-    .local int rx933_eos
-    .local int rx933_rep
-    .local pmc rx933_cur
-    (rx933_cur, rx933_pos, rx933_tgt) = self."!cursor_start"()
-    rx933_cur."!cursor_debug"("START ", "postfix:sym<.>")
-    .lex unicode:"$\x{a2}", rx933_cur
-    .local pmc match
-    .lex "$/", match
-    length rx933_eos, rx933_tgt
-    set rx933_off, 0
-    lt rx933_pos, 2, rx933_start
-    sub rx933_off, rx933_pos, 1
-    substr rx933_tgt, rx933_tgt, rx933_off
-  rx933_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan937_done
-    goto rxscan937_scan
-  rxscan937_loop:
-    ($P10) = rx933_cur."from"()
-    inc $P10
-    set rx933_pos, $P10
-    ge rx933_pos, rx933_eos, rxscan937_done
-  rxscan937_scan:
-    set_addr $I10, rxscan937_loop
-    rx933_cur."!mark_push"(0, rx933_pos, $I10)
-  rxscan937_done:
+.sub "postcircumfix:sym<( )>"  :subid("231_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx932_tgt
+    .local int rx932_pos
+    .local int rx932_off
+    .local int rx932_eos
+    .local int rx932_rep
+    .local pmc rx932_cur
+    (rx932_cur, rx932_pos, rx932_tgt) = self."!cursor_start"()
+    rx932_cur."!cursor_debug"("START ", "postcircumfix:sym<( )>")
+    .lex unicode:"$\x{a2}", rx932_cur
+    .local pmc match
+    .lex "$/", match
+    length rx932_eos, rx932_tgt
+    set rx932_off, 0
+    lt rx932_pos, 2, rx932_start
+    sub rx932_off, rx932_pos, 1
+    substr rx932_tgt, rx932_tgt, rx932_off
+  rx932_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan936_done
+    goto rxscan936_scan
+  rxscan936_loop:
+    ($P10) = rx932_cur."from"()
+    inc $P10
+    set rx932_pos, $P10
+    ge rx932_pos, rx932_eos, rxscan936_done
+  rxscan936_scan:
+    set_addr $I10, rxscan936_loop
+    rx932_cur."!mark_push"(0, rx932_pos, $I10)
+  rxscan936_done:
 .annotate "line", 455
-  # rx subrule "dotty" subtype=capture negate=
-    rx933_cur."!cursor_pos"(rx933_pos)
-    $P10 = rx933_cur."dotty"()
-    unless $P10, rx933_fail
-    rx933_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("dotty")
-    rx933_pos = $P10."pos"()
+  # rx literal  "("
+    add $I11, rx932_pos, 1
+    gt $I11, rx932_eos, rx932_fail
+    sub $I11, rx932_pos, rx932_off
+    substr $S10, rx932_tgt, $I11, 1
+    ne $S10, "(", rx932_fail
+    add rx932_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx932_cur."!cursor_pos"(rx932_pos)
+    $P10 = rx932_cur."ws"()
+    unless $P10, rx932_fail
+    rx932_pos = $P10."pos"()
+  # rx subrule "arglist" subtype=capture negate=
+    rx932_cur."!cursor_pos"(rx932_pos)
+    $P10 = rx932_cur."arglist"()
+    unless $P10, rx932_fail
+    rx932_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("arglist")
+    rx932_pos = $P10."pos"()
+  # rx literal  ")"
+    add $I11, rx932_pos, 1
+    gt $I11, rx932_eos, rx932_fail
+    sub $I11, rx932_pos, rx932_off
+    substr $S10, rx932_tgt, $I11, 1
+    ne $S10, ")", rx932_fail
+    add rx932_pos, 1
+.annotate "line", 456
   # rx subrule "O" subtype=capture negate=
-    rx933_cur."!cursor_pos"(rx933_pos)
-    $P10 = rx933_cur."O"("%methodop")
-    unless $P10, rx933_fail
-    rx933_cur."!mark_push"(0, -1, 0, $P10)
+    rx932_cur."!cursor_pos"(rx932_pos)
+    $P10 = rx932_cur."O"("%methodop")
+    unless $P10, rx932_fail
+    rx932_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx933_pos = $P10."pos"()
+    rx932_pos = $P10."pos"()
+.annotate "line", 454
   # rx pass
-    rx933_cur."!cursor_pass"(rx933_pos, "postfix:sym<.>")
-    rx933_cur."!cursor_debug"("PASS  ", "postfix:sym<.>", " at pos=", rx933_pos)
-    .return (rx933_cur)
-  rx933_fail:
-.annotate "line", 413
-    (rx933_rep, rx933_pos, $I10, $P10) = rx933_cur."!mark_fail"(0)
-    lt rx933_pos, -1, rx933_done
-    eq rx933_pos, -1, rx933_fail
+    rx932_cur."!cursor_pass"(rx932_pos, "postcircumfix:sym<( )>")
+    rx932_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<( )>", " at pos=", rx932_pos)
+    .return (rx932_cur)
+  rx932_fail:
+.annotate "line", 417
+    (rx932_rep, rx932_pos, $I10, $P10) = rx932_cur."!mark_fail"(0)
+    lt rx932_pos, -1, rx932_done
+    eq rx932_pos, -1, rx932_fail
     jump $I10
-  rx933_done:
-    rx933_cur."!cursor_fail"()
-    rx933_cur."!cursor_debug"("FAIL  ", "postfix:sym<.>")
-    .return (rx933_cur)
+  rx932_done:
+    rx932_cur."!cursor_fail"()
+    rx932_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<( )>")
+    .return (rx932_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<.>"  :subid("234_1261064023.05912") :method
-.annotate "line", 413
-    $P935 = self."!PREFIX__!subrule"("dotty", "")
-    new $P936, "ResizablePMCArray"
-    push $P936, $P935
-    .return ($P936)
+.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("232_1267204702.05125") :method
+.annotate "line", 417
+    $P934 = self."!PREFIX__!subrule"("", "(")
+    new $P935, "ResizablePMCArray"
+    push $P935, $P934
+    .return ($P935)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<++>"  :subid("235_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx939_tgt
-    .local int rx939_pos
-    .local int rx939_off
-    .local int rx939_eos
-    .local int rx939_rep
-    .local pmc rx939_cur
-    (rx939_cur, rx939_pos, rx939_tgt) = self."!cursor_start"()
-    rx939_cur."!cursor_debug"("START ", "prefix:sym<++>")
-    .lex unicode:"$\x{a2}", rx939_cur
-    .local pmc match
-    .lex "$/", match
-    length rx939_eos, rx939_tgt
-    set rx939_off, 0
-    lt rx939_pos, 2, rx939_start
-    sub rx939_off, rx939_pos, 1
-    substr rx939_tgt, rx939_tgt, rx939_off
-  rx939_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan943_done
-    goto rxscan943_scan
-  rxscan943_loop:
-    ($P10) = rx939_cur."from"()
-    inc $P10
-    set rx939_pos, $P10
-    ge rx939_pos, rx939_eos, rxscan943_done
-  rxscan943_scan:
-    set_addr $I10, rxscan943_loop
-    rx939_cur."!mark_push"(0, rx939_pos, $I10)
-  rxscan943_done:
-.annotate "line", 457
-  # rx subcapture "sym"
-    set_addr $I10, rxcap_944_fail
-    rx939_cur."!mark_push"(0, rx939_pos, $I10)
-  # rx literal  "++"
-    add $I11, rx939_pos, 2
-    gt $I11, rx939_eos, rx939_fail
-    sub $I11, rx939_pos, rx939_off
-    substr $S10, rx939_tgt, $I11, 2
-    ne $S10, "++", rx939_fail
-    add rx939_pos, 2
-    set_addr $I10, rxcap_944_fail
-    ($I12, $I11) = rx939_cur."!mark_peek"($I10)
-    rx939_cur."!cursor_pos"($I11)
-    ($P10) = rx939_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx939_pos, "")
-    rx939_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("sym")
-    goto rxcap_944_done
-  rxcap_944_fail:
-    goto rx939_fail
-  rxcap_944_done:
+.sub "postfix:sym<.>"  :subid("233_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx938_tgt
+    .local int rx938_pos
+    .local int rx938_off
+    .local int rx938_eos
+    .local int rx938_rep
+    .local pmc rx938_cur
+    (rx938_cur, rx938_pos, rx938_tgt) = self."!cursor_start"()
+    rx938_cur."!cursor_debug"("START ", "postfix:sym<.>")
+    .lex unicode:"$\x{a2}", rx938_cur
+    .local pmc match
+    .lex "$/", match
+    length rx938_eos, rx938_tgt
+    set rx938_off, 0
+    lt rx938_pos, 2, rx938_start
+    sub rx938_off, rx938_pos, 1
+    substr rx938_tgt, rx938_tgt, rx938_off
+  rx938_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan942_done
+    goto rxscan942_scan
+  rxscan942_loop:
+    ($P10) = rx938_cur."from"()
+    inc $P10
+    set rx938_pos, $P10
+    ge rx938_pos, rx938_eos, rxscan942_done
+  rxscan942_scan:
+    set_addr $I10, rxscan942_loop
+    rx938_cur."!mark_push"(0, rx938_pos, $I10)
+  rxscan942_done:
+.annotate "line", 459
+  # rx subrule "dotty" subtype=capture negate=
+    rx938_cur."!cursor_pos"(rx938_pos)
+    $P10 = rx938_cur."dotty"()
+    unless $P10, rx938_fail
+    rx938_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("dotty")
+    rx938_pos = $P10."pos"()
   # rx subrule "O" subtype=capture negate=
-    rx939_cur."!cursor_pos"(rx939_pos)
-    $P10 = rx939_cur."O"("%autoincrement, :pirop<inc>")
-    unless $P10, rx939_fail
-    rx939_cur."!mark_push"(0, -1, 0, $P10)
+    rx938_cur."!cursor_pos"(rx938_pos)
+    $P10 = rx938_cur."O"("%methodop")
+    unless $P10, rx938_fail
+    rx938_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx939_pos = $P10."pos"()
+    rx938_pos = $P10."pos"()
   # rx pass
-    rx939_cur."!cursor_pass"(rx939_pos, "prefix:sym<++>")
-    rx939_cur."!cursor_debug"("PASS  ", "prefix:sym<++>", " at pos=", rx939_pos)
-    .return (rx939_cur)
-  rx939_fail:
-.annotate "line", 413
-    (rx939_rep, rx939_pos, $I10, $P10) = rx939_cur."!mark_fail"(0)
-    lt rx939_pos, -1, rx939_done
-    eq rx939_pos, -1, rx939_fail
+    rx938_cur."!cursor_pass"(rx938_pos, "postfix:sym<.>")
+    rx938_cur."!cursor_debug"("PASS  ", "postfix:sym<.>", " at pos=", rx938_pos)
+    .return (rx938_cur)
+  rx938_fail:
+.annotate "line", 417
+    (rx938_rep, rx938_pos, $I10, $P10) = rx938_cur."!mark_fail"(0)
+    lt rx938_pos, -1, rx938_done
+    eq rx938_pos, -1, rx938_fail
     jump $I10
-  rx939_done:
-    rx939_cur."!cursor_fail"()
-    rx939_cur."!cursor_debug"("FAIL  ", "prefix:sym<++>")
-    .return (rx939_cur)
+  rx938_done:
+    rx938_cur."!cursor_fail"()
+    rx938_cur."!cursor_debug"("FAIL  ", "postfix:sym<.>")
+    .return (rx938_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<++>"  :subid("236_1261064023.05912") :method
-.annotate "line", 413
-    $P941 = self."!PREFIX__!subrule"("O", "++")
-    new $P942, "ResizablePMCArray"
-    push $P942, $P941
-    .return ($P942)
+.sub "!PREFIX__postfix:sym<.>"  :subid("234_1267204702.05125") :method
+.annotate "line", 417
+    $P940 = self."!PREFIX__!subrule"("dotty", "")
+    new $P941, "ResizablePMCArray"
+    push $P941, $P940
+    .return ($P941)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<-->"  :subid("237_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx946_tgt
-    .local int rx946_pos
-    .local int rx946_off
-    .local int rx946_eos
-    .local int rx946_rep
-    .local pmc rx946_cur
-    (rx946_cur, rx946_pos, rx946_tgt) = self."!cursor_start"()
-    rx946_cur."!cursor_debug"("START ", "prefix:sym<-->")
-    .lex unicode:"$\x{a2}", rx946_cur
-    .local pmc match
-    .lex "$/", match
-    length rx946_eos, rx946_tgt
-    set rx946_off, 0
-    lt rx946_pos, 2, rx946_start
-    sub rx946_off, rx946_pos, 1
-    substr rx946_tgt, rx946_tgt, rx946_off
-  rx946_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan950_done
-    goto rxscan950_scan
-  rxscan950_loop:
-    ($P10) = rx946_cur."from"()
-    inc $P10
-    set rx946_pos, $P10
-    ge rx946_pos, rx946_eos, rxscan950_done
-  rxscan950_scan:
-    set_addr $I10, rxscan950_loop
-    rx946_cur."!mark_push"(0, rx946_pos, $I10)
-  rxscan950_done:
-.annotate "line", 458
+.sub "prefix:sym<++>"  :subid("235_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx944_tgt
+    .local int rx944_pos
+    .local int rx944_off
+    .local int rx944_eos
+    .local int rx944_rep
+    .local pmc rx944_cur
+    (rx944_cur, rx944_pos, rx944_tgt) = self."!cursor_start"()
+    rx944_cur."!cursor_debug"("START ", "prefix:sym<++>")
+    .lex unicode:"$\x{a2}", rx944_cur
+    .local pmc match
+    .lex "$/", match
+    length rx944_eos, rx944_tgt
+    set rx944_off, 0
+    lt rx944_pos, 2, rx944_start
+    sub rx944_off, rx944_pos, 1
+    substr rx944_tgt, rx944_tgt, rx944_off
+  rx944_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan948_done
+    goto rxscan948_scan
+  rxscan948_loop:
+    ($P10) = rx944_cur."from"()
+    inc $P10
+    set rx944_pos, $P10
+    ge rx944_pos, rx944_eos, rxscan948_done
+  rxscan948_scan:
+    set_addr $I10, rxscan948_loop
+    rx944_cur."!mark_push"(0, rx944_pos, $I10)
+  rxscan948_done:
+.annotate "line", 461
   # rx subcapture "sym"
-    set_addr $I10, rxcap_951_fail
-    rx946_cur."!mark_push"(0, rx946_pos, $I10)
-  # rx literal  "--"
-    add $I11, rx946_pos, 2
-    gt $I11, rx946_eos, rx946_fail
-    sub $I11, rx946_pos, rx946_off
-    substr $S10, rx946_tgt, $I11, 2
-    ne $S10, "--", rx946_fail
-    add rx946_pos, 2
-    set_addr $I10, rxcap_951_fail
-    ($I12, $I11) = rx946_cur."!mark_peek"($I10)
-    rx946_cur."!cursor_pos"($I11)
-    ($P10) = rx946_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx946_pos, "")
-    rx946_cur."!mark_push"(0, -1, 0, $P10)
+    set_addr $I10, rxcap_949_fail
+    rx944_cur."!mark_push"(0, rx944_pos, $I10)
+  # rx literal  "++"
+    add $I11, rx944_pos, 2
+    gt $I11, rx944_eos, rx944_fail
+    sub $I11, rx944_pos, rx944_off
+    substr $S10, rx944_tgt, $I11, 2
+    ne $S10, "++", rx944_fail
+    add rx944_pos, 2
+    set_addr $I10, rxcap_949_fail
+    ($I12, $I11) = rx944_cur."!mark_peek"($I10)
+    rx944_cur."!cursor_pos"($I11)
+    ($P10) = rx944_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx944_pos, "")
+    rx944_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_951_done
-  rxcap_951_fail:
-    goto rx946_fail
-  rxcap_951_done:
+    goto rxcap_949_done
+  rxcap_949_fail:
+    goto rx944_fail
+  rxcap_949_done:
   # rx subrule "O" subtype=capture negate=
-    rx946_cur."!cursor_pos"(rx946_pos)
-    $P10 = rx946_cur."O"("%autoincrement, :pirop<dec>")
-    unless $P10, rx946_fail
-    rx946_cur."!mark_push"(0, -1, 0, $P10)
+    rx944_cur."!cursor_pos"(rx944_pos)
+    $P10 = rx944_cur."O"("%autoincrement, :pirop<inc>")
+    unless $P10, rx944_fail
+    rx944_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx946_pos = $P10."pos"()
+    rx944_pos = $P10."pos"()
   # rx pass
-    rx946_cur."!cursor_pass"(rx946_pos, "prefix:sym<-->")
-    rx946_cur."!cursor_debug"("PASS  ", "prefix:sym<-->", " at pos=", rx946_pos)
-    .return (rx946_cur)
-  rx946_fail:
-.annotate "line", 413
-    (rx946_rep, rx946_pos, $I10, $P10) = rx946_cur."!mark_fail"(0)
-    lt rx946_pos, -1, rx946_done
-    eq rx946_pos, -1, rx946_fail
+    rx944_cur."!cursor_pass"(rx944_pos, "prefix:sym<++>")
+    rx944_cur."!cursor_debug"("PASS  ", "prefix:sym<++>", " at pos=", rx944_pos)
+    .return (rx944_cur)
+  rx944_fail:
+.annotate "line", 417
+    (rx944_rep, rx944_pos, $I10, $P10) = rx944_cur."!mark_fail"(0)
+    lt rx944_pos, -1, rx944_done
+    eq rx944_pos, -1, rx944_fail
     jump $I10
-  rx946_done:
-    rx946_cur."!cursor_fail"()
-    rx946_cur."!cursor_debug"("FAIL  ", "prefix:sym<-->")
-    .return (rx946_cur)
+  rx944_done:
+    rx944_cur."!cursor_fail"()
+    rx944_cur."!cursor_debug"("FAIL  ", "prefix:sym<++>")
+    .return (rx944_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<-->"  :subid("238_1261064023.05912") :method
-.annotate "line", 413
-    $P948 = self."!PREFIX__!subrule"("O", "--")
-    new $P949, "ResizablePMCArray"
-    push $P949, $P948
-    .return ($P949)
+.sub "!PREFIX__prefix:sym<++>"  :subid("236_1267204702.05125") :method
+.annotate "line", 417
+    $P946 = self."!PREFIX__!subrule"("O", "++")
+    new $P947, "ResizablePMCArray"
+    push $P947, $P946
+    .return ($P947)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<++>"  :subid("239_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx953_tgt
-    .local int rx953_pos
-    .local int rx953_off
-    .local int rx953_eos
-    .local int rx953_rep
-    .local pmc rx953_cur
-    (rx953_cur, rx953_pos, rx953_tgt) = self."!cursor_start"()
-    rx953_cur."!cursor_debug"("START ", "postfix:sym<++>")
-    .lex unicode:"$\x{a2}", rx953_cur
-    .local pmc match
-    .lex "$/", match
-    length rx953_eos, rx953_tgt
-    set rx953_off, 0
-    lt rx953_pos, 2, rx953_start
-    sub rx953_off, rx953_pos, 1
-    substr rx953_tgt, rx953_tgt, rx953_off
-  rx953_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan957_done
-    goto rxscan957_scan
-  rxscan957_loop:
-    ($P10) = rx953_cur."from"()
-    inc $P10
-    set rx953_pos, $P10
-    ge rx953_pos, rx953_eos, rxscan957_done
-  rxscan957_scan:
-    set_addr $I10, rxscan957_loop
-    rx953_cur."!mark_push"(0, rx953_pos, $I10)
-  rxscan957_done:
-.annotate "line", 461
+.sub "prefix:sym<-->"  :subid("237_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx951_tgt
+    .local int rx951_pos
+    .local int rx951_off
+    .local int rx951_eos
+    .local int rx951_rep
+    .local pmc rx951_cur
+    (rx951_cur, rx951_pos, rx951_tgt) = self."!cursor_start"()
+    rx951_cur."!cursor_debug"("START ", "prefix:sym<-->")
+    .lex unicode:"$\x{a2}", rx951_cur
+    .local pmc match
+    .lex "$/", match
+    length rx951_eos, rx951_tgt
+    set rx951_off, 0
+    lt rx951_pos, 2, rx951_start
+    sub rx951_off, rx951_pos, 1
+    substr rx951_tgt, rx951_tgt, rx951_off
+  rx951_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan955_done
+    goto rxscan955_scan
+  rxscan955_loop:
+    ($P10) = rx951_cur."from"()
+    inc $P10
+    set rx951_pos, $P10
+    ge rx951_pos, rx951_eos, rxscan955_done
+  rxscan955_scan:
+    set_addr $I10, rxscan955_loop
+    rx951_cur."!mark_push"(0, rx951_pos, $I10)
+  rxscan955_done:
+.annotate "line", 462
   # rx subcapture "sym"
-    set_addr $I10, rxcap_958_fail
-    rx953_cur."!mark_push"(0, rx953_pos, $I10)
-  # rx literal  "++"
-    add $I11, rx953_pos, 2
-    gt $I11, rx953_eos, rx953_fail
-    sub $I11, rx953_pos, rx953_off
-    substr $S10, rx953_tgt, $I11, 2
-    ne $S10, "++", rx953_fail
-    add rx953_pos, 2
-    set_addr $I10, rxcap_958_fail
-    ($I12, $I11) = rx953_cur."!mark_peek"($I10)
-    rx953_cur."!cursor_pos"($I11)
-    ($P10) = rx953_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx953_pos, "")
-    rx953_cur."!mark_push"(0, -1, 0, $P10)
+    set_addr $I10, rxcap_956_fail
+    rx951_cur."!mark_push"(0, rx951_pos, $I10)
+  # rx literal  "--"
+    add $I11, rx951_pos, 2
+    gt $I11, rx951_eos, rx951_fail
+    sub $I11, rx951_pos, rx951_off
+    substr $S10, rx951_tgt, $I11, 2
+    ne $S10, "--", rx951_fail
+    add rx951_pos, 2
+    set_addr $I10, rxcap_956_fail
+    ($I12, $I11) = rx951_cur."!mark_peek"($I10)
+    rx951_cur."!cursor_pos"($I11)
+    ($P10) = rx951_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx951_pos, "")
+    rx951_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_958_done
-  rxcap_958_fail:
-    goto rx953_fail
-  rxcap_958_done:
+    goto rxcap_956_done
+  rxcap_956_fail:
+    goto rx951_fail
+  rxcap_956_done:
   # rx subrule "O" subtype=capture negate=
-    rx953_cur."!cursor_pos"(rx953_pos)
-    $P10 = rx953_cur."O"("%autoincrement")
-    unless $P10, rx953_fail
-    rx953_cur."!mark_push"(0, -1, 0, $P10)
+    rx951_cur."!cursor_pos"(rx951_pos)
+    $P10 = rx951_cur."O"("%autoincrement, :pirop<dec>")
+    unless $P10, rx951_fail
+    rx951_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx953_pos = $P10."pos"()
+    rx951_pos = $P10."pos"()
   # rx pass
-    rx953_cur."!cursor_pass"(rx953_pos, "postfix:sym<++>")
-    rx953_cur."!cursor_debug"("PASS  ", "postfix:sym<++>", " at pos=", rx953_pos)
-    .return (rx953_cur)
-  rx953_fail:
-.annotate "line", 413
-    (rx953_rep, rx953_pos, $I10, $P10) = rx953_cur."!mark_fail"(0)
-    lt rx953_pos, -1, rx953_done
-    eq rx953_pos, -1, rx953_fail
+    rx951_cur."!cursor_pass"(rx951_pos, "prefix:sym<-->")
+    rx951_cur."!cursor_debug"("PASS  ", "prefix:sym<-->", " at pos=", rx951_pos)
+    .return (rx951_cur)
+  rx951_fail:
+.annotate "line", 417
+    (rx951_rep, rx951_pos, $I10, $P10) = rx951_cur."!mark_fail"(0)
+    lt rx951_pos, -1, rx951_done
+    eq rx951_pos, -1, rx951_fail
     jump $I10
-  rx953_done:
-    rx953_cur."!cursor_fail"()
-    rx953_cur."!cursor_debug"("FAIL  ", "postfix:sym<++>")
-    .return (rx953_cur)
+  rx951_done:
+    rx951_cur."!cursor_fail"()
+    rx951_cur."!cursor_debug"("FAIL  ", "prefix:sym<-->")
+    .return (rx951_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<++>"  :subid("240_1261064023.05912") :method
-.annotate "line", 413
-    $P955 = self."!PREFIX__!subrule"("O", "++")
-    new $P956, "ResizablePMCArray"
-    push $P956, $P955
-    .return ($P956)
+.sub "!PREFIX__prefix:sym<-->"  :subid("238_1267204702.05125") :method
+.annotate "line", 417
+    $P953 = self."!PREFIX__!subrule"("O", "--")
+    new $P954, "ResizablePMCArray"
+    push $P954, $P953
+    .return ($P954)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<-->"  :subid("241_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx960_tgt
-    .local int rx960_pos
-    .local int rx960_off
-    .local int rx960_eos
-    .local int rx960_rep
-    .local pmc rx960_cur
-    (rx960_cur, rx960_pos, rx960_tgt) = self."!cursor_start"()
-    rx960_cur."!cursor_debug"("START ", "postfix:sym<-->")
-    .lex unicode:"$\x{a2}", rx960_cur
-    .local pmc match
-    .lex "$/", match
-    length rx960_eos, rx960_tgt
-    set rx960_off, 0
-    lt rx960_pos, 2, rx960_start
-    sub rx960_off, rx960_pos, 1
-    substr rx960_tgt, rx960_tgt, rx960_off
-  rx960_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan964_done
-    goto rxscan964_scan
-  rxscan964_loop:
-    ($P10) = rx960_cur."from"()
-    inc $P10
-    set rx960_pos, $P10
-    ge rx960_pos, rx960_eos, rxscan964_done
-  rxscan964_scan:
-    set_addr $I10, rxscan964_loop
-    rx960_cur."!mark_push"(0, rx960_pos, $I10)
-  rxscan964_done:
-.annotate "line", 462
-  # rx subcapture "sym"
-    set_addr $I10, rxcap_965_fail
-    rx960_cur."!mark_push"(0, rx960_pos, $I10)
+.sub "postfix:sym<++>"  :subid("239_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx958_tgt
+    .local int rx958_pos
+    .local int rx958_off
+    .local int rx958_eos
+    .local int rx958_rep
+    .local pmc rx958_cur
+    (rx958_cur, rx958_pos, rx958_tgt) = self."!cursor_start"()
+    rx958_cur."!cursor_debug"("START ", "postfix:sym<++>")
+    .lex unicode:"$\x{a2}", rx958_cur
+    .local pmc match
+    .lex "$/", match
+    length rx958_eos, rx958_tgt
+    set rx958_off, 0
+    lt rx958_pos, 2, rx958_start
+    sub rx958_off, rx958_pos, 1
+    substr rx958_tgt, rx958_tgt, rx958_off
+  rx958_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan962_done
+    goto rxscan962_scan
+  rxscan962_loop:
+    ($P10) = rx958_cur."from"()
+    inc $P10
+    set rx958_pos, $P10
+    ge rx958_pos, rx958_eos, rxscan962_done
+  rxscan962_scan:
+    set_addr $I10, rxscan962_loop
+    rx958_cur."!mark_push"(0, rx958_pos, $I10)
+  rxscan962_done:
+.annotate "line", 465
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_963_fail
+    rx958_cur."!mark_push"(0, rx958_pos, $I10)
+  # rx literal  "++"
+    add $I11, rx958_pos, 2
+    gt $I11, rx958_eos, rx958_fail
+    sub $I11, rx958_pos, rx958_off
+    substr $S10, rx958_tgt, $I11, 2
+    ne $S10, "++", rx958_fail
+    add rx958_pos, 2
+    set_addr $I10, rxcap_963_fail
+    ($I12, $I11) = rx958_cur."!mark_peek"($I10)
+    rx958_cur."!cursor_pos"($I11)
+    ($P10) = rx958_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx958_pos, "")
+    rx958_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_963_done
+  rxcap_963_fail:
+    goto rx958_fail
+  rxcap_963_done:
+  # rx subrule "O" subtype=capture negate=
+    rx958_cur."!cursor_pos"(rx958_pos)
+    $P10 = rx958_cur."O"("%autoincrement")
+    unless $P10, rx958_fail
+    rx958_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx958_pos = $P10."pos"()
+  # rx pass
+    rx958_cur."!cursor_pass"(rx958_pos, "postfix:sym<++>")
+    rx958_cur."!cursor_debug"("PASS  ", "postfix:sym<++>", " at pos=", rx958_pos)
+    .return (rx958_cur)
+  rx958_fail:
+.annotate "line", 417
+    (rx958_rep, rx958_pos, $I10, $P10) = rx958_cur."!mark_fail"(0)
+    lt rx958_pos, -1, rx958_done
+    eq rx958_pos, -1, rx958_fail
+    jump $I10
+  rx958_done:
+    rx958_cur."!cursor_fail"()
+    rx958_cur."!cursor_debug"("FAIL  ", "postfix:sym<++>")
+    .return (rx958_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__postfix:sym<++>"  :subid("240_1267204702.05125") :method
+.annotate "line", 417
+    $P960 = self."!PREFIX__!subrule"("O", "++")
+    new $P961, "ResizablePMCArray"
+    push $P961, $P960
+    .return ($P961)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "postfix:sym<-->"  :subid("241_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx965_tgt
+    .local int rx965_pos
+    .local int rx965_off
+    .local int rx965_eos
+    .local int rx965_rep
+    .local pmc rx965_cur
+    (rx965_cur, rx965_pos, rx965_tgt) = self."!cursor_start"()
+    rx965_cur."!cursor_debug"("START ", "postfix:sym<-->")
+    .lex unicode:"$\x{a2}", rx965_cur
+    .local pmc match
+    .lex "$/", match
+    length rx965_eos, rx965_tgt
+    set rx965_off, 0
+    lt rx965_pos, 2, rx965_start
+    sub rx965_off, rx965_pos, 1
+    substr rx965_tgt, rx965_tgt, rx965_off
+  rx965_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan969_done
+    goto rxscan969_scan
+  rxscan969_loop:
+    ($P10) = rx965_cur."from"()
+    inc $P10
+    set rx965_pos, $P10
+    ge rx965_pos, rx965_eos, rxscan969_done
+  rxscan969_scan:
+    set_addr $I10, rxscan969_loop
+    rx965_cur."!mark_push"(0, rx965_pos, $I10)
+  rxscan969_done:
+.annotate "line", 466
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_970_fail
+    rx965_cur."!mark_push"(0, rx965_pos, $I10)
   # rx literal  "--"
-    add $I11, rx960_pos, 2
-    gt $I11, rx960_eos, rx960_fail
-    sub $I11, rx960_pos, rx960_off
-    substr $S10, rx960_tgt, $I11, 2
-    ne $S10, "--", rx960_fail
-    add rx960_pos, 2
-    set_addr $I10, rxcap_965_fail
-    ($I12, $I11) = rx960_cur."!mark_peek"($I10)
-    rx960_cur."!cursor_pos"($I11)
-    ($P10) = rx960_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx960_pos, "")
-    rx960_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx965_pos, 2
+    gt $I11, rx965_eos, rx965_fail
+    sub $I11, rx965_pos, rx965_off
+    substr $S10, rx965_tgt, $I11, 2
+    ne $S10, "--", rx965_fail
+    add rx965_pos, 2
+    set_addr $I10, rxcap_970_fail
+    ($I12, $I11) = rx965_cur."!mark_peek"($I10)
+    rx965_cur."!cursor_pos"($I11)
+    ($P10) = rx965_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx965_pos, "")
+    rx965_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_965_done
-  rxcap_965_fail:
-    goto rx960_fail
-  rxcap_965_done:
+    goto rxcap_970_done
+  rxcap_970_fail:
+    goto rx965_fail
+  rxcap_970_done:
   # rx subrule "O" subtype=capture negate=
-    rx960_cur."!cursor_pos"(rx960_pos)
-    $P10 = rx960_cur."O"("%autoincrement")
-    unless $P10, rx960_fail
-    rx960_cur."!mark_push"(0, -1, 0, $P10)
+    rx965_cur."!cursor_pos"(rx965_pos)
+    $P10 = rx965_cur."O"("%autoincrement")
+    unless $P10, rx965_fail
+    rx965_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx960_pos = $P10."pos"()
+    rx965_pos = $P10."pos"()
   # rx pass
-    rx960_cur."!cursor_pass"(rx960_pos, "postfix:sym<-->")
-    rx960_cur."!cursor_debug"("PASS  ", "postfix:sym<-->", " at pos=", rx960_pos)
-    .return (rx960_cur)
-  rx960_fail:
-.annotate "line", 413
-    (rx960_rep, rx960_pos, $I10, $P10) = rx960_cur."!mark_fail"(0)
-    lt rx960_pos, -1, rx960_done
-    eq rx960_pos, -1, rx960_fail
+    rx965_cur."!cursor_pass"(rx965_pos, "postfix:sym<-->")
+    rx965_cur."!cursor_debug"("PASS  ", "postfix:sym<-->", " at pos=", rx965_pos)
+    .return (rx965_cur)
+  rx965_fail:
+.annotate "line", 417
+    (rx965_rep, rx965_pos, $I10, $P10) = rx965_cur."!mark_fail"(0)
+    lt rx965_pos, -1, rx965_done
+    eq rx965_pos, -1, rx965_fail
     jump $I10
-  rx960_done:
-    rx960_cur."!cursor_fail"()
-    rx960_cur."!cursor_debug"("FAIL  ", "postfix:sym<-->")
-    .return (rx960_cur)
+  rx965_done:
+    rx965_cur."!cursor_fail"()
+    rx965_cur."!cursor_debug"("FAIL  ", "postfix:sym<-->")
+    .return (rx965_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<-->"  :subid("242_1261064023.05912") :method
-.annotate "line", 413
-    $P962 = self."!PREFIX__!subrule"("O", "--")
-    new $P963, "ResizablePMCArray"
-    push $P963, $P962
-    .return ($P963)
+.sub "!PREFIX__postfix:sym<-->"  :subid("242_1267204702.05125") :method
+.annotate "line", 417
+    $P967 = self."!PREFIX__!subrule"("O", "--")
+    new $P968, "ResizablePMCArray"
+    push $P968, $P967
+    .return ($P968)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<**>"  :subid("243_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx967_tgt
-    .local int rx967_pos
-    .local int rx967_off
-    .local int rx967_eos
-    .local int rx967_rep
-    .local pmc rx967_cur
-    (rx967_cur, rx967_pos, rx967_tgt) = self."!cursor_start"()
-    rx967_cur."!cursor_debug"("START ", "infix:sym<**>")
-    .lex unicode:"$\x{a2}", rx967_cur
-    .local pmc match
-    .lex "$/", match
-    length rx967_eos, rx967_tgt
-    set rx967_off, 0
-    lt rx967_pos, 2, rx967_start
-    sub rx967_off, rx967_pos, 1
-    substr rx967_tgt, rx967_tgt, rx967_off
-  rx967_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan971_done
-    goto rxscan971_scan
-  rxscan971_loop:
-    ($P10) = rx967_cur."from"()
-    inc $P10
-    set rx967_pos, $P10
-    ge rx967_pos, rx967_eos, rxscan971_done
-  rxscan971_scan:
-    set_addr $I10, rxscan971_loop
-    rx967_cur."!mark_push"(0, rx967_pos, $I10)
-  rxscan971_done:
-.annotate "line", 464
+.sub "infix:sym<**>"  :subid("243_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx972_tgt
+    .local int rx972_pos
+    .local int rx972_off
+    .local int rx972_eos
+    .local int rx972_rep
+    .local pmc rx972_cur
+    (rx972_cur, rx972_pos, rx972_tgt) = self."!cursor_start"()
+    rx972_cur."!cursor_debug"("START ", "infix:sym<**>")
+    .lex unicode:"$\x{a2}", rx972_cur
+    .local pmc match
+    .lex "$/", match
+    length rx972_eos, rx972_tgt
+    set rx972_off, 0
+    lt rx972_pos, 2, rx972_start
+    sub rx972_off, rx972_pos, 1
+    substr rx972_tgt, rx972_tgt, rx972_off
+  rx972_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan976_done
+    goto rxscan976_scan
+  rxscan976_loop:
+    ($P10) = rx972_cur."from"()
+    inc $P10
+    set rx972_pos, $P10
+    ge rx972_pos, rx972_eos, rxscan976_done
+  rxscan976_scan:
+    set_addr $I10, rxscan976_loop
+    rx972_cur."!mark_push"(0, rx972_pos, $I10)
+  rxscan976_done:
+.annotate "line", 468
   # rx subcapture "sym"
-    set_addr $I10, rxcap_972_fail
-    rx967_cur."!mark_push"(0, rx967_pos, $I10)
+    set_addr $I10, rxcap_977_fail
+    rx972_cur."!mark_push"(0, rx972_pos, $I10)
   # rx literal  "**"
-    add $I11, rx967_pos, 2
-    gt $I11, rx967_eos, rx967_fail
-    sub $I11, rx967_pos, rx967_off
-    substr $S10, rx967_tgt, $I11, 2
-    ne $S10, "**", rx967_fail
-    add rx967_pos, 2
-    set_addr $I10, rxcap_972_fail
-    ($I12, $I11) = rx967_cur."!mark_peek"($I10)
-    rx967_cur."!cursor_pos"($I11)
-    ($P10) = rx967_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx967_pos, "")
-    rx967_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx972_pos, 2
+    gt $I11, rx972_eos, rx972_fail
+    sub $I11, rx972_pos, rx972_off
+    substr $S10, rx972_tgt, $I11, 2
+    ne $S10, "**", rx972_fail
+    add rx972_pos, 2
+    set_addr $I10, rxcap_977_fail
+    ($I12, $I11) = rx972_cur."!mark_peek"($I10)
+    rx972_cur."!cursor_pos"($I11)
+    ($P10) = rx972_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx972_pos, "")
+    rx972_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_972_done
-  rxcap_972_fail:
-    goto rx967_fail
-  rxcap_972_done:
+    goto rxcap_977_done
+  rxcap_977_fail:
+    goto rx972_fail
+  rxcap_977_done:
   # rx subrule "O" subtype=capture negate=
-    rx967_cur."!cursor_pos"(rx967_pos)
-    $P10 = rx967_cur."O"("%exponentiation, :pirop<pow>")
-    unless $P10, rx967_fail
-    rx967_cur."!mark_push"(0, -1, 0, $P10)
+    rx972_cur."!cursor_pos"(rx972_pos)
+    $P10 = rx972_cur."O"("%exponentiation, :pirop<pow>")
+    unless $P10, rx972_fail
+    rx972_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx967_pos = $P10."pos"()
+    rx972_pos = $P10."pos"()
   # rx pass
-    rx967_cur."!cursor_pass"(rx967_pos, "infix:sym<**>")
-    rx967_cur."!cursor_debug"("PASS  ", "infix:sym<**>", " at pos=", rx967_pos)
-    .return (rx967_cur)
-  rx967_fail:
-.annotate "line", 413
-    (rx967_rep, rx967_pos, $I10, $P10) = rx967_cur."!mark_fail"(0)
-    lt rx967_pos, -1, rx967_done
-    eq rx967_pos, -1, rx967_fail
+    rx972_cur."!cursor_pass"(rx972_pos, "infix:sym<**>")
+    rx972_cur."!cursor_debug"("PASS  ", "infix:sym<**>", " at pos=", rx972_pos)
+    .return (rx972_cur)
+  rx972_fail:
+.annotate "line", 417
+    (rx972_rep, rx972_pos, $I10, $P10) = rx972_cur."!mark_fail"(0)
+    lt rx972_pos, -1, rx972_done
+    eq rx972_pos, -1, rx972_fail
     jump $I10
-  rx967_done:
-    rx967_cur."!cursor_fail"()
-    rx967_cur."!cursor_debug"("FAIL  ", "infix:sym<**>")
-    .return (rx967_cur)
+  rx972_done:
+    rx972_cur."!cursor_fail"()
+    rx972_cur."!cursor_debug"("FAIL  ", "infix:sym<**>")
+    .return (rx972_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<**>"  :subid("244_1261064023.05912") :method
-.annotate "line", 413
-    $P969 = self."!PREFIX__!subrule"("O", "**")
-    new $P970, "ResizablePMCArray"
-    push $P970, $P969
-    .return ($P970)
+.sub "!PREFIX__infix:sym<**>"  :subid("244_1267204702.05125") :method
+.annotate "line", 417
+    $P974 = self."!PREFIX__!subrule"("O", "**")
+    new $P975, "ResizablePMCArray"
+    push $P975, $P974
+    .return ($P975)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<+>"  :subid("245_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx974_tgt
-    .local int rx974_pos
-    .local int rx974_off
-    .local int rx974_eos
-    .local int rx974_rep
-    .local pmc rx974_cur
-    (rx974_cur, rx974_pos, rx974_tgt) = self."!cursor_start"()
-    rx974_cur."!cursor_debug"("START ", "prefix:sym<+>")
-    .lex unicode:"$\x{a2}", rx974_cur
-    .local pmc match
-    .lex "$/", match
-    length rx974_eos, rx974_tgt
-    set rx974_off, 0
-    lt rx974_pos, 2, rx974_start
-    sub rx974_off, rx974_pos, 1
-    substr rx974_tgt, rx974_tgt, rx974_off
-  rx974_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan978_done
-    goto rxscan978_scan
-  rxscan978_loop:
-    ($P10) = rx974_cur."from"()
-    inc $P10
-    set rx974_pos, $P10
-    ge rx974_pos, rx974_eos, rxscan978_done
-  rxscan978_scan:
-    set_addr $I10, rxscan978_loop
-    rx974_cur."!mark_push"(0, rx974_pos, $I10)
-  rxscan978_done:
-.annotate "line", 466
+.sub "prefix:sym<+>"  :subid("245_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx979_tgt
+    .local int rx979_pos
+    .local int rx979_off
+    .local int rx979_eos
+    .local int rx979_rep
+    .local pmc rx979_cur
+    (rx979_cur, rx979_pos, rx979_tgt) = self."!cursor_start"()
+    rx979_cur."!cursor_debug"("START ", "prefix:sym<+>")
+    .lex unicode:"$\x{a2}", rx979_cur
+    .local pmc match
+    .lex "$/", match
+    length rx979_eos, rx979_tgt
+    set rx979_off, 0
+    lt rx979_pos, 2, rx979_start
+    sub rx979_off, rx979_pos, 1
+    substr rx979_tgt, rx979_tgt, rx979_off
+  rx979_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan983_done
+    goto rxscan983_scan
+  rxscan983_loop:
+    ($P10) = rx979_cur."from"()
+    inc $P10
+    set rx979_pos, $P10
+    ge rx979_pos, rx979_eos, rxscan983_done
+  rxscan983_scan:
+    set_addr $I10, rxscan983_loop
+    rx979_cur."!mark_push"(0, rx979_pos, $I10)
+  rxscan983_done:
+.annotate "line", 470
   # rx subcapture "sym"
-    set_addr $I10, rxcap_979_fail
-    rx974_cur."!mark_push"(0, rx974_pos, $I10)
+    set_addr $I10, rxcap_984_fail
+    rx979_cur."!mark_push"(0, rx979_pos, $I10)
   # rx literal  "+"
-    add $I11, rx974_pos, 1
-    gt $I11, rx974_eos, rx974_fail
-    sub $I11, rx974_pos, rx974_off
-    substr $S10, rx974_tgt, $I11, 1
-    ne $S10, "+", rx974_fail
-    add rx974_pos, 1
-    set_addr $I10, rxcap_979_fail
-    ($I12, $I11) = rx974_cur."!mark_peek"($I10)
-    rx974_cur."!cursor_pos"($I11)
-    ($P10) = rx974_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx974_pos, "")
-    rx974_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx979_pos, 1
+    gt $I11, rx979_eos, rx979_fail
+    sub $I11, rx979_pos, rx979_off
+    substr $S10, rx979_tgt, $I11, 1
+    ne $S10, "+", rx979_fail
+    add rx979_pos, 1
+    set_addr $I10, rxcap_984_fail
+    ($I12, $I11) = rx979_cur."!mark_peek"($I10)
+    rx979_cur."!cursor_pos"($I11)
+    ($P10) = rx979_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx979_pos, "")
+    rx979_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_979_done
-  rxcap_979_fail:
-    goto rx974_fail
-  rxcap_979_done:
+    goto rxcap_984_done
+  rxcap_984_fail:
+    goto rx979_fail
+  rxcap_984_done:
   # rx subrule "O" subtype=capture negate=
-    rx974_cur."!cursor_pos"(rx974_pos)
-    $P10 = rx974_cur."O"("%symbolic_unary, :pirop<set N*>")
-    unless $P10, rx974_fail
-    rx974_cur."!mark_push"(0, -1, 0, $P10)
+    rx979_cur."!cursor_pos"(rx979_pos)
+    $P10 = rx979_cur."O"("%symbolic_unary, :pirop<set N*>")
+    unless $P10, rx979_fail
+    rx979_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx974_pos = $P10."pos"()
+    rx979_pos = $P10."pos"()
   # rx pass
-    rx974_cur."!cursor_pass"(rx974_pos, "prefix:sym<+>")
-    rx974_cur."!cursor_debug"("PASS  ", "prefix:sym<+>", " at pos=", rx974_pos)
-    .return (rx974_cur)
-  rx974_fail:
-.annotate "line", 413
-    (rx974_rep, rx974_pos, $I10, $P10) = rx974_cur."!mark_fail"(0)
-    lt rx974_pos, -1, rx974_done
-    eq rx974_pos, -1, rx974_fail
+    rx979_cur."!cursor_pass"(rx979_pos, "prefix:sym<+>")
+    rx979_cur."!cursor_debug"("PASS  ", "prefix:sym<+>", " at pos=", rx979_pos)
+    .return (rx979_cur)
+  rx979_fail:
+.annotate "line", 417
+    (rx979_rep, rx979_pos, $I10, $P10) = rx979_cur."!mark_fail"(0)
+    lt rx979_pos, -1, rx979_done
+    eq rx979_pos, -1, rx979_fail
     jump $I10
-  rx974_done:
-    rx974_cur."!cursor_fail"()
-    rx974_cur."!cursor_debug"("FAIL  ", "prefix:sym<+>")
-    .return (rx974_cur)
+  rx979_done:
+    rx979_cur."!cursor_fail"()
+    rx979_cur."!cursor_debug"("FAIL  ", "prefix:sym<+>")
+    .return (rx979_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<+>"  :subid("246_1261064023.05912") :method
-.annotate "line", 413
-    $P976 = self."!PREFIX__!subrule"("O", "+")
-    new $P977, "ResizablePMCArray"
-    push $P977, $P976
-    .return ($P977)
+.sub "!PREFIX__prefix:sym<+>"  :subid("246_1267204702.05125") :method
+.annotate "line", 417
+    $P981 = self."!PREFIX__!subrule"("O", "+")
+    new $P982, "ResizablePMCArray"
+    push $P982, $P981
+    .return ($P982)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<~>"  :subid("247_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx981_tgt
-    .local int rx981_pos
-    .local int rx981_off
-    .local int rx981_eos
-    .local int rx981_rep
-    .local pmc rx981_cur
-    (rx981_cur, rx981_pos, rx981_tgt) = self."!cursor_start"()
-    rx981_cur."!cursor_debug"("START ", "prefix:sym<~>")
-    .lex unicode:"$\x{a2}", rx981_cur
-    .local pmc match
-    .lex "$/", match
-    length rx981_eos, rx981_tgt
-    set rx981_off, 0
-    lt rx981_pos, 2, rx981_start
-    sub rx981_off, rx981_pos, 1
-    substr rx981_tgt, rx981_tgt, rx981_off
-  rx981_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan985_done
-    goto rxscan985_scan
-  rxscan985_loop:
-    ($P10) = rx981_cur."from"()
-    inc $P10
-    set rx981_pos, $P10
-    ge rx981_pos, rx981_eos, rxscan985_done
-  rxscan985_scan:
-    set_addr $I10, rxscan985_loop
-    rx981_cur."!mark_push"(0, rx981_pos, $I10)
-  rxscan985_done:
-.annotate "line", 467
+.sub "prefix:sym<~>"  :subid("247_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx986_tgt
+    .local int rx986_pos
+    .local int rx986_off
+    .local int rx986_eos
+    .local int rx986_rep
+    .local pmc rx986_cur
+    (rx986_cur, rx986_pos, rx986_tgt) = self."!cursor_start"()
+    rx986_cur."!cursor_debug"("START ", "prefix:sym<~>")
+    .lex unicode:"$\x{a2}", rx986_cur
+    .local pmc match
+    .lex "$/", match
+    length rx986_eos, rx986_tgt
+    set rx986_off, 0
+    lt rx986_pos, 2, rx986_start
+    sub rx986_off, rx986_pos, 1
+    substr rx986_tgt, rx986_tgt, rx986_off
+  rx986_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan990_done
+    goto rxscan990_scan
+  rxscan990_loop:
+    ($P10) = rx986_cur."from"()
+    inc $P10
+    set rx986_pos, $P10
+    ge rx986_pos, rx986_eos, rxscan990_done
+  rxscan990_scan:
+    set_addr $I10, rxscan990_loop
+    rx986_cur."!mark_push"(0, rx986_pos, $I10)
+  rxscan990_done:
+.annotate "line", 471
   # rx subcapture "sym"
-    set_addr $I10, rxcap_986_fail
-    rx981_cur."!mark_push"(0, rx981_pos, $I10)
+    set_addr $I10, rxcap_991_fail
+    rx986_cur."!mark_push"(0, rx986_pos, $I10)
   # rx literal  "~"
-    add $I11, rx981_pos, 1
-    gt $I11, rx981_eos, rx981_fail
-    sub $I11, rx981_pos, rx981_off
-    substr $S10, rx981_tgt, $I11, 1
-    ne $S10, "~", rx981_fail
-    add rx981_pos, 1
-    set_addr $I10, rxcap_986_fail
-    ($I12, $I11) = rx981_cur."!mark_peek"($I10)
-    rx981_cur."!cursor_pos"($I11)
-    ($P10) = rx981_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx981_pos, "")
-    rx981_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx986_pos, 1
+    gt $I11, rx986_eos, rx986_fail
+    sub $I11, rx986_pos, rx986_off
+    substr $S10, rx986_tgt, $I11, 1
+    ne $S10, "~", rx986_fail
+    add rx986_pos, 1
+    set_addr $I10, rxcap_991_fail
+    ($I12, $I11) = rx986_cur."!mark_peek"($I10)
+    rx986_cur."!cursor_pos"($I11)
+    ($P10) = rx986_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx986_pos, "")
+    rx986_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_986_done
-  rxcap_986_fail:
-    goto rx981_fail
-  rxcap_986_done:
+    goto rxcap_991_done
+  rxcap_991_fail:
+    goto rx986_fail
+  rxcap_991_done:
   # rx subrule "O" subtype=capture negate=
-    rx981_cur."!cursor_pos"(rx981_pos)
-    $P10 = rx981_cur."O"("%symbolic_unary, :pirop<set S*>")
-    unless $P10, rx981_fail
-    rx981_cur."!mark_push"(0, -1, 0, $P10)
+    rx986_cur."!cursor_pos"(rx986_pos)
+    $P10 = rx986_cur."O"("%symbolic_unary, :pirop<set S*>")
+    unless $P10, rx986_fail
+    rx986_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx981_pos = $P10."pos"()
+    rx986_pos = $P10."pos"()
   # rx pass
-    rx981_cur."!cursor_pass"(rx981_pos, "prefix:sym<~>")
-    rx981_cur."!cursor_debug"("PASS  ", "prefix:sym<~>", " at pos=", rx981_pos)
-    .return (rx981_cur)
-  rx981_fail:
-.annotate "line", 413
-    (rx981_rep, rx981_pos, $I10, $P10) = rx981_cur."!mark_fail"(0)
-    lt rx981_pos, -1, rx981_done
-    eq rx981_pos, -1, rx981_fail
+    rx986_cur."!cursor_pass"(rx986_pos, "prefix:sym<~>")
+    rx986_cur."!cursor_debug"("PASS  ", "prefix:sym<~>", " at pos=", rx986_pos)
+    .return (rx986_cur)
+  rx986_fail:
+.annotate "line", 417
+    (rx986_rep, rx986_pos, $I10, $P10) = rx986_cur."!mark_fail"(0)
+    lt rx986_pos, -1, rx986_done
+    eq rx986_pos, -1, rx986_fail
     jump $I10
-  rx981_done:
-    rx981_cur."!cursor_fail"()
-    rx981_cur."!cursor_debug"("FAIL  ", "prefix:sym<~>")
-    .return (rx981_cur)
+  rx986_done:
+    rx986_cur."!cursor_fail"()
+    rx986_cur."!cursor_debug"("FAIL  ", "prefix:sym<~>")
+    .return (rx986_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<~>"  :subid("248_1261064023.05912") :method
-.annotate "line", 413
-    $P983 = self."!PREFIX__!subrule"("O", "~")
-    new $P984, "ResizablePMCArray"
-    push $P984, $P983
-    .return ($P984)
+.sub "!PREFIX__prefix:sym<~>"  :subid("248_1267204702.05125") :method
+.annotate "line", 417
+    $P988 = self."!PREFIX__!subrule"("O", "~")
+    new $P989, "ResizablePMCArray"
+    push $P989, $P988
+    .return ($P989)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<->"  :subid("249_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx988_tgt
-    .local int rx988_pos
-    .local int rx988_off
-    .local int rx988_eos
-    .local int rx988_rep
-    .local pmc rx988_cur
-    (rx988_cur, rx988_pos, rx988_tgt) = self."!cursor_start"()
-    rx988_cur."!cursor_debug"("START ", "prefix:sym<->")
-    .lex unicode:"$\x{a2}", rx988_cur
-    .local pmc match
-    .lex "$/", match
-    length rx988_eos, rx988_tgt
-    set rx988_off, 0
-    lt rx988_pos, 2, rx988_start
-    sub rx988_off, rx988_pos, 1
-    substr rx988_tgt, rx988_tgt, rx988_off
-  rx988_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan991_done
-    goto rxscan991_scan
-  rxscan991_loop:
-    ($P10) = rx988_cur."from"()
-    inc $P10
-    set rx988_pos, $P10
-    ge rx988_pos, rx988_eos, rxscan991_done
-  rxscan991_scan:
-    set_addr $I10, rxscan991_loop
-    rx988_cur."!mark_push"(0, rx988_pos, $I10)
-  rxscan991_done:
-.annotate "line", 468
+.sub "prefix:sym<->"  :subid("249_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx993_tgt
+    .local int rx993_pos
+    .local int rx993_off
+    .local int rx993_eos
+    .local int rx993_rep
+    .local pmc rx993_cur
+    (rx993_cur, rx993_pos, rx993_tgt) = self."!cursor_start"()
+    rx993_cur."!cursor_debug"("START ", "prefix:sym<->")
+    .lex unicode:"$\x{a2}", rx993_cur
+    .local pmc match
+    .lex "$/", match
+    length rx993_eos, rx993_tgt
+    set rx993_off, 0
+    lt rx993_pos, 2, rx993_start
+    sub rx993_off, rx993_pos, 1
+    substr rx993_tgt, rx993_tgt, rx993_off
+  rx993_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan996_done
+    goto rxscan996_scan
+  rxscan996_loop:
+    ($P10) = rx993_cur."from"()
+    inc $P10
+    set rx993_pos, $P10
+    ge rx993_pos, rx993_eos, rxscan996_done
+  rxscan996_scan:
+    set_addr $I10, rxscan996_loop
+    rx993_cur."!mark_push"(0, rx993_pos, $I10)
+  rxscan996_done:
+.annotate "line", 472
   # rx subcapture "sym"
-    set_addr $I10, rxcap_992_fail
-    rx988_cur."!mark_push"(0, rx988_pos, $I10)
+    set_addr $I10, rxcap_997_fail
+    rx993_cur."!mark_push"(0, rx993_pos, $I10)
   # rx literal  "-"
-    add $I11, rx988_pos, 1
-    gt $I11, rx988_eos, rx988_fail
-    sub $I11, rx988_pos, rx988_off
-    substr $S10, rx988_tgt, $I11, 1
-    ne $S10, "-", rx988_fail
-    add rx988_pos, 1
-    set_addr $I10, rxcap_992_fail
-    ($I12, $I11) = rx988_cur."!mark_peek"($I10)
-    rx988_cur."!cursor_pos"($I11)
-    ($P10) = rx988_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx988_pos, "")
-    rx988_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx993_pos, 1
+    gt $I11, rx993_eos, rx993_fail
+    sub $I11, rx993_pos, rx993_off
+    substr $S10, rx993_tgt, $I11, 1
+    ne $S10, "-", rx993_fail
+    add rx993_pos, 1
+    set_addr $I10, rxcap_997_fail
+    ($I12, $I11) = rx993_cur."!mark_peek"($I10)
+    rx993_cur."!cursor_pos"($I11)
+    ($P10) = rx993_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx993_pos, "")
+    rx993_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_992_done
-  rxcap_992_fail:
-    goto rx988_fail
-  rxcap_992_done:
+    goto rxcap_997_done
+  rxcap_997_fail:
+    goto rx993_fail
+  rxcap_997_done:
   # rx enumcharlist negate=1 zerowidth
-    ge rx988_pos, rx988_eos, rx988_fail
-    sub $I10, rx988_pos, rx988_off
-    substr $S10, rx988_tgt, $I10, 1
+    ge rx993_pos, rx993_eos, rx993_fail
+    sub $I10, rx993_pos, rx993_off
+    substr $S10, rx993_tgt, $I10, 1
     index $I11, ">", $S10
-    ge $I11, 0, rx988_fail
+    ge $I11, 0, rx993_fail
   # rx subrule "number" subtype=zerowidth negate=1
-    rx988_cur."!cursor_pos"(rx988_pos)
-    $P10 = rx988_cur."number"()
-    if $P10, rx988_fail
+    rx993_cur."!cursor_pos"(rx993_pos)
+    $P10 = rx993_cur."number"()
+    if $P10, rx993_fail
   # rx subrule "O" subtype=capture negate=
-    rx988_cur."!cursor_pos"(rx988_pos)
-    $P10 = rx988_cur."O"("%symbolic_unary, :pirop<neg>")
-    unless $P10, rx988_fail
-    rx988_cur."!mark_push"(0, -1, 0, $P10)
+    rx993_cur."!cursor_pos"(rx993_pos)
+    $P10 = rx993_cur."O"("%symbolic_unary, :pirop<neg>")
+    unless $P10, rx993_fail
+    rx993_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx988_pos = $P10."pos"()
+    rx993_pos = $P10."pos"()
   # rx pass
-    rx988_cur."!cursor_pass"(rx988_pos, "prefix:sym<->")
-    rx988_cur."!cursor_debug"("PASS  ", "prefix:sym<->", " at pos=", rx988_pos)
-    .return (rx988_cur)
-  rx988_fail:
-.annotate "line", 413
-    (rx988_rep, rx988_pos, $I10, $P10) = rx988_cur."!mark_fail"(0)
-    lt rx988_pos, -1, rx988_done
-    eq rx988_pos, -1, rx988_fail
+    rx993_cur."!cursor_pass"(rx993_pos, "prefix:sym<->")
+    rx993_cur."!cursor_debug"("PASS  ", "prefix:sym<->", " at pos=", rx993_pos)
+    .return (rx993_cur)
+  rx993_fail:
+.annotate "line", 417
+    (rx993_rep, rx993_pos, $I10, $P10) = rx993_cur."!mark_fail"(0)
+    lt rx993_pos, -1, rx993_done
+    eq rx993_pos, -1, rx993_fail
     jump $I10
-  rx988_done:
-    rx988_cur."!cursor_fail"()
-    rx988_cur."!cursor_debug"("FAIL  ", "prefix:sym<->")
-    .return (rx988_cur)
+  rx993_done:
+    rx993_cur."!cursor_fail"()
+    rx993_cur."!cursor_debug"("FAIL  ", "prefix:sym<->")
+    .return (rx993_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<->"  :subid("250_1261064023.05912") :method
-.annotate "line", 413
-    new $P990, "ResizablePMCArray"
-    push $P990, "-"
-    .return ($P990)
+.sub "!PREFIX__prefix:sym<->"  :subid("250_1267204702.05125") :method
+.annotate "line", 417
+    new $P995, "ResizablePMCArray"
+    push $P995, "-"
+    .return ($P995)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<?>"  :subid("251_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx994_tgt
-    .local int rx994_pos
-    .local int rx994_off
-    .local int rx994_eos
-    .local int rx994_rep
-    .local pmc rx994_cur
-    (rx994_cur, rx994_pos, rx994_tgt) = self."!cursor_start"()
-    rx994_cur."!cursor_debug"("START ", "prefix:sym<?>")
-    .lex unicode:"$\x{a2}", rx994_cur
-    .local pmc match
-    .lex "$/", match
-    length rx994_eos, rx994_tgt
-    set rx994_off, 0
-    lt rx994_pos, 2, rx994_start
-    sub rx994_off, rx994_pos, 1
-    substr rx994_tgt, rx994_tgt, rx994_off
-  rx994_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan998_done
-    goto rxscan998_scan
-  rxscan998_loop:
-    ($P10) = rx994_cur."from"()
-    inc $P10
-    set rx994_pos, $P10
-    ge rx994_pos, rx994_eos, rxscan998_done
-  rxscan998_scan:
-    set_addr $I10, rxscan998_loop
-    rx994_cur."!mark_push"(0, rx994_pos, $I10)
-  rxscan998_done:
-.annotate "line", 469
+.sub "prefix:sym<?>"  :subid("251_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx999_tgt
+    .local int rx999_pos
+    .local int rx999_off
+    .local int rx999_eos
+    .local int rx999_rep
+    .local pmc rx999_cur
+    (rx999_cur, rx999_pos, rx999_tgt) = self."!cursor_start"()
+    rx999_cur."!cursor_debug"("START ", "prefix:sym<?>")
+    .lex unicode:"$\x{a2}", rx999_cur
+    .local pmc match
+    .lex "$/", match
+    length rx999_eos, rx999_tgt
+    set rx999_off, 0
+    lt rx999_pos, 2, rx999_start
+    sub rx999_off, rx999_pos, 1
+    substr rx999_tgt, rx999_tgt, rx999_off
+  rx999_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1003_done
+    goto rxscan1003_scan
+  rxscan1003_loop:
+    ($P10) = rx999_cur."from"()
+    inc $P10
+    set rx999_pos, $P10
+    ge rx999_pos, rx999_eos, rxscan1003_done
+  rxscan1003_scan:
+    set_addr $I10, rxscan1003_loop
+    rx999_cur."!mark_push"(0, rx999_pos, $I10)
+  rxscan1003_done:
+.annotate "line", 473
   # rx subcapture "sym"
-    set_addr $I10, rxcap_999_fail
-    rx994_cur."!mark_push"(0, rx994_pos, $I10)
+    set_addr $I10, rxcap_1004_fail
+    rx999_cur."!mark_push"(0, rx999_pos, $I10)
   # rx literal  "?"
-    add $I11, rx994_pos, 1
-    gt $I11, rx994_eos, rx994_fail
-    sub $I11, rx994_pos, rx994_off
-    substr $S10, rx994_tgt, $I11, 1
-    ne $S10, "?", rx994_fail
-    add rx994_pos, 1
-    set_addr $I10, rxcap_999_fail
-    ($I12, $I11) = rx994_cur."!mark_peek"($I10)
-    rx994_cur."!cursor_pos"($I11)
-    ($P10) = rx994_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx994_pos, "")
-    rx994_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx999_pos, 1
+    gt $I11, rx999_eos, rx999_fail
+    sub $I11, rx999_pos, rx999_off
+    substr $S10, rx999_tgt, $I11, 1
+    ne $S10, "?", rx999_fail
+    add rx999_pos, 1
+    set_addr $I10, rxcap_1004_fail
+    ($I12, $I11) = rx999_cur."!mark_peek"($I10)
+    rx999_cur."!cursor_pos"($I11)
+    ($P10) = rx999_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx999_pos, "")
+    rx999_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_999_done
-  rxcap_999_fail:
-    goto rx994_fail
-  rxcap_999_done:
+    goto rxcap_1004_done
+  rxcap_1004_fail:
+    goto rx999_fail
+  rxcap_1004_done:
   # rx subrule "O" subtype=capture negate=
-    rx994_cur."!cursor_pos"(rx994_pos)
-    $P10 = rx994_cur."O"("%symbolic_unary, :pirop<istrue>")
-    unless $P10, rx994_fail
-    rx994_cur."!mark_push"(0, -1, 0, $P10)
+    rx999_cur."!cursor_pos"(rx999_pos)
+    $P10 = rx999_cur."O"("%symbolic_unary, :pirop<istrue>")
+    unless $P10, rx999_fail
+    rx999_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx994_pos = $P10."pos"()
+    rx999_pos = $P10."pos"()
   # rx pass
-    rx994_cur."!cursor_pass"(rx994_pos, "prefix:sym<?>")
-    rx994_cur."!cursor_debug"("PASS  ", "prefix:sym<?>", " at pos=", rx994_pos)
-    .return (rx994_cur)
-  rx994_fail:
-.annotate "line", 413
-    (rx994_rep, rx994_pos, $I10, $P10) = rx994_cur."!mark_fail"(0)
-    lt rx994_pos, -1, rx994_done
-    eq rx994_pos, -1, rx994_fail
+    rx999_cur."!cursor_pass"(rx999_pos, "prefix:sym<?>")
+    rx999_cur."!cursor_debug"("PASS  ", "prefix:sym<?>", " at pos=", rx999_pos)
+    .return (rx999_cur)
+  rx999_fail:
+.annotate "line", 417
+    (rx999_rep, rx999_pos, $I10, $P10) = rx999_cur."!mark_fail"(0)
+    lt rx999_pos, -1, rx999_done
+    eq rx999_pos, -1, rx999_fail
     jump $I10
-  rx994_done:
-    rx994_cur."!cursor_fail"()
-    rx994_cur."!cursor_debug"("FAIL  ", "prefix:sym<?>")
-    .return (rx994_cur)
+  rx999_done:
+    rx999_cur."!cursor_fail"()
+    rx999_cur."!cursor_debug"("FAIL  ", "prefix:sym<?>")
+    .return (rx999_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<?>"  :subid("252_1261064023.05912") :method
-.annotate "line", 413
-    $P996 = self."!PREFIX__!subrule"("O", "?")
-    new $P997, "ResizablePMCArray"
-    push $P997, $P996
-    .return ($P997)
+.sub "!PREFIX__prefix:sym<?>"  :subid("252_1267204702.05125") :method
+.annotate "line", 417
+    $P1001 = self."!PREFIX__!subrule"("O", "?")
+    new $P1002, "ResizablePMCArray"
+    push $P1002, $P1001
+    .return ($P1002)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<!>"  :subid("253_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1001_tgt
-    .local int rx1001_pos
-    .local int rx1001_off
-    .local int rx1001_eos
-    .local int rx1001_rep
-    .local pmc rx1001_cur
-    (rx1001_cur, rx1001_pos, rx1001_tgt) = self."!cursor_start"()
-    rx1001_cur."!cursor_debug"("START ", "prefix:sym<!>")
-    .lex unicode:"$\x{a2}", rx1001_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1001_eos, rx1001_tgt
-    set rx1001_off, 0
-    lt rx1001_pos, 2, rx1001_start
-    sub rx1001_off, rx1001_pos, 1
-    substr rx1001_tgt, rx1001_tgt, rx1001_off
-  rx1001_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1005_done
-    goto rxscan1005_scan
-  rxscan1005_loop:
-    ($P10) = rx1001_cur."from"()
-    inc $P10
-    set rx1001_pos, $P10
-    ge rx1001_pos, rx1001_eos, rxscan1005_done
-  rxscan1005_scan:
-    set_addr $I10, rxscan1005_loop
-    rx1001_cur."!mark_push"(0, rx1001_pos, $I10)
-  rxscan1005_done:
-.annotate "line", 470
+.sub "prefix:sym<!>"  :subid("253_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1006_tgt
+    .local int rx1006_pos
+    .local int rx1006_off
+    .local int rx1006_eos
+    .local int rx1006_rep
+    .local pmc rx1006_cur
+    (rx1006_cur, rx1006_pos, rx1006_tgt) = self."!cursor_start"()
+    rx1006_cur."!cursor_debug"("START ", "prefix:sym<!>")
+    .lex unicode:"$\x{a2}", rx1006_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1006_eos, rx1006_tgt
+    set rx1006_off, 0
+    lt rx1006_pos, 2, rx1006_start
+    sub rx1006_off, rx1006_pos, 1
+    substr rx1006_tgt, rx1006_tgt, rx1006_off
+  rx1006_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1010_done
+    goto rxscan1010_scan
+  rxscan1010_loop:
+    ($P10) = rx1006_cur."from"()
+    inc $P10
+    set rx1006_pos, $P10
+    ge rx1006_pos, rx1006_eos, rxscan1010_done
+  rxscan1010_scan:
+    set_addr $I10, rxscan1010_loop
+    rx1006_cur."!mark_push"(0, rx1006_pos, $I10)
+  rxscan1010_done:
+.annotate "line", 474
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1006_fail
-    rx1001_cur."!mark_push"(0, rx1001_pos, $I10)
+    set_addr $I10, rxcap_1011_fail
+    rx1006_cur."!mark_push"(0, rx1006_pos, $I10)
   # rx literal  "!"
-    add $I11, rx1001_pos, 1
-    gt $I11, rx1001_eos, rx1001_fail
-    sub $I11, rx1001_pos, rx1001_off
-    substr $S10, rx1001_tgt, $I11, 1
-    ne $S10, "!", rx1001_fail
-    add rx1001_pos, 1
-    set_addr $I10, rxcap_1006_fail
-    ($I12, $I11) = rx1001_cur."!mark_peek"($I10)
-    rx1001_cur."!cursor_pos"($I11)
-    ($P10) = rx1001_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1001_pos, "")
-    rx1001_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1006_pos, 1
+    gt $I11, rx1006_eos, rx1006_fail
+    sub $I11, rx1006_pos, rx1006_off
+    substr $S10, rx1006_tgt, $I11, 1
+    ne $S10, "!", rx1006_fail
+    add rx1006_pos, 1
+    set_addr $I10, rxcap_1011_fail
+    ($I12, $I11) = rx1006_cur."!mark_peek"($I10)
+    rx1006_cur."!cursor_pos"($I11)
+    ($P10) = rx1006_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1006_pos, "")
+    rx1006_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1006_done
-  rxcap_1006_fail:
-    goto rx1001_fail
-  rxcap_1006_done:
+    goto rxcap_1011_done
+  rxcap_1011_fail:
+    goto rx1006_fail
+  rxcap_1011_done:
   # rx subrule "O" subtype=capture negate=
-    rx1001_cur."!cursor_pos"(rx1001_pos)
-    $P10 = rx1001_cur."O"("%symbolic_unary, :pirop<isfalse>")
-    unless $P10, rx1001_fail
-    rx1001_cur."!mark_push"(0, -1, 0, $P10)
+    rx1006_cur."!cursor_pos"(rx1006_pos)
+    $P10 = rx1006_cur."O"("%symbolic_unary, :pirop<isfalse>")
+    unless $P10, rx1006_fail
+    rx1006_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1001_pos = $P10."pos"()
+    rx1006_pos = $P10."pos"()
   # rx pass
-    rx1001_cur."!cursor_pass"(rx1001_pos, "prefix:sym<!>")
-    rx1001_cur."!cursor_debug"("PASS  ", "prefix:sym<!>", " at pos=", rx1001_pos)
-    .return (rx1001_cur)
-  rx1001_fail:
-.annotate "line", 413
-    (rx1001_rep, rx1001_pos, $I10, $P10) = rx1001_cur."!mark_fail"(0)
-    lt rx1001_pos, -1, rx1001_done
-    eq rx1001_pos, -1, rx1001_fail
+    rx1006_cur."!cursor_pass"(rx1006_pos, "prefix:sym<!>")
+    rx1006_cur."!cursor_debug"("PASS  ", "prefix:sym<!>", " at pos=", rx1006_pos)
+    .return (rx1006_cur)
+  rx1006_fail:
+.annotate "line", 417
+    (rx1006_rep, rx1006_pos, $I10, $P10) = rx1006_cur."!mark_fail"(0)
+    lt rx1006_pos, -1, rx1006_done
+    eq rx1006_pos, -1, rx1006_fail
     jump $I10
-  rx1001_done:
-    rx1001_cur."!cursor_fail"()
-    rx1001_cur."!cursor_debug"("FAIL  ", "prefix:sym<!>")
-    .return (rx1001_cur)
+  rx1006_done:
+    rx1006_cur."!cursor_fail"()
+    rx1006_cur."!cursor_debug"("FAIL  ", "prefix:sym<!>")
+    .return (rx1006_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<!>"  :subid("254_1261064023.05912") :method
-.annotate "line", 413
-    $P1003 = self."!PREFIX__!subrule"("O", "!")
-    new $P1004, "ResizablePMCArray"
-    push $P1004, $P1003
-    .return ($P1004)
+.sub "!PREFIX__prefix:sym<!>"  :subid("254_1267204702.05125") :method
+.annotate "line", 417
+    $P1008 = self."!PREFIX__!subrule"("O", "!")
+    new $P1009, "ResizablePMCArray"
+    push $P1009, $P1008
+    .return ($P1009)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<|>"  :subid("255_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1008_tgt
-    .local int rx1008_pos
-    .local int rx1008_off
-    .local int rx1008_eos
-    .local int rx1008_rep
-    .local pmc rx1008_cur
-    (rx1008_cur, rx1008_pos, rx1008_tgt) = self."!cursor_start"()
-    rx1008_cur."!cursor_debug"("START ", "prefix:sym<|>")
-    .lex unicode:"$\x{a2}", rx1008_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1008_eos, rx1008_tgt
-    set rx1008_off, 0
-    lt rx1008_pos, 2, rx1008_start
-    sub rx1008_off, rx1008_pos, 1
-    substr rx1008_tgt, rx1008_tgt, rx1008_off
-  rx1008_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1012_done
-    goto rxscan1012_scan
-  rxscan1012_loop:
-    ($P10) = rx1008_cur."from"()
-    inc $P10
-    set rx1008_pos, $P10
-    ge rx1008_pos, rx1008_eos, rxscan1012_done
-  rxscan1012_scan:
-    set_addr $I10, rxscan1012_loop
-    rx1008_cur."!mark_push"(0, rx1008_pos, $I10)
-  rxscan1012_done:
-.annotate "line", 471
+.sub "prefix:sym<|>"  :subid("255_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1013_tgt
+    .local int rx1013_pos
+    .local int rx1013_off
+    .local int rx1013_eos
+    .local int rx1013_rep
+    .local pmc rx1013_cur
+    (rx1013_cur, rx1013_pos, rx1013_tgt) = self."!cursor_start"()
+    rx1013_cur."!cursor_debug"("START ", "prefix:sym<|>")
+    .lex unicode:"$\x{a2}", rx1013_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1013_eos, rx1013_tgt
+    set rx1013_off, 0
+    lt rx1013_pos, 2, rx1013_start
+    sub rx1013_off, rx1013_pos, 1
+    substr rx1013_tgt, rx1013_tgt, rx1013_off
+  rx1013_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1017_done
+    goto rxscan1017_scan
+  rxscan1017_loop:
+    ($P10) = rx1013_cur."from"()
+    inc $P10
+    set rx1013_pos, $P10
+    ge rx1013_pos, rx1013_eos, rxscan1017_done
+  rxscan1017_scan:
+    set_addr $I10, rxscan1017_loop
+    rx1013_cur."!mark_push"(0, rx1013_pos, $I10)
+  rxscan1017_done:
+.annotate "line", 475
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1013_fail
-    rx1008_cur."!mark_push"(0, rx1008_pos, $I10)
+    set_addr $I10, rxcap_1018_fail
+    rx1013_cur."!mark_push"(0, rx1013_pos, $I10)
   # rx literal  "|"
-    add $I11, rx1008_pos, 1
-    gt $I11, rx1008_eos, rx1008_fail
-    sub $I11, rx1008_pos, rx1008_off
-    substr $S10, rx1008_tgt, $I11, 1
-    ne $S10, "|", rx1008_fail
-    add rx1008_pos, 1
-    set_addr $I10, rxcap_1013_fail
-    ($I12, $I11) = rx1008_cur."!mark_peek"($I10)
-    rx1008_cur."!cursor_pos"($I11)
-    ($P10) = rx1008_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1008_pos, "")
-    rx1008_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1013_pos, 1
+    gt $I11, rx1013_eos, rx1013_fail
+    sub $I11, rx1013_pos, rx1013_off
+    substr $S10, rx1013_tgt, $I11, 1
+    ne $S10, "|", rx1013_fail
+    add rx1013_pos, 1
+    set_addr $I10, rxcap_1018_fail
+    ($I12, $I11) = rx1013_cur."!mark_peek"($I10)
+    rx1013_cur."!cursor_pos"($I11)
+    ($P10) = rx1013_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1013_pos, "")
+    rx1013_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1013_done
-  rxcap_1013_fail:
-    goto rx1008_fail
-  rxcap_1013_done:
+    goto rxcap_1018_done
+  rxcap_1018_fail:
+    goto rx1013_fail
+  rxcap_1018_done:
   # rx subrule "O" subtype=capture negate=
-    rx1008_cur."!cursor_pos"(rx1008_pos)
-    $P10 = rx1008_cur."O"("%symbolic_unary")
-    unless $P10, rx1008_fail
-    rx1008_cur."!mark_push"(0, -1, 0, $P10)
+    rx1013_cur."!cursor_pos"(rx1013_pos)
+    $P10 = rx1013_cur."O"("%symbolic_unary")
+    unless $P10, rx1013_fail
+    rx1013_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1008_pos = $P10."pos"()
+    rx1013_pos = $P10."pos"()
   # rx pass
-    rx1008_cur."!cursor_pass"(rx1008_pos, "prefix:sym<|>")
-    rx1008_cur."!cursor_debug"("PASS  ", "prefix:sym<|>", " at pos=", rx1008_pos)
-    .return (rx1008_cur)
-  rx1008_fail:
-.annotate "line", 413
-    (rx1008_rep, rx1008_pos, $I10, $P10) = rx1008_cur."!mark_fail"(0)
-    lt rx1008_pos, -1, rx1008_done
-    eq rx1008_pos, -1, rx1008_fail
+    rx1013_cur."!cursor_pass"(rx1013_pos, "prefix:sym<|>")
+    rx1013_cur."!cursor_debug"("PASS  ", "prefix:sym<|>", " at pos=", rx1013_pos)
+    .return (rx1013_cur)
+  rx1013_fail:
+.annotate "line", 417
+    (rx1013_rep, rx1013_pos, $I10, $P10) = rx1013_cur."!mark_fail"(0)
+    lt rx1013_pos, -1, rx1013_done
+    eq rx1013_pos, -1, rx1013_fail
     jump $I10
-  rx1008_done:
-    rx1008_cur."!cursor_fail"()
-    rx1008_cur."!cursor_debug"("FAIL  ", "prefix:sym<|>")
-    .return (rx1008_cur)
+  rx1013_done:
+    rx1013_cur."!cursor_fail"()
+    rx1013_cur."!cursor_debug"("FAIL  ", "prefix:sym<|>")
+    .return (rx1013_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<|>"  :subid("256_1261064023.05912") :method
-.annotate "line", 413
-    $P1010 = self."!PREFIX__!subrule"("O", "|")
-    new $P1011, "ResizablePMCArray"
-    push $P1011, $P1010
-    .return ($P1011)
+.sub "!PREFIX__prefix:sym<|>"  :subid("256_1267204702.05125") :method
+.annotate "line", 417
+    $P1015 = self."!PREFIX__!subrule"("O", "|")
+    new $P1016, "ResizablePMCArray"
+    push $P1016, $P1015
+    .return ($P1016)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<*>"  :subid("257_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1015_tgt
-    .local int rx1015_pos
-    .local int rx1015_off
-    .local int rx1015_eos
-    .local int rx1015_rep
-    .local pmc rx1015_cur
-    (rx1015_cur, rx1015_pos, rx1015_tgt) = self."!cursor_start"()
-    rx1015_cur."!cursor_debug"("START ", "infix:sym<*>")
-    .lex unicode:"$\x{a2}", rx1015_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1015_eos, rx1015_tgt
-    set rx1015_off, 0
-    lt rx1015_pos, 2, rx1015_start
-    sub rx1015_off, rx1015_pos, 1
-    substr rx1015_tgt, rx1015_tgt, rx1015_off
-  rx1015_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1019_done
-    goto rxscan1019_scan
-  rxscan1019_loop:
-    ($P10) = rx1015_cur."from"()
-    inc $P10
-    set rx1015_pos, $P10
-    ge rx1015_pos, rx1015_eos, rxscan1019_done
-  rxscan1019_scan:
-    set_addr $I10, rxscan1019_loop
-    rx1015_cur."!mark_push"(0, rx1015_pos, $I10)
-  rxscan1019_done:
-.annotate "line", 473
+.sub "infix:sym<*>"  :subid("257_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1020_tgt
+    .local int rx1020_pos
+    .local int rx1020_off
+    .local int rx1020_eos
+    .local int rx1020_rep
+    .local pmc rx1020_cur
+    (rx1020_cur, rx1020_pos, rx1020_tgt) = self."!cursor_start"()
+    rx1020_cur."!cursor_debug"("START ", "infix:sym<*>")
+    .lex unicode:"$\x{a2}", rx1020_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1020_eos, rx1020_tgt
+    set rx1020_off, 0
+    lt rx1020_pos, 2, rx1020_start
+    sub rx1020_off, rx1020_pos, 1
+    substr rx1020_tgt, rx1020_tgt, rx1020_off
+  rx1020_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1024_done
+    goto rxscan1024_scan
+  rxscan1024_loop:
+    ($P10) = rx1020_cur."from"()
+    inc $P10
+    set rx1020_pos, $P10
+    ge rx1020_pos, rx1020_eos, rxscan1024_done
+  rxscan1024_scan:
+    set_addr $I10, rxscan1024_loop
+    rx1020_cur."!mark_push"(0, rx1020_pos, $I10)
+  rxscan1024_done:
+.annotate "line", 477
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1020_fail
-    rx1015_cur."!mark_push"(0, rx1015_pos, $I10)
+    set_addr $I10, rxcap_1025_fail
+    rx1020_cur."!mark_push"(0, rx1020_pos, $I10)
   # rx literal  "*"
-    add $I11, rx1015_pos, 1
-    gt $I11, rx1015_eos, rx1015_fail
-    sub $I11, rx1015_pos, rx1015_off
-    substr $S10, rx1015_tgt, $I11, 1
-    ne $S10, "*", rx1015_fail
-    add rx1015_pos, 1
-    set_addr $I10, rxcap_1020_fail
-    ($I12, $I11) = rx1015_cur."!mark_peek"($I10)
-    rx1015_cur."!cursor_pos"($I11)
-    ($P10) = rx1015_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1015_pos, "")
-    rx1015_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1020_pos, 1
+    gt $I11, rx1020_eos, rx1020_fail
+    sub $I11, rx1020_pos, rx1020_off
+    substr $S10, rx1020_tgt, $I11, 1
+    ne $S10, "*", rx1020_fail
+    add rx1020_pos, 1
+    set_addr $I10, rxcap_1025_fail
+    ($I12, $I11) = rx1020_cur."!mark_peek"($I10)
+    rx1020_cur."!cursor_pos"($I11)
+    ($P10) = rx1020_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1020_pos, "")
+    rx1020_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1020_done
-  rxcap_1020_fail:
-    goto rx1015_fail
-  rxcap_1020_done:
+    goto rxcap_1025_done
+  rxcap_1025_fail:
+    goto rx1020_fail
+  rxcap_1025_done:
   # rx subrule "O" subtype=capture negate=
-    rx1015_cur."!cursor_pos"(rx1015_pos)
-    $P10 = rx1015_cur."O"("%multiplicative, :pirop<mul>")
-    unless $P10, rx1015_fail
-    rx1015_cur."!mark_push"(0, -1, 0, $P10)
+    rx1020_cur."!cursor_pos"(rx1020_pos)
+    $P10 = rx1020_cur."O"("%multiplicative, :pirop<mul>")
+    unless $P10, rx1020_fail
+    rx1020_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1015_pos = $P10."pos"()
+    rx1020_pos = $P10."pos"()
   # rx pass
-    rx1015_cur."!cursor_pass"(rx1015_pos, "infix:sym<*>")
-    rx1015_cur."!cursor_debug"("PASS  ", "infix:sym<*>", " at pos=", rx1015_pos)
-    .return (rx1015_cur)
-  rx1015_fail:
-.annotate "line", 413
-    (rx1015_rep, rx1015_pos, $I10, $P10) = rx1015_cur."!mark_fail"(0)
-    lt rx1015_pos, -1, rx1015_done
-    eq rx1015_pos, -1, rx1015_fail
+    rx1020_cur."!cursor_pass"(rx1020_pos, "infix:sym<*>")
+    rx1020_cur."!cursor_debug"("PASS  ", "infix:sym<*>", " at pos=", rx1020_pos)
+    .return (rx1020_cur)
+  rx1020_fail:
+.annotate "line", 417
+    (rx1020_rep, rx1020_pos, $I10, $P10) = rx1020_cur."!mark_fail"(0)
+    lt rx1020_pos, -1, rx1020_done
+    eq rx1020_pos, -1, rx1020_fail
     jump $I10
-  rx1015_done:
-    rx1015_cur."!cursor_fail"()
-    rx1015_cur."!cursor_debug"("FAIL  ", "infix:sym<*>")
-    .return (rx1015_cur)
+  rx1020_done:
+    rx1020_cur."!cursor_fail"()
+    rx1020_cur."!cursor_debug"("FAIL  ", "infix:sym<*>")
+    .return (rx1020_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<*>"  :subid("258_1261064023.05912") :method
-.annotate "line", 413
-    $P1017 = self."!PREFIX__!subrule"("O", "*")
-    new $P1018, "ResizablePMCArray"
-    push $P1018, $P1017
-    .return ($P1018)
+.sub "!PREFIX__infix:sym<*>"  :subid("258_1267204702.05125") :method
+.annotate "line", 417
+    $P1022 = self."!PREFIX__!subrule"("O", "*")
+    new $P1023, "ResizablePMCArray"
+    push $P1023, $P1022
+    .return ($P1023)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym</>"  :subid("259_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1022_tgt
-    .local int rx1022_pos
-    .local int rx1022_off
-    .local int rx1022_eos
-    .local int rx1022_rep
-    .local pmc rx1022_cur
-    (rx1022_cur, rx1022_pos, rx1022_tgt) = self."!cursor_start"()
-    rx1022_cur."!cursor_debug"("START ", "infix:sym</>")
-    .lex unicode:"$\x{a2}", rx1022_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1022_eos, rx1022_tgt
-    set rx1022_off, 0
-    lt rx1022_pos, 2, rx1022_start
-    sub rx1022_off, rx1022_pos, 1
-    substr rx1022_tgt, rx1022_tgt, rx1022_off
-  rx1022_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1026_done
-    goto rxscan1026_scan
-  rxscan1026_loop:
-    ($P10) = rx1022_cur."from"()
-    inc $P10
-    set rx1022_pos, $P10
-    ge rx1022_pos, rx1022_eos, rxscan1026_done
-  rxscan1026_scan:
-    set_addr $I10, rxscan1026_loop
-    rx1022_cur."!mark_push"(0, rx1022_pos, $I10)
-  rxscan1026_done:
-.annotate "line", 474
+.sub "infix:sym</>"  :subid("259_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1027_tgt
+    .local int rx1027_pos
+    .local int rx1027_off
+    .local int rx1027_eos
+    .local int rx1027_rep
+    .local pmc rx1027_cur
+    (rx1027_cur, rx1027_pos, rx1027_tgt) = self."!cursor_start"()
+    rx1027_cur."!cursor_debug"("START ", "infix:sym</>")
+    .lex unicode:"$\x{a2}", rx1027_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1027_eos, rx1027_tgt
+    set rx1027_off, 0
+    lt rx1027_pos, 2, rx1027_start
+    sub rx1027_off, rx1027_pos, 1
+    substr rx1027_tgt, rx1027_tgt, rx1027_off
+  rx1027_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1031_done
+    goto rxscan1031_scan
+  rxscan1031_loop:
+    ($P10) = rx1027_cur."from"()
+    inc $P10
+    set rx1027_pos, $P10
+    ge rx1027_pos, rx1027_eos, rxscan1031_done
+  rxscan1031_scan:
+    set_addr $I10, rxscan1031_loop
+    rx1027_cur."!mark_push"(0, rx1027_pos, $I10)
+  rxscan1031_done:
+.annotate "line", 478
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1027_fail
-    rx1022_cur."!mark_push"(0, rx1022_pos, $I10)
+    set_addr $I10, rxcap_1032_fail
+    rx1027_cur."!mark_push"(0, rx1027_pos, $I10)
   # rx literal  "/"
-    add $I11, rx1022_pos, 1
-    gt $I11, rx1022_eos, rx1022_fail
-    sub $I11, rx1022_pos, rx1022_off
-    substr $S10, rx1022_tgt, $I11, 1
-    ne $S10, "/", rx1022_fail
-    add rx1022_pos, 1
-    set_addr $I10, rxcap_1027_fail
-    ($I12, $I11) = rx1022_cur."!mark_peek"($I10)
-    rx1022_cur."!cursor_pos"($I11)
-    ($P10) = rx1022_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1022_pos, "")
-    rx1022_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1027_pos, 1
+    gt $I11, rx1027_eos, rx1027_fail
+    sub $I11, rx1027_pos, rx1027_off
+    substr $S10, rx1027_tgt, $I11, 1
+    ne $S10, "/", rx1027_fail
+    add rx1027_pos, 1
+    set_addr $I10, rxcap_1032_fail
+    ($I12, $I11) = rx1027_cur."!mark_peek"($I10)
+    rx1027_cur."!cursor_pos"($I11)
+    ($P10) = rx1027_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1027_pos, "")
+    rx1027_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1027_done
-  rxcap_1027_fail:
-    goto rx1022_fail
-  rxcap_1027_done:
+    goto rxcap_1032_done
+  rxcap_1032_fail:
+    goto rx1027_fail
+  rxcap_1032_done:
   # rx subrule "O" subtype=capture negate=
-    rx1022_cur."!cursor_pos"(rx1022_pos)
-    $P10 = rx1022_cur."O"("%multiplicative, :pirop<div>")
-    unless $P10, rx1022_fail
-    rx1022_cur."!mark_push"(0, -1, 0, $P10)
+    rx1027_cur."!cursor_pos"(rx1027_pos)
+    $P10 = rx1027_cur."O"("%multiplicative, :pirop<div>")
+    unless $P10, rx1027_fail
+    rx1027_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1022_pos = $P10."pos"()
+    rx1027_pos = $P10."pos"()
   # rx pass
-    rx1022_cur."!cursor_pass"(rx1022_pos, "infix:sym</>")
-    rx1022_cur."!cursor_debug"("PASS  ", "infix:sym</>", " at pos=", rx1022_pos)
-    .return (rx1022_cur)
-  rx1022_fail:
-.annotate "line", 413
-    (rx1022_rep, rx1022_pos, $I10, $P10) = rx1022_cur."!mark_fail"(0)
-    lt rx1022_pos, -1, rx1022_done
-    eq rx1022_pos, -1, rx1022_fail
+    rx1027_cur."!cursor_pass"(rx1027_pos, "infix:sym</>")
+    rx1027_cur."!cursor_debug"("PASS  ", "infix:sym</>", " at pos=", rx1027_pos)
+    .return (rx1027_cur)
+  rx1027_fail:
+.annotate "line", 417
+    (rx1027_rep, rx1027_pos, $I10, $P10) = rx1027_cur."!mark_fail"(0)
+    lt rx1027_pos, -1, rx1027_done
+    eq rx1027_pos, -1, rx1027_fail
     jump $I10
-  rx1022_done:
-    rx1022_cur."!cursor_fail"()
-    rx1022_cur."!cursor_debug"("FAIL  ", "infix:sym</>")
-    .return (rx1022_cur)
+  rx1027_done:
+    rx1027_cur."!cursor_fail"()
+    rx1027_cur."!cursor_debug"("FAIL  ", "infix:sym</>")
+    .return (rx1027_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym</>"  :subid("260_1261064023.05912") :method
-.annotate "line", 413
-    $P1024 = self."!PREFIX__!subrule"("O", "/")
-    new $P1025, "ResizablePMCArray"
-    push $P1025, $P1024
-    .return ($P1025)
+.sub "!PREFIX__infix:sym</>"  :subid("260_1267204702.05125") :method
+.annotate "line", 417
+    $P1029 = self."!PREFIX__!subrule"("O", "/")
+    new $P1030, "ResizablePMCArray"
+    push $P1030, $P1029
+    .return ($P1030)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<%>"  :subid("261_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1029_tgt
-    .local int rx1029_pos
-    .local int rx1029_off
-    .local int rx1029_eos
-    .local int rx1029_rep
-    .local pmc rx1029_cur
-    (rx1029_cur, rx1029_pos, rx1029_tgt) = self."!cursor_start"()
-    rx1029_cur."!cursor_debug"("START ", "infix:sym<%>")
-    .lex unicode:"$\x{a2}", rx1029_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1029_eos, rx1029_tgt
-    set rx1029_off, 0
-    lt rx1029_pos, 2, rx1029_start
-    sub rx1029_off, rx1029_pos, 1
-    substr rx1029_tgt, rx1029_tgt, rx1029_off
-  rx1029_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1033_done
-    goto rxscan1033_scan
-  rxscan1033_loop:
-    ($P10) = rx1029_cur."from"()
-    inc $P10
-    set rx1029_pos, $P10
-    ge rx1029_pos, rx1029_eos, rxscan1033_done
-  rxscan1033_scan:
-    set_addr $I10, rxscan1033_loop
-    rx1029_cur."!mark_push"(0, rx1029_pos, $I10)
-  rxscan1033_done:
-.annotate "line", 475
+.sub "infix:sym<%>"  :subid("261_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1034_tgt
+    .local int rx1034_pos
+    .local int rx1034_off
+    .local int rx1034_eos
+    .local int rx1034_rep
+    .local pmc rx1034_cur
+    (rx1034_cur, rx1034_pos, rx1034_tgt) = self."!cursor_start"()
+    rx1034_cur."!cursor_debug"("START ", "infix:sym<%>")
+    .lex unicode:"$\x{a2}", rx1034_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1034_eos, rx1034_tgt
+    set rx1034_off, 0
+    lt rx1034_pos, 2, rx1034_start
+    sub rx1034_off, rx1034_pos, 1
+    substr rx1034_tgt, rx1034_tgt, rx1034_off
+  rx1034_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1038_done
+    goto rxscan1038_scan
+  rxscan1038_loop:
+    ($P10) = rx1034_cur."from"()
+    inc $P10
+    set rx1034_pos, $P10
+    ge rx1034_pos, rx1034_eos, rxscan1038_done
+  rxscan1038_scan:
+    set_addr $I10, rxscan1038_loop
+    rx1034_cur."!mark_push"(0, rx1034_pos, $I10)
+  rxscan1038_done:
+.annotate "line", 479
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1034_fail
-    rx1029_cur."!mark_push"(0, rx1029_pos, $I10)
+    set_addr $I10, rxcap_1039_fail
+    rx1034_cur."!mark_push"(0, rx1034_pos, $I10)
   # rx literal  "%"
-    add $I11, rx1029_pos, 1
-    gt $I11, rx1029_eos, rx1029_fail
-    sub $I11, rx1029_pos, rx1029_off
-    substr $S10, rx1029_tgt, $I11, 1
-    ne $S10, "%", rx1029_fail
-    add rx1029_pos, 1
-    set_addr $I10, rxcap_1034_fail
-    ($I12, $I11) = rx1029_cur."!mark_peek"($I10)
-    rx1029_cur."!cursor_pos"($I11)
-    ($P10) = rx1029_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1029_pos, "")
-    rx1029_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1034_pos, 1
+    gt $I11, rx1034_eos, rx1034_fail
+    sub $I11, rx1034_pos, rx1034_off
+    substr $S10, rx1034_tgt, $I11, 1
+    ne $S10, "%", rx1034_fail
+    add rx1034_pos, 1
+    set_addr $I10, rxcap_1039_fail
+    ($I12, $I11) = rx1034_cur."!mark_peek"($I10)
+    rx1034_cur."!cursor_pos"($I11)
+    ($P10) = rx1034_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1034_pos, "")
+    rx1034_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1034_done
-  rxcap_1034_fail:
-    goto rx1029_fail
-  rxcap_1034_done:
+    goto rxcap_1039_done
+  rxcap_1039_fail:
+    goto rx1034_fail
+  rxcap_1039_done:
   # rx subrule "O" subtype=capture negate=
-    rx1029_cur."!cursor_pos"(rx1029_pos)
-    $P10 = rx1029_cur."O"("%multiplicative, :pirop<mod>")
-    unless $P10, rx1029_fail
-    rx1029_cur."!mark_push"(0, -1, 0, $P10)
+    rx1034_cur."!cursor_pos"(rx1034_pos)
+    $P10 = rx1034_cur."O"("%multiplicative, :pirop<mod>")
+    unless $P10, rx1034_fail
+    rx1034_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1029_pos = $P10."pos"()
+    rx1034_pos = $P10."pos"()
   # rx pass
-    rx1029_cur."!cursor_pass"(rx1029_pos, "infix:sym<%>")
-    rx1029_cur."!cursor_debug"("PASS  ", "infix:sym<%>", " at pos=", rx1029_pos)
-    .return (rx1029_cur)
-  rx1029_fail:
-.annotate "line", 413
-    (rx1029_rep, rx1029_pos, $I10, $P10) = rx1029_cur."!mark_fail"(0)
-    lt rx1029_pos, -1, rx1029_done
-    eq rx1029_pos, -1, rx1029_fail
+    rx1034_cur."!cursor_pass"(rx1034_pos, "infix:sym<%>")
+    rx1034_cur."!cursor_debug"("PASS  ", "infix:sym<%>", " at pos=", rx1034_pos)
+    .return (rx1034_cur)
+  rx1034_fail:
+.annotate "line", 417
+    (rx1034_rep, rx1034_pos, $I10, $P10) = rx1034_cur."!mark_fail"(0)
+    lt rx1034_pos, -1, rx1034_done
+    eq rx1034_pos, -1, rx1034_fail
     jump $I10
-  rx1029_done:
-    rx1029_cur."!cursor_fail"()
-    rx1029_cur."!cursor_debug"("FAIL  ", "infix:sym<%>")
-    .return (rx1029_cur)
+  rx1034_done:
+    rx1034_cur."!cursor_fail"()
+    rx1034_cur."!cursor_debug"("FAIL  ", "infix:sym<%>")
+    .return (rx1034_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<%>"  :subid("262_1261064023.05912") :method
-.annotate "line", 413
-    $P1031 = self."!PREFIX__!subrule"("O", "%")
-    new $P1032, "ResizablePMCArray"
-    push $P1032, $P1031
-    .return ($P1032)
+.sub "!PREFIX__infix:sym<%>"  :subid("262_1267204702.05125") :method
+.annotate "line", 417
+    $P1036 = self."!PREFIX__!subrule"("O", "%")
+    new $P1037, "ResizablePMCArray"
+    push $P1037, $P1036
+    .return ($P1037)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<+>"  :subid("263_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1036_tgt
-    .local int rx1036_pos
-    .local int rx1036_off
-    .local int rx1036_eos
-    .local int rx1036_rep
-    .local pmc rx1036_cur
-    (rx1036_cur, rx1036_pos, rx1036_tgt) = self."!cursor_start"()
-    rx1036_cur."!cursor_debug"("START ", "infix:sym<+>")
-    .lex unicode:"$\x{a2}", rx1036_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1036_eos, rx1036_tgt
-    set rx1036_off, 0
-    lt rx1036_pos, 2, rx1036_start
-    sub rx1036_off, rx1036_pos, 1
-    substr rx1036_tgt, rx1036_tgt, rx1036_off
-  rx1036_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1040_done
-    goto rxscan1040_scan
-  rxscan1040_loop:
-    ($P10) = rx1036_cur."from"()
-    inc $P10
-    set rx1036_pos, $P10
-    ge rx1036_pos, rx1036_eos, rxscan1040_done
-  rxscan1040_scan:
-    set_addr $I10, rxscan1040_loop
-    rx1036_cur."!mark_push"(0, rx1036_pos, $I10)
-  rxscan1040_done:
-.annotate "line", 477
+.sub "infix:sym<+>"  :subid("263_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1041_tgt
+    .local int rx1041_pos
+    .local int rx1041_off
+    .local int rx1041_eos
+    .local int rx1041_rep
+    .local pmc rx1041_cur
+    (rx1041_cur, rx1041_pos, rx1041_tgt) = self."!cursor_start"()
+    rx1041_cur."!cursor_debug"("START ", "infix:sym<+>")
+    .lex unicode:"$\x{a2}", rx1041_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1041_eos, rx1041_tgt
+    set rx1041_off, 0
+    lt rx1041_pos, 2, rx1041_start
+    sub rx1041_off, rx1041_pos, 1
+    substr rx1041_tgt, rx1041_tgt, rx1041_off
+  rx1041_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1045_done
+    goto rxscan1045_scan
+  rxscan1045_loop:
+    ($P10) = rx1041_cur."from"()
+    inc $P10
+    set rx1041_pos, $P10
+    ge rx1041_pos, rx1041_eos, rxscan1045_done
+  rxscan1045_scan:
+    set_addr $I10, rxscan1045_loop
+    rx1041_cur."!mark_push"(0, rx1041_pos, $I10)
+  rxscan1045_done:
+.annotate "line", 481
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1041_fail
-    rx1036_cur."!mark_push"(0, rx1036_pos, $I10)
+    set_addr $I10, rxcap_1046_fail
+    rx1041_cur."!mark_push"(0, rx1041_pos, $I10)
   # rx literal  "+"
-    add $I11, rx1036_pos, 1
-    gt $I11, rx1036_eos, rx1036_fail
-    sub $I11, rx1036_pos, rx1036_off
-    substr $S10, rx1036_tgt, $I11, 1
-    ne $S10, "+", rx1036_fail
-    add rx1036_pos, 1
-    set_addr $I10, rxcap_1041_fail
-    ($I12, $I11) = rx1036_cur."!mark_peek"($I10)
-    rx1036_cur."!cursor_pos"($I11)
-    ($P10) = rx1036_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1036_pos, "")
-    rx1036_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1041_pos, 1
+    gt $I11, rx1041_eos, rx1041_fail
+    sub $I11, rx1041_pos, rx1041_off
+    substr $S10, rx1041_tgt, $I11, 1
+    ne $S10, "+", rx1041_fail
+    add rx1041_pos, 1
+    set_addr $I10, rxcap_1046_fail
+    ($I12, $I11) = rx1041_cur."!mark_peek"($I10)
+    rx1041_cur."!cursor_pos"($I11)
+    ($P10) = rx1041_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1041_pos, "")
+    rx1041_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1041_done
-  rxcap_1041_fail:
-    goto rx1036_fail
-  rxcap_1041_done:
+    goto rxcap_1046_done
+  rxcap_1046_fail:
+    goto rx1041_fail
+  rxcap_1046_done:
   # rx subrule "O" subtype=capture negate=
-    rx1036_cur."!cursor_pos"(rx1036_pos)
-    $P10 = rx1036_cur."O"("%additive, :pirop<add>")
-    unless $P10, rx1036_fail
-    rx1036_cur."!mark_push"(0, -1, 0, $P10)
+    rx1041_cur."!cursor_pos"(rx1041_pos)
+    $P10 = rx1041_cur."O"("%additive, :pirop<add>")
+    unless $P10, rx1041_fail
+    rx1041_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1036_pos = $P10."pos"()
+    rx1041_pos = $P10."pos"()
   # rx pass
-    rx1036_cur."!cursor_pass"(rx1036_pos, "infix:sym<+>")
-    rx1036_cur."!cursor_debug"("PASS  ", "infix:sym<+>", " at pos=", rx1036_pos)
-    .return (rx1036_cur)
-  rx1036_fail:
-.annotate "line", 413
-    (rx1036_rep, rx1036_pos, $I10, $P10) = rx1036_cur."!mark_fail"(0)
-    lt rx1036_pos, -1, rx1036_done
-    eq rx1036_pos, -1, rx1036_fail
+    rx1041_cur."!cursor_pass"(rx1041_pos, "infix:sym<+>")
+    rx1041_cur."!cursor_debug"("PASS  ", "infix:sym<+>", " at pos=", rx1041_pos)
+    .return (rx1041_cur)
+  rx1041_fail:
+.annotate "line", 417
+    (rx1041_rep, rx1041_pos, $I10, $P10) = rx1041_cur."!mark_fail"(0)
+    lt rx1041_pos, -1, rx1041_done
+    eq rx1041_pos, -1, rx1041_fail
     jump $I10
-  rx1036_done:
-    rx1036_cur."!cursor_fail"()
-    rx1036_cur."!cursor_debug"("FAIL  ", "infix:sym<+>")
-    .return (rx1036_cur)
+  rx1041_done:
+    rx1041_cur."!cursor_fail"()
+    rx1041_cur."!cursor_debug"("FAIL  ", "infix:sym<+>")
+    .return (rx1041_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+>"  :subid("264_1261064023.05912") :method
-.annotate "line", 413
-    $P1038 = self."!PREFIX__!subrule"("O", "+")
-    new $P1039, "ResizablePMCArray"
-    push $P1039, $P1038
-    .return ($P1039)
+.sub "!PREFIX__infix:sym<+>"  :subid("264_1267204702.05125") :method
+.annotate "line", 417
+    $P1043 = self."!PREFIX__!subrule"("O", "+")
+    new $P1044, "ResizablePMCArray"
+    push $P1044, $P1043
+    .return ($P1044)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<->"  :subid("265_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1043_tgt
-    .local int rx1043_pos
-    .local int rx1043_off
-    .local int rx1043_eos
-    .local int rx1043_rep
-    .local pmc rx1043_cur
-    (rx1043_cur, rx1043_pos, rx1043_tgt) = self."!cursor_start"()
-    rx1043_cur."!cursor_debug"("START ", "infix:sym<->")
-    .lex unicode:"$\x{a2}", rx1043_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1043_eos, rx1043_tgt
-    set rx1043_off, 0
-    lt rx1043_pos, 2, rx1043_start
-    sub rx1043_off, rx1043_pos, 1
-    substr rx1043_tgt, rx1043_tgt, rx1043_off
-  rx1043_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1047_done
-    goto rxscan1047_scan
-  rxscan1047_loop:
-    ($P10) = rx1043_cur."from"()
-    inc $P10
-    set rx1043_pos, $P10
-    ge rx1043_pos, rx1043_eos, rxscan1047_done
-  rxscan1047_scan:
-    set_addr $I10, rxscan1047_loop
-    rx1043_cur."!mark_push"(0, rx1043_pos, $I10)
-  rxscan1047_done:
-.annotate "line", 478
+.sub "infix:sym<->"  :subid("265_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1048_tgt
+    .local int rx1048_pos
+    .local int rx1048_off
+    .local int rx1048_eos
+    .local int rx1048_rep
+    .local pmc rx1048_cur
+    (rx1048_cur, rx1048_pos, rx1048_tgt) = self."!cursor_start"()
+    rx1048_cur."!cursor_debug"("START ", "infix:sym<->")
+    .lex unicode:"$\x{a2}", rx1048_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1048_eos, rx1048_tgt
+    set rx1048_off, 0
+    lt rx1048_pos, 2, rx1048_start
+    sub rx1048_off, rx1048_pos, 1
+    substr rx1048_tgt, rx1048_tgt, rx1048_off
+  rx1048_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1052_done
+    goto rxscan1052_scan
+  rxscan1052_loop:
+    ($P10) = rx1048_cur."from"()
+    inc $P10
+    set rx1048_pos, $P10
+    ge rx1048_pos, rx1048_eos, rxscan1052_done
+  rxscan1052_scan:
+    set_addr $I10, rxscan1052_loop
+    rx1048_cur."!mark_push"(0, rx1048_pos, $I10)
+  rxscan1052_done:
+.annotate "line", 482
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1048_fail
-    rx1043_cur."!mark_push"(0, rx1043_pos, $I10)
+    set_addr $I10, rxcap_1053_fail
+    rx1048_cur."!mark_push"(0, rx1048_pos, $I10)
   # rx literal  "-"
-    add $I11, rx1043_pos, 1
-    gt $I11, rx1043_eos, rx1043_fail
-    sub $I11, rx1043_pos, rx1043_off
-    substr $S10, rx1043_tgt, $I11, 1
-    ne $S10, "-", rx1043_fail
-    add rx1043_pos, 1
-    set_addr $I10, rxcap_1048_fail
-    ($I12, $I11) = rx1043_cur."!mark_peek"($I10)
-    rx1043_cur."!cursor_pos"($I11)
-    ($P10) = rx1043_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1043_pos, "")
-    rx1043_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1048_pos, 1
+    gt $I11, rx1048_eos, rx1048_fail
+    sub $I11, rx1048_pos, rx1048_off
+    substr $S10, rx1048_tgt, $I11, 1
+    ne $S10, "-", rx1048_fail
+    add rx1048_pos, 1
+    set_addr $I10, rxcap_1053_fail
+    ($I12, $I11) = rx1048_cur."!mark_peek"($I10)
+    rx1048_cur."!cursor_pos"($I11)
+    ($P10) = rx1048_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1048_pos, "")
+    rx1048_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1048_done
-  rxcap_1048_fail:
-    goto rx1043_fail
-  rxcap_1048_done:
+    goto rxcap_1053_done
+  rxcap_1053_fail:
+    goto rx1048_fail
+  rxcap_1053_done:
   # rx subrule "O" subtype=capture negate=
-    rx1043_cur."!cursor_pos"(rx1043_pos)
-    $P10 = rx1043_cur."O"("%additive, :pirop<sub>")
-    unless $P10, rx1043_fail
-    rx1043_cur."!mark_push"(0, -1, 0, $P10)
+    rx1048_cur."!cursor_pos"(rx1048_pos)
+    $P10 = rx1048_cur."O"("%additive, :pirop<sub>")
+    unless $P10, rx1048_fail
+    rx1048_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1043_pos = $P10."pos"()
+    rx1048_pos = $P10."pos"()
   # rx pass
-    rx1043_cur."!cursor_pass"(rx1043_pos, "infix:sym<->")
-    rx1043_cur."!cursor_debug"("PASS  ", "infix:sym<->", " at pos=", rx1043_pos)
-    .return (rx1043_cur)
-  rx1043_fail:
-.annotate "line", 413
-    (rx1043_rep, rx1043_pos, $I10, $P10) = rx1043_cur."!mark_fail"(0)
-    lt rx1043_pos, -1, rx1043_done
-    eq rx1043_pos, -1, rx1043_fail
+    rx1048_cur."!cursor_pass"(rx1048_pos, "infix:sym<->")
+    rx1048_cur."!cursor_debug"("PASS  ", "infix:sym<->", " at pos=", rx1048_pos)
+    .return (rx1048_cur)
+  rx1048_fail:
+.annotate "line", 417
+    (rx1048_rep, rx1048_pos, $I10, $P10) = rx1048_cur."!mark_fail"(0)
+    lt rx1048_pos, -1, rx1048_done
+    eq rx1048_pos, -1, rx1048_fail
     jump $I10
-  rx1043_done:
-    rx1043_cur."!cursor_fail"()
-    rx1043_cur."!cursor_debug"("FAIL  ", "infix:sym<->")
-    .return (rx1043_cur)
+  rx1048_done:
+    rx1048_cur."!cursor_fail"()
+    rx1048_cur."!cursor_debug"("FAIL  ", "infix:sym<->")
+    .return (rx1048_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<->"  :subid("266_1261064023.05912") :method
-.annotate "line", 413
-    $P1045 = self."!PREFIX__!subrule"("O", "-")
-    new $P1046, "ResizablePMCArray"
-    push $P1046, $P1045
-    .return ($P1046)
+.sub "!PREFIX__infix:sym<->"  :subid("266_1267204702.05125") :method
+.annotate "line", 417
+    $P1050 = self."!PREFIX__!subrule"("O", "-")
+    new $P1051, "ResizablePMCArray"
+    push $P1051, $P1050
+    .return ($P1051)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~>"  :subid("267_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1050_tgt
-    .local int rx1050_pos
-    .local int rx1050_off
-    .local int rx1050_eos
-    .local int rx1050_rep
-    .local pmc rx1050_cur
-    (rx1050_cur, rx1050_pos, rx1050_tgt) = self."!cursor_start"()
-    rx1050_cur."!cursor_debug"("START ", "infix:sym<~>")
-    .lex unicode:"$\x{a2}", rx1050_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1050_eos, rx1050_tgt
-    set rx1050_off, 0
-    lt rx1050_pos, 2, rx1050_start
-    sub rx1050_off, rx1050_pos, 1
-    substr rx1050_tgt, rx1050_tgt, rx1050_off
-  rx1050_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1054_done
-    goto rxscan1054_scan
-  rxscan1054_loop:
-    ($P10) = rx1050_cur."from"()
-    inc $P10
-    set rx1050_pos, $P10
-    ge rx1050_pos, rx1050_eos, rxscan1054_done
-  rxscan1054_scan:
-    set_addr $I10, rxscan1054_loop
-    rx1050_cur."!mark_push"(0, rx1050_pos, $I10)
-  rxscan1054_done:
-.annotate "line", 480
+.sub "infix:sym<~>"  :subid("267_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1055_tgt
+    .local int rx1055_pos
+    .local int rx1055_off
+    .local int rx1055_eos
+    .local int rx1055_rep
+    .local pmc rx1055_cur
+    (rx1055_cur, rx1055_pos, rx1055_tgt) = self."!cursor_start"()
+    rx1055_cur."!cursor_debug"("START ", "infix:sym<~>")
+    .lex unicode:"$\x{a2}", rx1055_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1055_eos, rx1055_tgt
+    set rx1055_off, 0
+    lt rx1055_pos, 2, rx1055_start
+    sub rx1055_off, rx1055_pos, 1
+    substr rx1055_tgt, rx1055_tgt, rx1055_off
+  rx1055_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1059_done
+    goto rxscan1059_scan
+  rxscan1059_loop:
+    ($P10) = rx1055_cur."from"()
+    inc $P10
+    set rx1055_pos, $P10
+    ge rx1055_pos, rx1055_eos, rxscan1059_done
+  rxscan1059_scan:
+    set_addr $I10, rxscan1059_loop
+    rx1055_cur."!mark_push"(0, rx1055_pos, $I10)
+  rxscan1059_done:
+.annotate "line", 484
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1055_fail
-    rx1050_cur."!mark_push"(0, rx1050_pos, $I10)
+    set_addr $I10, rxcap_1060_fail
+    rx1055_cur."!mark_push"(0, rx1055_pos, $I10)
   # rx literal  "~"
-    add $I11, rx1050_pos, 1
-    gt $I11, rx1050_eos, rx1050_fail
-    sub $I11, rx1050_pos, rx1050_off
-    substr $S10, rx1050_tgt, $I11, 1
-    ne $S10, "~", rx1050_fail
-    add rx1050_pos, 1
-    set_addr $I10, rxcap_1055_fail
-    ($I12, $I11) = rx1050_cur."!mark_peek"($I10)
-    rx1050_cur."!cursor_pos"($I11)
-    ($P10) = rx1050_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1050_pos, "")
-    rx1050_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1055_pos, 1
+    gt $I11, rx1055_eos, rx1055_fail
+    sub $I11, rx1055_pos, rx1055_off
+    substr $S10, rx1055_tgt, $I11, 1
+    ne $S10, "~", rx1055_fail
+    add rx1055_pos, 1
+    set_addr $I10, rxcap_1060_fail
+    ($I12, $I11) = rx1055_cur."!mark_peek"($I10)
+    rx1055_cur."!cursor_pos"($I11)
+    ($P10) = rx1055_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1055_pos, "")
+    rx1055_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1055_done
-  rxcap_1055_fail:
-    goto rx1050_fail
-  rxcap_1055_done:
+    goto rxcap_1060_done
+  rxcap_1060_fail:
+    goto rx1055_fail
+  rxcap_1060_done:
   # rx subrule "O" subtype=capture negate=
-    rx1050_cur."!cursor_pos"(rx1050_pos)
-    $P10 = rx1050_cur."O"("%concatenation , :pirop<concat>")
-    unless $P10, rx1050_fail
-    rx1050_cur."!mark_push"(0, -1, 0, $P10)
+    rx1055_cur."!cursor_pos"(rx1055_pos)
+    $P10 = rx1055_cur."O"("%concatenation , :pirop<concat>")
+    unless $P10, rx1055_fail
+    rx1055_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1050_pos = $P10."pos"()
+    rx1055_pos = $P10."pos"()
   # rx pass
-    rx1050_cur."!cursor_pass"(rx1050_pos, "infix:sym<~>")
-    rx1050_cur."!cursor_debug"("PASS  ", "infix:sym<~>", " at pos=", rx1050_pos)
-    .return (rx1050_cur)
-  rx1050_fail:
-.annotate "line", 413
-    (rx1050_rep, rx1050_pos, $I10, $P10) = rx1050_cur."!mark_fail"(0)
-    lt rx1050_pos, -1, rx1050_done
-    eq rx1050_pos, -1, rx1050_fail
+    rx1055_cur."!cursor_pass"(rx1055_pos, "infix:sym<~>")
+    rx1055_cur."!cursor_debug"("PASS  ", "infix:sym<~>", " at pos=", rx1055_pos)
+    .return (rx1055_cur)
+  rx1055_fail:
+.annotate "line", 417
+    (rx1055_rep, rx1055_pos, $I10, $P10) = rx1055_cur."!mark_fail"(0)
+    lt rx1055_pos, -1, rx1055_done
+    eq rx1055_pos, -1, rx1055_fail
     jump $I10
-  rx1050_done:
-    rx1050_cur."!cursor_fail"()
-    rx1050_cur."!cursor_debug"("FAIL  ", "infix:sym<~>")
-    .return (rx1050_cur)
+  rx1055_done:
+    rx1055_cur."!cursor_fail"()
+    rx1055_cur."!cursor_debug"("FAIL  ", "infix:sym<~>")
+    .return (rx1055_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~>"  :subid("268_1261064023.05912") :method
-.annotate "line", 413
-    $P1052 = self."!PREFIX__!subrule"("O", "~")
-    new $P1053, "ResizablePMCArray"
-    push $P1053, $P1052
-    .return ($P1053)
+.sub "!PREFIX__infix:sym<~>"  :subid("268_1267204702.05125") :method
+.annotate "line", 417
+    $P1057 = self."!PREFIX__!subrule"("O", "~")
+    new $P1058, "ResizablePMCArray"
+    push $P1058, $P1057
+    .return ($P1058)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<==>"  :subid("269_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1057_tgt
-    .local int rx1057_pos
-    .local int rx1057_off
-    .local int rx1057_eos
-    .local int rx1057_rep
-    .local pmc rx1057_cur
-    (rx1057_cur, rx1057_pos, rx1057_tgt) = self."!cursor_start"()
-    rx1057_cur."!cursor_debug"("START ", "infix:sym<==>")
-    .lex unicode:"$\x{a2}", rx1057_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1057_eos, rx1057_tgt
-    set rx1057_off, 0
-    lt rx1057_pos, 2, rx1057_start
-    sub rx1057_off, rx1057_pos, 1
-    substr rx1057_tgt, rx1057_tgt, rx1057_off
-  rx1057_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1061_done
-    goto rxscan1061_scan
-  rxscan1061_loop:
-    ($P10) = rx1057_cur."from"()
-    inc $P10
-    set rx1057_pos, $P10
-    ge rx1057_pos, rx1057_eos, rxscan1061_done
-  rxscan1061_scan:
-    set_addr $I10, rxscan1061_loop
-    rx1057_cur."!mark_push"(0, rx1057_pos, $I10)
-  rxscan1061_done:
-.annotate "line", 482
+.sub "infix:sym<==>"  :subid("269_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1062_tgt
+    .local int rx1062_pos
+    .local int rx1062_off
+    .local int rx1062_eos
+    .local int rx1062_rep
+    .local pmc rx1062_cur
+    (rx1062_cur, rx1062_pos, rx1062_tgt) = self."!cursor_start"()
+    rx1062_cur."!cursor_debug"("START ", "infix:sym<==>")
+    .lex unicode:"$\x{a2}", rx1062_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1062_eos, rx1062_tgt
+    set rx1062_off, 0
+    lt rx1062_pos, 2, rx1062_start
+    sub rx1062_off, rx1062_pos, 1
+    substr rx1062_tgt, rx1062_tgt, rx1062_off
+  rx1062_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1066_done
+    goto rxscan1066_scan
+  rxscan1066_loop:
+    ($P10) = rx1062_cur."from"()
+    inc $P10
+    set rx1062_pos, $P10
+    ge rx1062_pos, rx1062_eos, rxscan1066_done
+  rxscan1066_scan:
+    set_addr $I10, rxscan1066_loop
+    rx1062_cur."!mark_push"(0, rx1062_pos, $I10)
+  rxscan1066_done:
+.annotate "line", 486
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1062_fail
-    rx1057_cur."!mark_push"(0, rx1057_pos, $I10)
+    set_addr $I10, rxcap_1067_fail
+    rx1062_cur."!mark_push"(0, rx1062_pos, $I10)
   # rx literal  "=="
-    add $I11, rx1057_pos, 2
-    gt $I11, rx1057_eos, rx1057_fail
-    sub $I11, rx1057_pos, rx1057_off
-    substr $S10, rx1057_tgt, $I11, 2
-    ne $S10, "==", rx1057_fail
-    add rx1057_pos, 2
-    set_addr $I10, rxcap_1062_fail
-    ($I12, $I11) = rx1057_cur."!mark_peek"($I10)
-    rx1057_cur."!cursor_pos"($I11)
-    ($P10) = rx1057_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1057_pos, "")
-    rx1057_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1062_pos, 2
+    gt $I11, rx1062_eos, rx1062_fail
+    sub $I11, rx1062_pos, rx1062_off
+    substr $S10, rx1062_tgt, $I11, 2
+    ne $S10, "==", rx1062_fail
+    add rx1062_pos, 2
+    set_addr $I10, rxcap_1067_fail
+    ($I12, $I11) = rx1062_cur."!mark_peek"($I10)
+    rx1062_cur."!cursor_pos"($I11)
+    ($P10) = rx1062_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1062_pos, "")
+    rx1062_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1062_done
-  rxcap_1062_fail:
-    goto rx1057_fail
-  rxcap_1062_done:
+    goto rxcap_1067_done
+  rxcap_1067_fail:
+    goto rx1062_fail
+  rxcap_1067_done:
   # rx subrule "O" subtype=capture negate=
-    rx1057_cur."!cursor_pos"(rx1057_pos)
-    $P10 = rx1057_cur."O"("%relational, :pirop<iseq INn>")
-    unless $P10, rx1057_fail
-    rx1057_cur."!mark_push"(0, -1, 0, $P10)
+    rx1062_cur."!cursor_pos"(rx1062_pos)
+    $P10 = rx1062_cur."O"("%relational, :pirop<iseq INn>")
+    unless $P10, rx1062_fail
+    rx1062_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1057_pos = $P10."pos"()
+    rx1062_pos = $P10."pos"()
   # rx pass
-    rx1057_cur."!cursor_pass"(rx1057_pos, "infix:sym<==>")
-    rx1057_cur."!cursor_debug"("PASS  ", "infix:sym<==>", " at pos=", rx1057_pos)
-    .return (rx1057_cur)
-  rx1057_fail:
-.annotate "line", 413
-    (rx1057_rep, rx1057_pos, $I10, $P10) = rx1057_cur."!mark_fail"(0)
-    lt rx1057_pos, -1, rx1057_done
-    eq rx1057_pos, -1, rx1057_fail
+    rx1062_cur."!cursor_pass"(rx1062_pos, "infix:sym<==>")
+    rx1062_cur."!cursor_debug"("PASS  ", "infix:sym<==>", " at pos=", rx1062_pos)
+    .return (rx1062_cur)
+  rx1062_fail:
+.annotate "line", 417
+    (rx1062_rep, rx1062_pos, $I10, $P10) = rx1062_cur."!mark_fail"(0)
+    lt rx1062_pos, -1, rx1062_done
+    eq rx1062_pos, -1, rx1062_fail
     jump $I10
-  rx1057_done:
-    rx1057_cur."!cursor_fail"()
-    rx1057_cur."!cursor_debug"("FAIL  ", "infix:sym<==>")
-    .return (rx1057_cur)
+  rx1062_done:
+    rx1062_cur."!cursor_fail"()
+    rx1062_cur."!cursor_debug"("FAIL  ", "infix:sym<==>")
+    .return (rx1062_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<==>"  :subid("270_1261064023.05912") :method
-.annotate "line", 413
-    $P1059 = self."!PREFIX__!subrule"("O", "==")
-    new $P1060, "ResizablePMCArray"
-    push $P1060, $P1059
-    .return ($P1060)
+.sub "!PREFIX__infix:sym<==>"  :subid("270_1267204702.05125") :method
+.annotate "line", 417
+    $P1064 = self."!PREFIX__!subrule"("O", "==")
+    new $P1065, "ResizablePMCArray"
+    push $P1065, $P1064
+    .return ($P1065)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<!=>"  :subid("271_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1064_tgt
-    .local int rx1064_pos
-    .local int rx1064_off
-    .local int rx1064_eos
-    .local int rx1064_rep
-    .local pmc rx1064_cur
-    (rx1064_cur, rx1064_pos, rx1064_tgt) = self."!cursor_start"()
-    rx1064_cur."!cursor_debug"("START ", "infix:sym<!=>")
-    .lex unicode:"$\x{a2}", rx1064_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1064_eos, rx1064_tgt
-    set rx1064_off, 0
-    lt rx1064_pos, 2, rx1064_start
-    sub rx1064_off, rx1064_pos, 1
-    substr rx1064_tgt, rx1064_tgt, rx1064_off
-  rx1064_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1068_done
-    goto rxscan1068_scan
-  rxscan1068_loop:
-    ($P10) = rx1064_cur."from"()
-    inc $P10
-    set rx1064_pos, $P10
-    ge rx1064_pos, rx1064_eos, rxscan1068_done
-  rxscan1068_scan:
-    set_addr $I10, rxscan1068_loop
-    rx1064_cur."!mark_push"(0, rx1064_pos, $I10)
-  rxscan1068_done:
-.annotate "line", 483
+.sub "infix:sym<!=>"  :subid("271_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1069_tgt
+    .local int rx1069_pos
+    .local int rx1069_off
+    .local int rx1069_eos
+    .local int rx1069_rep
+    .local pmc rx1069_cur
+    (rx1069_cur, rx1069_pos, rx1069_tgt) = self."!cursor_start"()
+    rx1069_cur."!cursor_debug"("START ", "infix:sym<!=>")
+    .lex unicode:"$\x{a2}", rx1069_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1069_eos, rx1069_tgt
+    set rx1069_off, 0
+    lt rx1069_pos, 2, rx1069_start
+    sub rx1069_off, rx1069_pos, 1
+    substr rx1069_tgt, rx1069_tgt, rx1069_off
+  rx1069_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1073_done
+    goto rxscan1073_scan
+  rxscan1073_loop:
+    ($P10) = rx1069_cur."from"()
+    inc $P10
+    set rx1069_pos, $P10
+    ge rx1069_pos, rx1069_eos, rxscan1073_done
+  rxscan1073_scan:
+    set_addr $I10, rxscan1073_loop
+    rx1069_cur."!mark_push"(0, rx1069_pos, $I10)
+  rxscan1073_done:
+.annotate "line", 487
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1069_fail
-    rx1064_cur."!mark_push"(0, rx1064_pos, $I10)
+    set_addr $I10, rxcap_1074_fail
+    rx1069_cur."!mark_push"(0, rx1069_pos, $I10)
   # rx literal  "!="
-    add $I11, rx1064_pos, 2
-    gt $I11, rx1064_eos, rx1064_fail
-    sub $I11, rx1064_pos, rx1064_off
-    substr $S10, rx1064_tgt, $I11, 2
-    ne $S10, "!=", rx1064_fail
-    add rx1064_pos, 2
-    set_addr $I10, rxcap_1069_fail
-    ($I12, $I11) = rx1064_cur."!mark_peek"($I10)
-    rx1064_cur."!cursor_pos"($I11)
-    ($P10) = rx1064_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1064_pos, "")
-    rx1064_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1069_pos, 2
+    gt $I11, rx1069_eos, rx1069_fail
+    sub $I11, rx1069_pos, rx1069_off
+    substr $S10, rx1069_tgt, $I11, 2
+    ne $S10, "!=", rx1069_fail
+    add rx1069_pos, 2
+    set_addr $I10, rxcap_1074_fail
+    ($I12, $I11) = rx1069_cur."!mark_peek"($I10)
+    rx1069_cur."!cursor_pos"($I11)
+    ($P10) = rx1069_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1069_pos, "")
+    rx1069_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1069_done
-  rxcap_1069_fail:
-    goto rx1064_fail
-  rxcap_1069_done:
+    goto rxcap_1074_done
+  rxcap_1074_fail:
+    goto rx1069_fail
+  rxcap_1074_done:
   # rx subrule "O" subtype=capture negate=
-    rx1064_cur."!cursor_pos"(rx1064_pos)
-    $P10 = rx1064_cur."O"("%relational, :pirop<isne INn>")
-    unless $P10, rx1064_fail
-    rx1064_cur."!mark_push"(0, -1, 0, $P10)
+    rx1069_cur."!cursor_pos"(rx1069_pos)
+    $P10 = rx1069_cur."O"("%relational, :pirop<isne INn>")
+    unless $P10, rx1069_fail
+    rx1069_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1064_pos = $P10."pos"()
+    rx1069_pos = $P10."pos"()
   # rx pass
-    rx1064_cur."!cursor_pass"(rx1064_pos, "infix:sym<!=>")
-    rx1064_cur."!cursor_debug"("PASS  ", "infix:sym<!=>", " at pos=", rx1064_pos)
-    .return (rx1064_cur)
-  rx1064_fail:
-.annotate "line", 413
-    (rx1064_rep, rx1064_pos, $I10, $P10) = rx1064_cur."!mark_fail"(0)
-    lt rx1064_pos, -1, rx1064_done
-    eq rx1064_pos, -1, rx1064_fail
+    rx1069_cur."!cursor_pass"(rx1069_pos, "infix:sym<!=>")
+    rx1069_cur."!cursor_debug"("PASS  ", "infix:sym<!=>", " at pos=", rx1069_pos)
+    .return (rx1069_cur)
+  rx1069_fail:
+.annotate "line", 417
+    (rx1069_rep, rx1069_pos, $I10, $P10) = rx1069_cur."!mark_fail"(0)
+    lt rx1069_pos, -1, rx1069_done
+    eq rx1069_pos, -1, rx1069_fail
     jump $I10
-  rx1064_done:
-    rx1064_cur."!cursor_fail"()
-    rx1064_cur."!cursor_debug"("FAIL  ", "infix:sym<!=>")
-    .return (rx1064_cur)
+  rx1069_done:
+    rx1069_cur."!cursor_fail"()
+    rx1069_cur."!cursor_debug"("FAIL  ", "infix:sym<!=>")
+    .return (rx1069_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<!=>"  :subid("272_1261064023.05912") :method
-.annotate "line", 413
-    $P1066 = self."!PREFIX__!subrule"("O", "!=")
-    new $P1067, "ResizablePMCArray"
-    push $P1067, $P1066
-    .return ($P1067)
+.sub "!PREFIX__infix:sym<!=>"  :subid("272_1267204702.05125") :method
+.annotate "line", 417
+    $P1071 = self."!PREFIX__!subrule"("O", "!=")
+    new $P1072, "ResizablePMCArray"
+    push $P1072, $P1071
+    .return ($P1072)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<=>"  :subid("273_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1071_tgt
-    .local int rx1071_pos
-    .local int rx1071_off
-    .local int rx1071_eos
-    .local int rx1071_rep
-    .local pmc rx1071_cur
-    (rx1071_cur, rx1071_pos, rx1071_tgt) = self."!cursor_start"()
-    rx1071_cur."!cursor_debug"("START ", "infix:sym<<=>")
-    .lex unicode:"$\x{a2}", rx1071_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1071_eos, rx1071_tgt
-    set rx1071_off, 0
-    lt rx1071_pos, 2, rx1071_start
-    sub rx1071_off, rx1071_pos, 1
-    substr rx1071_tgt, rx1071_tgt, rx1071_off
-  rx1071_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1075_done
-    goto rxscan1075_scan
-  rxscan1075_loop:
-    ($P10) = rx1071_cur."from"()
-    inc $P10
-    set rx1071_pos, $P10
-    ge rx1071_pos, rx1071_eos, rxscan1075_done
-  rxscan1075_scan:
-    set_addr $I10, rxscan1075_loop
-    rx1071_cur."!mark_push"(0, rx1071_pos, $I10)
-  rxscan1075_done:
-.annotate "line", 484
+.sub "infix:sym<<=>"  :subid("273_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1076_tgt
+    .local int rx1076_pos
+    .local int rx1076_off
+    .local int rx1076_eos
+    .local int rx1076_rep
+    .local pmc rx1076_cur
+    (rx1076_cur, rx1076_pos, rx1076_tgt) = self."!cursor_start"()
+    rx1076_cur."!cursor_debug"("START ", "infix:sym<<=>")
+    .lex unicode:"$\x{a2}", rx1076_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1076_eos, rx1076_tgt
+    set rx1076_off, 0
+    lt rx1076_pos, 2, rx1076_start
+    sub rx1076_off, rx1076_pos, 1
+    substr rx1076_tgt, rx1076_tgt, rx1076_off
+  rx1076_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1080_done
+    goto rxscan1080_scan
+  rxscan1080_loop:
+    ($P10) = rx1076_cur."from"()
+    inc $P10
+    set rx1076_pos, $P10
+    ge rx1076_pos, rx1076_eos, rxscan1080_done
+  rxscan1080_scan:
+    set_addr $I10, rxscan1080_loop
+    rx1076_cur."!mark_push"(0, rx1076_pos, $I10)
+  rxscan1080_done:
+.annotate "line", 488
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1076_fail
-    rx1071_cur."!mark_push"(0, rx1071_pos, $I10)
+    set_addr $I10, rxcap_1081_fail
+    rx1076_cur."!mark_push"(0, rx1076_pos, $I10)
   # rx literal  "<="
-    add $I11, rx1071_pos, 2
-    gt $I11, rx1071_eos, rx1071_fail
-    sub $I11, rx1071_pos, rx1071_off
-    substr $S10, rx1071_tgt, $I11, 2
-    ne $S10, "<=", rx1071_fail
-    add rx1071_pos, 2
-    set_addr $I10, rxcap_1076_fail
-    ($I12, $I11) = rx1071_cur."!mark_peek"($I10)
-    rx1071_cur."!cursor_pos"($I11)
-    ($P10) = rx1071_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1071_pos, "")
-    rx1071_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1076_pos, 2
+    gt $I11, rx1076_eos, rx1076_fail
+    sub $I11, rx1076_pos, rx1076_off
+    substr $S10, rx1076_tgt, $I11, 2
+    ne $S10, "<=", rx1076_fail
+    add rx1076_pos, 2
+    set_addr $I10, rxcap_1081_fail
+    ($I12, $I11) = rx1076_cur."!mark_peek"($I10)
+    rx1076_cur."!cursor_pos"($I11)
+    ($P10) = rx1076_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1076_pos, "")
+    rx1076_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1076_done
-  rxcap_1076_fail:
-    goto rx1071_fail
-  rxcap_1076_done:
+    goto rxcap_1081_done
+  rxcap_1081_fail:
+    goto rx1076_fail
+  rxcap_1081_done:
   # rx subrule "O" subtype=capture negate=
-    rx1071_cur."!cursor_pos"(rx1071_pos)
-    $P10 = rx1071_cur."O"("%relational, :pirop<isle INn>")
-    unless $P10, rx1071_fail
-    rx1071_cur."!mark_push"(0, -1, 0, $P10)
+    rx1076_cur."!cursor_pos"(rx1076_pos)
+    $P10 = rx1076_cur."O"("%relational, :pirop<isle INn>")
+    unless $P10, rx1076_fail
+    rx1076_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1071_pos = $P10."pos"()
+    rx1076_pos = $P10."pos"()
   # rx pass
-    rx1071_cur."!cursor_pass"(rx1071_pos, "infix:sym<<=>")
-    rx1071_cur."!cursor_debug"("PASS  ", "infix:sym<<=>", " at pos=", rx1071_pos)
-    .return (rx1071_cur)
-  rx1071_fail:
-.annotate "line", 413
-    (rx1071_rep, rx1071_pos, $I10, $P10) = rx1071_cur."!mark_fail"(0)
-    lt rx1071_pos, -1, rx1071_done
-    eq rx1071_pos, -1, rx1071_fail
+    rx1076_cur."!cursor_pass"(rx1076_pos, "infix:sym<<=>")
+    rx1076_cur."!cursor_debug"("PASS  ", "infix:sym<<=>", " at pos=", rx1076_pos)
+    .return (rx1076_cur)
+  rx1076_fail:
+.annotate "line", 417
+    (rx1076_rep, rx1076_pos, $I10, $P10) = rx1076_cur."!mark_fail"(0)
+    lt rx1076_pos, -1, rx1076_done
+    eq rx1076_pos, -1, rx1076_fail
     jump $I10
-  rx1071_done:
-    rx1071_cur."!cursor_fail"()
-    rx1071_cur."!cursor_debug"("FAIL  ", "infix:sym<<=>")
-    .return (rx1071_cur)
+  rx1076_done:
+    rx1076_cur."!cursor_fail"()
+    rx1076_cur."!cursor_debug"("FAIL  ", "infix:sym<<=>")
+    .return (rx1076_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<=>"  :subid("274_1261064023.05912") :method
-.annotate "line", 413
-    $P1073 = self."!PREFIX__!subrule"("O", "<=")
-    new $P1074, "ResizablePMCArray"
-    push $P1074, $P1073
-    .return ($P1074)
+.sub "!PREFIX__infix:sym<<=>"  :subid("274_1267204702.05125") :method
+.annotate "line", 417
+    $P1078 = self."!PREFIX__!subrule"("O", "<=")
+    new $P1079, "ResizablePMCArray"
+    push $P1079, $P1078
+    .return ($P1079)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>=>"  :subid("275_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1078_tgt
-    .local int rx1078_pos
-    .local int rx1078_off
-    .local int rx1078_eos
-    .local int rx1078_rep
-    .local pmc rx1078_cur
-    (rx1078_cur, rx1078_pos, rx1078_tgt) = self."!cursor_start"()
-    rx1078_cur."!cursor_debug"("START ", "infix:sym<>=>")
-    .lex unicode:"$\x{a2}", rx1078_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1078_eos, rx1078_tgt
-    set rx1078_off, 0
-    lt rx1078_pos, 2, rx1078_start
-    sub rx1078_off, rx1078_pos, 1
-    substr rx1078_tgt, rx1078_tgt, rx1078_off
-  rx1078_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1082_done
-    goto rxscan1082_scan
-  rxscan1082_loop:
-    ($P10) = rx1078_cur."from"()
-    inc $P10
-    set rx1078_pos, $P10
-    ge rx1078_pos, rx1078_eos, rxscan1082_done
-  rxscan1082_scan:
-    set_addr $I10, rxscan1082_loop
-    rx1078_cur."!mark_push"(0, rx1078_pos, $I10)
-  rxscan1082_done:
-.annotate "line", 485
+.sub "infix:sym<>=>"  :subid("275_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1083_tgt
+    .local int rx1083_pos
+    .local int rx1083_off
+    .local int rx1083_eos
+    .local int rx1083_rep
+    .local pmc rx1083_cur
+    (rx1083_cur, rx1083_pos, rx1083_tgt) = self."!cursor_start"()
+    rx1083_cur."!cursor_debug"("START ", "infix:sym<>=>")
+    .lex unicode:"$\x{a2}", rx1083_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1083_eos, rx1083_tgt
+    set rx1083_off, 0
+    lt rx1083_pos, 2, rx1083_start
+    sub rx1083_off, rx1083_pos, 1
+    substr rx1083_tgt, rx1083_tgt, rx1083_off
+  rx1083_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1087_done
+    goto rxscan1087_scan
+  rxscan1087_loop:
+    ($P10) = rx1083_cur."from"()
+    inc $P10
+    set rx1083_pos, $P10
+    ge rx1083_pos, rx1083_eos, rxscan1087_done
+  rxscan1087_scan:
+    set_addr $I10, rxscan1087_loop
+    rx1083_cur."!mark_push"(0, rx1083_pos, $I10)
+  rxscan1087_done:
+.annotate "line", 489
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1083_fail
-    rx1078_cur."!mark_push"(0, rx1078_pos, $I10)
+    set_addr $I10, rxcap_1088_fail
+    rx1083_cur."!mark_push"(0, rx1083_pos, $I10)
   # rx literal  ">="
-    add $I11, rx1078_pos, 2
-    gt $I11, rx1078_eos, rx1078_fail
-    sub $I11, rx1078_pos, rx1078_off
-    substr $S10, rx1078_tgt, $I11, 2
-    ne $S10, ">=", rx1078_fail
-    add rx1078_pos, 2
-    set_addr $I10, rxcap_1083_fail
-    ($I12, $I11) = rx1078_cur."!mark_peek"($I10)
-    rx1078_cur."!cursor_pos"($I11)
-    ($P10) = rx1078_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1078_pos, "")
-    rx1078_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1083_pos, 2
+    gt $I11, rx1083_eos, rx1083_fail
+    sub $I11, rx1083_pos, rx1083_off
+    substr $S10, rx1083_tgt, $I11, 2
+    ne $S10, ">=", rx1083_fail
+    add rx1083_pos, 2
+    set_addr $I10, rxcap_1088_fail
+    ($I12, $I11) = rx1083_cur."!mark_peek"($I10)
+    rx1083_cur."!cursor_pos"($I11)
+    ($P10) = rx1083_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1083_pos, "")
+    rx1083_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1083_done
-  rxcap_1083_fail:
-    goto rx1078_fail
-  rxcap_1083_done:
+    goto rxcap_1088_done
+  rxcap_1088_fail:
+    goto rx1083_fail
+  rxcap_1088_done:
   # rx subrule "O" subtype=capture negate=
-    rx1078_cur."!cursor_pos"(rx1078_pos)
-    $P10 = rx1078_cur."O"("%relational, :pirop<isge INn>")
-    unless $P10, rx1078_fail
-    rx1078_cur."!mark_push"(0, -1, 0, $P10)
+    rx1083_cur."!cursor_pos"(rx1083_pos)
+    $P10 = rx1083_cur."O"("%relational, :pirop<isge INn>")
+    unless $P10, rx1083_fail
+    rx1083_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1078_pos = $P10."pos"()
+    rx1083_pos = $P10."pos"()
   # rx pass
-    rx1078_cur."!cursor_pass"(rx1078_pos, "infix:sym<>=>")
-    rx1078_cur."!cursor_debug"("PASS  ", "infix:sym<>=>", " at pos=", rx1078_pos)
-    .return (rx1078_cur)
-  rx1078_fail:
-.annotate "line", 413
-    (rx1078_rep, rx1078_pos, $I10, $P10) = rx1078_cur."!mark_fail"(0)
-    lt rx1078_pos, -1, rx1078_done
-    eq rx1078_pos, -1, rx1078_fail
+    rx1083_cur."!cursor_pass"(rx1083_pos, "infix:sym<>=>")
+    rx1083_cur."!cursor_debug"("PASS  ", "infix:sym<>=>", " at pos=", rx1083_pos)
+    .return (rx1083_cur)
+  rx1083_fail:
+.annotate "line", 417
+    (rx1083_rep, rx1083_pos, $I10, $P10) = rx1083_cur."!mark_fail"(0)
+    lt rx1083_pos, -1, rx1083_done
+    eq rx1083_pos, -1, rx1083_fail
     jump $I10
-  rx1078_done:
-    rx1078_cur."!cursor_fail"()
-    rx1078_cur."!cursor_debug"("FAIL  ", "infix:sym<>=>")
-    .return (rx1078_cur)
+  rx1083_done:
+    rx1083_cur."!cursor_fail"()
+    rx1083_cur."!cursor_debug"("FAIL  ", "infix:sym<>=>")
+    .return (rx1083_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>=>"  :subid("276_1261064023.05912") :method
-.annotate "line", 413
-    $P1080 = self."!PREFIX__!subrule"("O", ">=")
-    new $P1081, "ResizablePMCArray"
-    push $P1081, $P1080
-    .return ($P1081)
+.sub "!PREFIX__infix:sym<>=>"  :subid("276_1267204702.05125") :method
+.annotate "line", 417
+    $P1085 = self."!PREFIX__!subrule"("O", ">=")
+    new $P1086, "ResizablePMCArray"
+    push $P1086, $P1085
+    .return ($P1086)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<>"  :subid("277_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1085_tgt
-    .local int rx1085_pos
-    .local int rx1085_off
-    .local int rx1085_eos
-    .local int rx1085_rep
-    .local pmc rx1085_cur
-    (rx1085_cur, rx1085_pos, rx1085_tgt) = self."!cursor_start"()
-    rx1085_cur."!cursor_debug"("START ", "infix:sym<<>")
-    .lex unicode:"$\x{a2}", rx1085_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1085_eos, rx1085_tgt
-    set rx1085_off, 0
-    lt rx1085_pos, 2, rx1085_start
-    sub rx1085_off, rx1085_pos, 1
-    substr rx1085_tgt, rx1085_tgt, rx1085_off
-  rx1085_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1089_done
-    goto rxscan1089_scan
-  rxscan1089_loop:
-    ($P10) = rx1085_cur."from"()
-    inc $P10
-    set rx1085_pos, $P10
-    ge rx1085_pos, rx1085_eos, rxscan1089_done
-  rxscan1089_scan:
-    set_addr $I10, rxscan1089_loop
-    rx1085_cur."!mark_push"(0, rx1085_pos, $I10)
-  rxscan1089_done:
-.annotate "line", 486
+.sub "infix:sym<<>"  :subid("277_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1090_tgt
+    .local int rx1090_pos
+    .local int rx1090_off
+    .local int rx1090_eos
+    .local int rx1090_rep
+    .local pmc rx1090_cur
+    (rx1090_cur, rx1090_pos, rx1090_tgt) = self."!cursor_start"()
+    rx1090_cur."!cursor_debug"("START ", "infix:sym<<>")
+    .lex unicode:"$\x{a2}", rx1090_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1090_eos, rx1090_tgt
+    set rx1090_off, 0
+    lt rx1090_pos, 2, rx1090_start
+    sub rx1090_off, rx1090_pos, 1
+    substr rx1090_tgt, rx1090_tgt, rx1090_off
+  rx1090_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1094_done
+    goto rxscan1094_scan
+  rxscan1094_loop:
+    ($P10) = rx1090_cur."from"()
+    inc $P10
+    set rx1090_pos, $P10
+    ge rx1090_pos, rx1090_eos, rxscan1094_done
+  rxscan1094_scan:
+    set_addr $I10, rxscan1094_loop
+    rx1090_cur."!mark_push"(0, rx1090_pos, $I10)
+  rxscan1094_done:
+.annotate "line", 490
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1090_fail
-    rx1085_cur."!mark_push"(0, rx1085_pos, $I10)
+    set_addr $I10, rxcap_1095_fail
+    rx1090_cur."!mark_push"(0, rx1090_pos, $I10)
   # rx literal  "<"
-    add $I11, rx1085_pos, 1
-    gt $I11, rx1085_eos, rx1085_fail
-    sub $I11, rx1085_pos, rx1085_off
-    substr $S10, rx1085_tgt, $I11, 1
-    ne $S10, "<", rx1085_fail
-    add rx1085_pos, 1
-    set_addr $I10, rxcap_1090_fail
-    ($I12, $I11) = rx1085_cur."!mark_peek"($I10)
-    rx1085_cur."!cursor_pos"($I11)
-    ($P10) = rx1085_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1085_pos, "")
-    rx1085_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1090_pos, 1
+    gt $I11, rx1090_eos, rx1090_fail
+    sub $I11, rx1090_pos, rx1090_off
+    substr $S10, rx1090_tgt, $I11, 1
+    ne $S10, "<", rx1090_fail
+    add rx1090_pos, 1
+    set_addr $I10, rxcap_1095_fail
+    ($I12, $I11) = rx1090_cur."!mark_peek"($I10)
+    rx1090_cur."!cursor_pos"($I11)
+    ($P10) = rx1090_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1090_pos, "")
+    rx1090_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1090_done
-  rxcap_1090_fail:
-    goto rx1085_fail
-  rxcap_1090_done:
+    goto rxcap_1095_done
+  rxcap_1095_fail:
+    goto rx1090_fail
+  rxcap_1095_done:
   # rx subrule "O" subtype=capture negate=
-    rx1085_cur."!cursor_pos"(rx1085_pos)
-    $P10 = rx1085_cur."O"("%relational, :pirop<islt INn>")
-    unless $P10, rx1085_fail
-    rx1085_cur."!mark_push"(0, -1, 0, $P10)
+    rx1090_cur."!cursor_pos"(rx1090_pos)
+    $P10 = rx1090_cur."O"("%relational, :pirop<islt INn>")
+    unless $P10, rx1090_fail
+    rx1090_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1085_pos = $P10."pos"()
+    rx1090_pos = $P10."pos"()
   # rx pass
-    rx1085_cur."!cursor_pass"(rx1085_pos, "infix:sym<<>")
-    rx1085_cur."!cursor_debug"("PASS  ", "infix:sym<<>", " at pos=", rx1085_pos)
-    .return (rx1085_cur)
-  rx1085_fail:
-.annotate "line", 413
-    (rx1085_rep, rx1085_pos, $I10, $P10) = rx1085_cur."!mark_fail"(0)
-    lt rx1085_pos, -1, rx1085_done
-    eq rx1085_pos, -1, rx1085_fail
+    rx1090_cur."!cursor_pass"(rx1090_pos, "infix:sym<<>")
+    rx1090_cur."!cursor_debug"("PASS  ", "infix:sym<<>", " at pos=", rx1090_pos)
+    .return (rx1090_cur)
+  rx1090_fail:
+.annotate "line", 417
+    (rx1090_rep, rx1090_pos, $I10, $P10) = rx1090_cur."!mark_fail"(0)
+    lt rx1090_pos, -1, rx1090_done
+    eq rx1090_pos, -1, rx1090_fail
     jump $I10
-  rx1085_done:
-    rx1085_cur."!cursor_fail"()
-    rx1085_cur."!cursor_debug"("FAIL  ", "infix:sym<<>")
-    .return (rx1085_cur)
+  rx1090_done:
+    rx1090_cur."!cursor_fail"()
+    rx1090_cur."!cursor_debug"("FAIL  ", "infix:sym<<>")
+    .return (rx1090_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<>"  :subid("278_1261064023.05912") :method
-.annotate "line", 413
-    $P1087 = self."!PREFIX__!subrule"("O", "<")
-    new $P1088, "ResizablePMCArray"
-    push $P1088, $P1087
-    .return ($P1088)
+.sub "!PREFIX__infix:sym<<>"  :subid("278_1267204702.05125") :method
+.annotate "line", 417
+    $P1092 = self."!PREFIX__!subrule"("O", "<")
+    new $P1093, "ResizablePMCArray"
+    push $P1093, $P1092
+    .return ($P1093)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>>"  :subid("279_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1092_tgt
-    .local int rx1092_pos
-    .local int rx1092_off
-    .local int rx1092_eos
-    .local int rx1092_rep
-    .local pmc rx1092_cur
-    (rx1092_cur, rx1092_pos, rx1092_tgt) = self."!cursor_start"()
-    rx1092_cur."!cursor_debug"("START ", "infix:sym<>>")
-    .lex unicode:"$\x{a2}", rx1092_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1092_eos, rx1092_tgt
-    set rx1092_off, 0
-    lt rx1092_pos, 2, rx1092_start
-    sub rx1092_off, rx1092_pos, 1
-    substr rx1092_tgt, rx1092_tgt, rx1092_off
-  rx1092_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1096_done
-    goto rxscan1096_scan
-  rxscan1096_loop:
-    ($P10) = rx1092_cur."from"()
-    inc $P10
-    set rx1092_pos, $P10
-    ge rx1092_pos, rx1092_eos, rxscan1096_done
-  rxscan1096_scan:
-    set_addr $I10, rxscan1096_loop
-    rx1092_cur."!mark_push"(0, rx1092_pos, $I10)
-  rxscan1096_done:
-.annotate "line", 487
+.sub "infix:sym<>>"  :subid("279_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1097_tgt
+    .local int rx1097_pos
+    .local int rx1097_off
+    .local int rx1097_eos
+    .local int rx1097_rep
+    .local pmc rx1097_cur
+    (rx1097_cur, rx1097_pos, rx1097_tgt) = self."!cursor_start"()
+    rx1097_cur."!cursor_debug"("START ", "infix:sym<>>")
+    .lex unicode:"$\x{a2}", rx1097_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1097_eos, rx1097_tgt
+    set rx1097_off, 0
+    lt rx1097_pos, 2, rx1097_start
+    sub rx1097_off, rx1097_pos, 1
+    substr rx1097_tgt, rx1097_tgt, rx1097_off
+  rx1097_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1101_done
+    goto rxscan1101_scan
+  rxscan1101_loop:
+    ($P10) = rx1097_cur."from"()
+    inc $P10
+    set rx1097_pos, $P10
+    ge rx1097_pos, rx1097_eos, rxscan1101_done
+  rxscan1101_scan:
+    set_addr $I10, rxscan1101_loop
+    rx1097_cur."!mark_push"(0, rx1097_pos, $I10)
+  rxscan1101_done:
+.annotate "line", 491
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1097_fail
-    rx1092_cur."!mark_push"(0, rx1092_pos, $I10)
+    set_addr $I10, rxcap_1102_fail
+    rx1097_cur."!mark_push"(0, rx1097_pos, $I10)
   # rx literal  ">"
-    add $I11, rx1092_pos, 1
-    gt $I11, rx1092_eos, rx1092_fail
-    sub $I11, rx1092_pos, rx1092_off
-    substr $S10, rx1092_tgt, $I11, 1
-    ne $S10, ">", rx1092_fail
-    add rx1092_pos, 1
-    set_addr $I10, rxcap_1097_fail
-    ($I12, $I11) = rx1092_cur."!mark_peek"($I10)
-    rx1092_cur."!cursor_pos"($I11)
-    ($P10) = rx1092_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1092_pos, "")
-    rx1092_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1097_pos, 1
+    gt $I11, rx1097_eos, rx1097_fail
+    sub $I11, rx1097_pos, rx1097_off
+    substr $S10, rx1097_tgt, $I11, 1
+    ne $S10, ">", rx1097_fail
+    add rx1097_pos, 1
+    set_addr $I10, rxcap_1102_fail
+    ($I12, $I11) = rx1097_cur."!mark_peek"($I10)
+    rx1097_cur."!cursor_pos"($I11)
+    ($P10) = rx1097_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1097_pos, "")
+    rx1097_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1097_done
-  rxcap_1097_fail:
-    goto rx1092_fail
-  rxcap_1097_done:
+    goto rxcap_1102_done
+  rxcap_1102_fail:
+    goto rx1097_fail
+  rxcap_1102_done:
   # rx subrule "O" subtype=capture negate=
-    rx1092_cur."!cursor_pos"(rx1092_pos)
-    $P10 = rx1092_cur."O"("%relational, :pirop<isgt INn>")
-    unless $P10, rx1092_fail
-    rx1092_cur."!mark_push"(0, -1, 0, $P10)
+    rx1097_cur."!cursor_pos"(rx1097_pos)
+    $P10 = rx1097_cur."O"("%relational, :pirop<isgt INn>")
+    unless $P10, rx1097_fail
+    rx1097_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1092_pos = $P10."pos"()
+    rx1097_pos = $P10."pos"()
   # rx pass
-    rx1092_cur."!cursor_pass"(rx1092_pos, "infix:sym<>>")
-    rx1092_cur."!cursor_debug"("PASS  ", "infix:sym<>>", " at pos=", rx1092_pos)
-    .return (rx1092_cur)
-  rx1092_fail:
-.annotate "line", 413
-    (rx1092_rep, rx1092_pos, $I10, $P10) = rx1092_cur."!mark_fail"(0)
-    lt rx1092_pos, -1, rx1092_done
-    eq rx1092_pos, -1, rx1092_fail
+    rx1097_cur."!cursor_pass"(rx1097_pos, "infix:sym<>>")
+    rx1097_cur."!cursor_debug"("PASS  ", "infix:sym<>>", " at pos=", rx1097_pos)
+    .return (rx1097_cur)
+  rx1097_fail:
+.annotate "line", 417
+    (rx1097_rep, rx1097_pos, $I10, $P10) = rx1097_cur."!mark_fail"(0)
+    lt rx1097_pos, -1, rx1097_done
+    eq rx1097_pos, -1, rx1097_fail
     jump $I10
-  rx1092_done:
-    rx1092_cur."!cursor_fail"()
-    rx1092_cur."!cursor_debug"("FAIL  ", "infix:sym<>>")
-    .return (rx1092_cur)
+  rx1097_done:
+    rx1097_cur."!cursor_fail"()
+    rx1097_cur."!cursor_debug"("FAIL  ", "infix:sym<>>")
+    .return (rx1097_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>>"  :subid("280_1261064023.05912") :method
-.annotate "line", 413
-    $P1094 = self."!PREFIX__!subrule"("O", ">")
-    new $P1095, "ResizablePMCArray"
-    push $P1095, $P1094
-    .return ($P1095)
+.sub "!PREFIX__infix:sym<>>"  :subid("280_1267204702.05125") :method
+.annotate "line", 417
+    $P1099 = self."!PREFIX__!subrule"("O", ">")
+    new $P1100, "ResizablePMCArray"
+    push $P1100, $P1099
+    .return ($P1100)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<eq>"  :subid("281_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1099_tgt
-    .local int rx1099_pos
-    .local int rx1099_off
-    .local int rx1099_eos
-    .local int rx1099_rep
-    .local pmc rx1099_cur
-    (rx1099_cur, rx1099_pos, rx1099_tgt) = self."!cursor_start"()
-    rx1099_cur."!cursor_debug"("START ", "infix:sym<eq>")
-    .lex unicode:"$\x{a2}", rx1099_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1099_eos, rx1099_tgt
-    set rx1099_off, 0
-    lt rx1099_pos, 2, rx1099_start
-    sub rx1099_off, rx1099_pos, 1
-    substr rx1099_tgt, rx1099_tgt, rx1099_off
-  rx1099_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1103_done
-    goto rxscan1103_scan
-  rxscan1103_loop:
-    ($P10) = rx1099_cur."from"()
-    inc $P10
-    set rx1099_pos, $P10
-    ge rx1099_pos, rx1099_eos, rxscan1103_done
-  rxscan1103_scan:
-    set_addr $I10, rxscan1103_loop
-    rx1099_cur."!mark_push"(0, rx1099_pos, $I10)
-  rxscan1103_done:
-.annotate "line", 488
+.sub "infix:sym<eq>"  :subid("281_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1104_tgt
+    .local int rx1104_pos
+    .local int rx1104_off
+    .local int rx1104_eos
+    .local int rx1104_rep
+    .local pmc rx1104_cur
+    (rx1104_cur, rx1104_pos, rx1104_tgt) = self."!cursor_start"()
+    rx1104_cur."!cursor_debug"("START ", "infix:sym<eq>")
+    .lex unicode:"$\x{a2}", rx1104_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1104_eos, rx1104_tgt
+    set rx1104_off, 0
+    lt rx1104_pos, 2, rx1104_start
+    sub rx1104_off, rx1104_pos, 1
+    substr rx1104_tgt, rx1104_tgt, rx1104_off
+  rx1104_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1108_done
+    goto rxscan1108_scan
+  rxscan1108_loop:
+    ($P10) = rx1104_cur."from"()
+    inc $P10
+    set rx1104_pos, $P10
+    ge rx1104_pos, rx1104_eos, rxscan1108_done
+  rxscan1108_scan:
+    set_addr $I10, rxscan1108_loop
+    rx1104_cur."!mark_push"(0, rx1104_pos, $I10)
+  rxscan1108_done:
+.annotate "line", 492
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1104_fail
-    rx1099_cur."!mark_push"(0, rx1099_pos, $I10)
+    set_addr $I10, rxcap_1109_fail
+    rx1104_cur."!mark_push"(0, rx1104_pos, $I10)
   # rx literal  "eq"
-    add $I11, rx1099_pos, 2
-    gt $I11, rx1099_eos, rx1099_fail
-    sub $I11, rx1099_pos, rx1099_off
-    substr $S10, rx1099_tgt, $I11, 2
-    ne $S10, "eq", rx1099_fail
-    add rx1099_pos, 2
-    set_addr $I10, rxcap_1104_fail
-    ($I12, $I11) = rx1099_cur."!mark_peek"($I10)
-    rx1099_cur."!cursor_pos"($I11)
-    ($P10) = rx1099_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1099_pos, "")
-    rx1099_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1104_pos, 2
+    gt $I11, rx1104_eos, rx1104_fail
+    sub $I11, rx1104_pos, rx1104_off
+    substr $S10, rx1104_tgt, $I11, 2
+    ne $S10, "eq", rx1104_fail
+    add rx1104_pos, 2
+    set_addr $I10, rxcap_1109_fail
+    ($I12, $I11) = rx1104_cur."!mark_peek"($I10)
+    rx1104_cur."!cursor_pos"($I11)
+    ($P10) = rx1104_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1104_pos, "")
+    rx1104_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1104_done
-  rxcap_1104_fail:
-    goto rx1099_fail
-  rxcap_1104_done:
+    goto rxcap_1109_done
+  rxcap_1109_fail:
+    goto rx1104_fail
+  rxcap_1109_done:
   # rx subrule "O" subtype=capture negate=
-    rx1099_cur."!cursor_pos"(rx1099_pos)
-    $P10 = rx1099_cur."O"("%relational, :pirop<iseq ISs>")
-    unless $P10, rx1099_fail
-    rx1099_cur."!mark_push"(0, -1, 0, $P10)
+    rx1104_cur."!cursor_pos"(rx1104_pos)
+    $P10 = rx1104_cur."O"("%relational, :pirop<iseq ISs>")
+    unless $P10, rx1104_fail
+    rx1104_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1099_pos = $P10."pos"()
+    rx1104_pos = $P10."pos"()
   # rx pass
-    rx1099_cur."!cursor_pass"(rx1099_pos, "infix:sym<eq>")
-    rx1099_cur."!cursor_debug"("PASS  ", "infix:sym<eq>", " at pos=", rx1099_pos)
-    .return (rx1099_cur)
-  rx1099_fail:
-.annotate "line", 413
-    (rx1099_rep, rx1099_pos, $I10, $P10) = rx1099_cur."!mark_fail"(0)
-    lt rx1099_pos, -1, rx1099_done
-    eq rx1099_pos, -1, rx1099_fail
+    rx1104_cur."!cursor_pass"(rx1104_pos, "infix:sym<eq>")
+    rx1104_cur."!cursor_debug"("PASS  ", "infix:sym<eq>", " at pos=", rx1104_pos)
+    .return (rx1104_cur)
+  rx1104_fail:
+.annotate "line", 417
+    (rx1104_rep, rx1104_pos, $I10, $P10) = rx1104_cur."!mark_fail"(0)
+    lt rx1104_pos, -1, rx1104_done
+    eq rx1104_pos, -1, rx1104_fail
     jump $I10
-  rx1099_done:
-    rx1099_cur."!cursor_fail"()
-    rx1099_cur."!cursor_debug"("FAIL  ", "infix:sym<eq>")
-    .return (rx1099_cur)
+  rx1104_done:
+    rx1104_cur."!cursor_fail"()
+    rx1104_cur."!cursor_debug"("FAIL  ", "infix:sym<eq>")
+    .return (rx1104_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<eq>"  :subid("282_1261064023.05912") :method
-.annotate "line", 413
-    $P1101 = self."!PREFIX__!subrule"("O", "eq")
-    new $P1102, "ResizablePMCArray"
-    push $P1102, $P1101
-    .return ($P1102)
+.sub "!PREFIX__infix:sym<eq>"  :subid("282_1267204702.05125") :method
+.annotate "line", 417
+    $P1106 = self."!PREFIX__!subrule"("O", "eq")
+    new $P1107, "ResizablePMCArray"
+    push $P1107, $P1106
+    .return ($P1107)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ne>"  :subid("283_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1106_tgt
-    .local int rx1106_pos
-    .local int rx1106_off
-    .local int rx1106_eos
-    .local int rx1106_rep
-    .local pmc rx1106_cur
-    (rx1106_cur, rx1106_pos, rx1106_tgt) = self."!cursor_start"()
-    rx1106_cur."!cursor_debug"("START ", "infix:sym<ne>")
-    .lex unicode:"$\x{a2}", rx1106_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1106_eos, rx1106_tgt
-    set rx1106_off, 0
-    lt rx1106_pos, 2, rx1106_start
-    sub rx1106_off, rx1106_pos, 1
-    substr rx1106_tgt, rx1106_tgt, rx1106_off
-  rx1106_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1110_done
-    goto rxscan1110_scan
-  rxscan1110_loop:
-    ($P10) = rx1106_cur."from"()
-    inc $P10
-    set rx1106_pos, $P10
-    ge rx1106_pos, rx1106_eos, rxscan1110_done
-  rxscan1110_scan:
-    set_addr $I10, rxscan1110_loop
-    rx1106_cur."!mark_push"(0, rx1106_pos, $I10)
-  rxscan1110_done:
-.annotate "line", 489
+.sub "infix:sym<ne>"  :subid("283_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1111_tgt
+    .local int rx1111_pos
+    .local int rx1111_off
+    .local int rx1111_eos
+    .local int rx1111_rep
+    .local pmc rx1111_cur
+    (rx1111_cur, rx1111_pos, rx1111_tgt) = self."!cursor_start"()
+    rx1111_cur."!cursor_debug"("START ", "infix:sym<ne>")
+    .lex unicode:"$\x{a2}", rx1111_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1111_eos, rx1111_tgt
+    set rx1111_off, 0
+    lt rx1111_pos, 2, rx1111_start
+    sub rx1111_off, rx1111_pos, 1
+    substr rx1111_tgt, rx1111_tgt, rx1111_off
+  rx1111_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1115_done
+    goto rxscan1115_scan
+  rxscan1115_loop:
+    ($P10) = rx1111_cur."from"()
+    inc $P10
+    set rx1111_pos, $P10
+    ge rx1111_pos, rx1111_eos, rxscan1115_done
+  rxscan1115_scan:
+    set_addr $I10, rxscan1115_loop
+    rx1111_cur."!mark_push"(0, rx1111_pos, $I10)
+  rxscan1115_done:
+.annotate "line", 493
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1111_fail
-    rx1106_cur."!mark_push"(0, rx1106_pos, $I10)
+    set_addr $I10, rxcap_1116_fail
+    rx1111_cur."!mark_push"(0, rx1111_pos, $I10)
   # rx literal  "ne"
-    add $I11, rx1106_pos, 2
-    gt $I11, rx1106_eos, rx1106_fail
-    sub $I11, rx1106_pos, rx1106_off
-    substr $S10, rx1106_tgt, $I11, 2
-    ne $S10, "ne", rx1106_fail
-    add rx1106_pos, 2
-    set_addr $I10, rxcap_1111_fail
-    ($I12, $I11) = rx1106_cur."!mark_peek"($I10)
-    rx1106_cur."!cursor_pos"($I11)
-    ($P10) = rx1106_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1106_pos, "")
-    rx1106_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1111_pos, 2
+    gt $I11, rx1111_eos, rx1111_fail
+    sub $I11, rx1111_pos, rx1111_off
+    substr $S10, rx1111_tgt, $I11, 2
+    ne $S10, "ne", rx1111_fail
+    add rx1111_pos, 2
+    set_addr $I10, rxcap_1116_fail
+    ($I12, $I11) = rx1111_cur."!mark_peek"($I10)
+    rx1111_cur."!cursor_pos"($I11)
+    ($P10) = rx1111_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1111_pos, "")
+    rx1111_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1111_done
-  rxcap_1111_fail:
-    goto rx1106_fail
-  rxcap_1111_done:
+    goto rxcap_1116_done
+  rxcap_1116_fail:
+    goto rx1111_fail
+  rxcap_1116_done:
   # rx subrule "O" subtype=capture negate=
-    rx1106_cur."!cursor_pos"(rx1106_pos)
-    $P10 = rx1106_cur."O"("%relational, :pirop<isne ISs>")
-    unless $P10, rx1106_fail
-    rx1106_cur."!mark_push"(0, -1, 0, $P10)
+    rx1111_cur."!cursor_pos"(rx1111_pos)
+    $P10 = rx1111_cur."O"("%relational, :pirop<isne ISs>")
+    unless $P10, rx1111_fail
+    rx1111_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1106_pos = $P10."pos"()
+    rx1111_pos = $P10."pos"()
   # rx pass
-    rx1106_cur."!cursor_pass"(rx1106_pos, "infix:sym<ne>")
-    rx1106_cur."!cursor_debug"("PASS  ", "infix:sym<ne>", " at pos=", rx1106_pos)
-    .return (rx1106_cur)
-  rx1106_fail:
-.annotate "line", 413
-    (rx1106_rep, rx1106_pos, $I10, $P10) = rx1106_cur."!mark_fail"(0)
-    lt rx1106_pos, -1, rx1106_done
-    eq rx1106_pos, -1, rx1106_fail
+    rx1111_cur."!cursor_pass"(rx1111_pos, "infix:sym<ne>")
+    rx1111_cur."!cursor_debug"("PASS  ", "infix:sym<ne>", " at pos=", rx1111_pos)
+    .return (rx1111_cur)
+  rx1111_fail:
+.annotate "line", 417
+    (rx1111_rep, rx1111_pos, $I10, $P10) = rx1111_cur."!mark_fail"(0)
+    lt rx1111_pos, -1, rx1111_done
+    eq rx1111_pos, -1, rx1111_fail
     jump $I10
-  rx1106_done:
-    rx1106_cur."!cursor_fail"()
-    rx1106_cur."!cursor_debug"("FAIL  ", "infix:sym<ne>")
-    .return (rx1106_cur)
+  rx1111_done:
+    rx1111_cur."!cursor_fail"()
+    rx1111_cur."!cursor_debug"("FAIL  ", "infix:sym<ne>")
+    .return (rx1111_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ne>"  :subid("284_1261064023.05912") :method
-.annotate "line", 413
-    $P1108 = self."!PREFIX__!subrule"("O", "ne")
-    new $P1109, "ResizablePMCArray"
-    push $P1109, $P1108
-    .return ($P1109)
+.sub "!PREFIX__infix:sym<ne>"  :subid("284_1267204702.05125") :method
+.annotate "line", 417
+    $P1113 = self."!PREFIX__!subrule"("O", "ne")
+    new $P1114, "ResizablePMCArray"
+    push $P1114, $P1113
+    .return ($P1114)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<le>"  :subid("285_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1113_tgt
-    .local int rx1113_pos
-    .local int rx1113_off
-    .local int rx1113_eos
-    .local int rx1113_rep
-    .local pmc rx1113_cur
-    (rx1113_cur, rx1113_pos, rx1113_tgt) = self."!cursor_start"()
-    rx1113_cur."!cursor_debug"("START ", "infix:sym<le>")
-    .lex unicode:"$\x{a2}", rx1113_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1113_eos, rx1113_tgt
-    set rx1113_off, 0
-    lt rx1113_pos, 2, rx1113_start
-    sub rx1113_off, rx1113_pos, 1
-    substr rx1113_tgt, rx1113_tgt, rx1113_off
-  rx1113_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1117_done
-    goto rxscan1117_scan
-  rxscan1117_loop:
-    ($P10) = rx1113_cur."from"()
-    inc $P10
-    set rx1113_pos, $P10
-    ge rx1113_pos, rx1113_eos, rxscan1117_done
-  rxscan1117_scan:
-    set_addr $I10, rxscan1117_loop
-    rx1113_cur."!mark_push"(0, rx1113_pos, $I10)
-  rxscan1117_done:
-.annotate "line", 490
+.sub "infix:sym<le>"  :subid("285_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1118_tgt
+    .local int rx1118_pos
+    .local int rx1118_off
+    .local int rx1118_eos
+    .local int rx1118_rep
+    .local pmc rx1118_cur
+    (rx1118_cur, rx1118_pos, rx1118_tgt) = self."!cursor_start"()
+    rx1118_cur."!cursor_debug"("START ", "infix:sym<le>")
+    .lex unicode:"$\x{a2}", rx1118_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1118_eos, rx1118_tgt
+    set rx1118_off, 0
+    lt rx1118_pos, 2, rx1118_start
+    sub rx1118_off, rx1118_pos, 1
+    substr rx1118_tgt, rx1118_tgt, rx1118_off
+  rx1118_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1122_done
+    goto rxscan1122_scan
+  rxscan1122_loop:
+    ($P10) = rx1118_cur."from"()
+    inc $P10
+    set rx1118_pos, $P10
+    ge rx1118_pos, rx1118_eos, rxscan1122_done
+  rxscan1122_scan:
+    set_addr $I10, rxscan1122_loop
+    rx1118_cur."!mark_push"(0, rx1118_pos, $I10)
+  rxscan1122_done:
+.annotate "line", 494
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1118_fail
-    rx1113_cur."!mark_push"(0, rx1113_pos, $I10)
+    set_addr $I10, rxcap_1123_fail
+    rx1118_cur."!mark_push"(0, rx1118_pos, $I10)
   # rx literal  "le"
-    add $I11, rx1113_pos, 2
-    gt $I11, rx1113_eos, rx1113_fail
-    sub $I11, rx1113_pos, rx1113_off
-    substr $S10, rx1113_tgt, $I11, 2
-    ne $S10, "le", rx1113_fail
-    add rx1113_pos, 2
-    set_addr $I10, rxcap_1118_fail
-    ($I12, $I11) = rx1113_cur."!mark_peek"($I10)
-    rx1113_cur."!cursor_pos"($I11)
-    ($P10) = rx1113_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1113_pos, "")
-    rx1113_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1118_pos, 2
+    gt $I11, rx1118_eos, rx1118_fail
+    sub $I11, rx1118_pos, rx1118_off
+    substr $S10, rx1118_tgt, $I11, 2
+    ne $S10, "le", rx1118_fail
+    add rx1118_pos, 2
+    set_addr $I10, rxcap_1123_fail
+    ($I12, $I11) = rx1118_cur."!mark_peek"($I10)
+    rx1118_cur."!cursor_pos"($I11)
+    ($P10) = rx1118_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1118_pos, "")
+    rx1118_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1118_done
-  rxcap_1118_fail:
-    goto rx1113_fail
-  rxcap_1118_done:
+    goto rxcap_1123_done
+  rxcap_1123_fail:
+    goto rx1118_fail
+  rxcap_1123_done:
   # rx subrule "O" subtype=capture negate=
-    rx1113_cur."!cursor_pos"(rx1113_pos)
-    $P10 = rx1113_cur."O"("%relational, :pirop<isle ISs>")
-    unless $P10, rx1113_fail
-    rx1113_cur."!mark_push"(0, -1, 0, $P10)
+    rx1118_cur."!cursor_pos"(rx1118_pos)
+    $P10 = rx1118_cur."O"("%relational, :pirop<isle ISs>")
+    unless $P10, rx1118_fail
+    rx1118_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1113_pos = $P10."pos"()
+    rx1118_pos = $P10."pos"()
   # rx pass
-    rx1113_cur."!cursor_pass"(rx1113_pos, "infix:sym<le>")
-    rx1113_cur."!cursor_debug"("PASS  ", "infix:sym<le>", " at pos=", rx1113_pos)
-    .return (rx1113_cur)
-  rx1113_fail:
-.annotate "line", 413
-    (rx1113_rep, rx1113_pos, $I10, $P10) = rx1113_cur."!mark_fail"(0)
-    lt rx1113_pos, -1, rx1113_done
-    eq rx1113_pos, -1, rx1113_fail
+    rx1118_cur."!cursor_pass"(rx1118_pos, "infix:sym<le>")
+    rx1118_cur."!cursor_debug"("PASS  ", "infix:sym<le>", " at pos=", rx1118_pos)
+    .return (rx1118_cur)
+  rx1118_fail:
+.annotate "line", 417
+    (rx1118_rep, rx1118_pos, $I10, $P10) = rx1118_cur."!mark_fail"(0)
+    lt rx1118_pos, -1, rx1118_done
+    eq rx1118_pos, -1, rx1118_fail
     jump $I10
-  rx1113_done:
-    rx1113_cur."!cursor_fail"()
-    rx1113_cur."!cursor_debug"("FAIL  ", "infix:sym<le>")
-    .return (rx1113_cur)
+  rx1118_done:
+    rx1118_cur."!cursor_fail"()
+    rx1118_cur."!cursor_debug"("FAIL  ", "infix:sym<le>")
+    .return (rx1118_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<le>"  :subid("286_1261064023.05912") :method
-.annotate "line", 413
-    $P1115 = self."!PREFIX__!subrule"("O", "le")
-    new $P1116, "ResizablePMCArray"
-    push $P1116, $P1115
-    .return ($P1116)
+.sub "!PREFIX__infix:sym<le>"  :subid("286_1267204702.05125") :method
+.annotate "line", 417
+    $P1120 = self."!PREFIX__!subrule"("O", "le")
+    new $P1121, "ResizablePMCArray"
+    push $P1121, $P1120
+    .return ($P1121)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ge>"  :subid("287_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1120_tgt
-    .local int rx1120_pos
-    .local int rx1120_off
-    .local int rx1120_eos
-    .local int rx1120_rep
-    .local pmc rx1120_cur
-    (rx1120_cur, rx1120_pos, rx1120_tgt) = self."!cursor_start"()
-    rx1120_cur."!cursor_debug"("START ", "infix:sym<ge>")
-    .lex unicode:"$\x{a2}", rx1120_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1120_eos, rx1120_tgt
-    set rx1120_off, 0
-    lt rx1120_pos, 2, rx1120_start
-    sub rx1120_off, rx1120_pos, 1
-    substr rx1120_tgt, rx1120_tgt, rx1120_off
-  rx1120_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1124_done
-    goto rxscan1124_scan
-  rxscan1124_loop:
-    ($P10) = rx1120_cur."from"()
-    inc $P10
-    set rx1120_pos, $P10
-    ge rx1120_pos, rx1120_eos, rxscan1124_done
-  rxscan1124_scan:
-    set_addr $I10, rxscan1124_loop
-    rx1120_cur."!mark_push"(0, rx1120_pos, $I10)
-  rxscan1124_done:
-.annotate "line", 491
+.sub "infix:sym<ge>"  :subid("287_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1125_tgt
+    .local int rx1125_pos
+    .local int rx1125_off
+    .local int rx1125_eos
+    .local int rx1125_rep
+    .local pmc rx1125_cur
+    (rx1125_cur, rx1125_pos, rx1125_tgt) = self."!cursor_start"()
+    rx1125_cur."!cursor_debug"("START ", "infix:sym<ge>")
+    .lex unicode:"$\x{a2}", rx1125_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1125_eos, rx1125_tgt
+    set rx1125_off, 0
+    lt rx1125_pos, 2, rx1125_start
+    sub rx1125_off, rx1125_pos, 1
+    substr rx1125_tgt, rx1125_tgt, rx1125_off
+  rx1125_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1129_done
+    goto rxscan1129_scan
+  rxscan1129_loop:
+    ($P10) = rx1125_cur."from"()
+    inc $P10
+    set rx1125_pos, $P10
+    ge rx1125_pos, rx1125_eos, rxscan1129_done
+  rxscan1129_scan:
+    set_addr $I10, rxscan1129_loop
+    rx1125_cur."!mark_push"(0, rx1125_pos, $I10)
+  rxscan1129_done:
+.annotate "line", 495
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1125_fail
-    rx1120_cur."!mark_push"(0, rx1120_pos, $I10)
+    set_addr $I10, rxcap_1130_fail
+    rx1125_cur."!mark_push"(0, rx1125_pos, $I10)
   # rx literal  "ge"
-    add $I11, rx1120_pos, 2
-    gt $I11, rx1120_eos, rx1120_fail
-    sub $I11, rx1120_pos, rx1120_off
-    substr $S10, rx1120_tgt, $I11, 2
-    ne $S10, "ge", rx1120_fail
-    add rx1120_pos, 2
-    set_addr $I10, rxcap_1125_fail
-    ($I12, $I11) = rx1120_cur."!mark_peek"($I10)
-    rx1120_cur."!cursor_pos"($I11)
-    ($P10) = rx1120_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1120_pos, "")
-    rx1120_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1125_pos, 2
+    gt $I11, rx1125_eos, rx1125_fail
+    sub $I11, rx1125_pos, rx1125_off
+    substr $S10, rx1125_tgt, $I11, 2
+    ne $S10, "ge", rx1125_fail
+    add rx1125_pos, 2
+    set_addr $I10, rxcap_1130_fail
+    ($I12, $I11) = rx1125_cur."!mark_peek"($I10)
+    rx1125_cur."!cursor_pos"($I11)
+    ($P10) = rx1125_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1125_pos, "")
+    rx1125_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1125_done
-  rxcap_1125_fail:
-    goto rx1120_fail
-  rxcap_1125_done:
+    goto rxcap_1130_done
+  rxcap_1130_fail:
+    goto rx1125_fail
+  rxcap_1130_done:
   # rx subrule "O" subtype=capture negate=
-    rx1120_cur."!cursor_pos"(rx1120_pos)
-    $P10 = rx1120_cur."O"("%relational, :pirop<isge ISs>")
-    unless $P10, rx1120_fail
-    rx1120_cur."!mark_push"(0, -1, 0, $P10)
+    rx1125_cur."!cursor_pos"(rx1125_pos)
+    $P10 = rx1125_cur."O"("%relational, :pirop<isge ISs>")
+    unless $P10, rx1125_fail
+    rx1125_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1120_pos = $P10."pos"()
+    rx1125_pos = $P10."pos"()
   # rx pass
-    rx1120_cur."!cursor_pass"(rx1120_pos, "infix:sym<ge>")
-    rx1120_cur."!cursor_debug"("PASS  ", "infix:sym<ge>", " at pos=", rx1120_pos)
-    .return (rx1120_cur)
-  rx1120_fail:
-.annotate "line", 413
-    (rx1120_rep, rx1120_pos, $I10, $P10) = rx1120_cur."!mark_fail"(0)
-    lt rx1120_pos, -1, rx1120_done
-    eq rx1120_pos, -1, rx1120_fail
+    rx1125_cur."!cursor_pass"(rx1125_pos, "infix:sym<ge>")
+    rx1125_cur."!cursor_debug"("PASS  ", "infix:sym<ge>", " at pos=", rx1125_pos)
+    .return (rx1125_cur)
+  rx1125_fail:
+.annotate "line", 417
+    (rx1125_rep, rx1125_pos, $I10, $P10) = rx1125_cur."!mark_fail"(0)
+    lt rx1125_pos, -1, rx1125_done
+    eq rx1125_pos, -1, rx1125_fail
     jump $I10
-  rx1120_done:
-    rx1120_cur."!cursor_fail"()
-    rx1120_cur."!cursor_debug"("FAIL  ", "infix:sym<ge>")
-    .return (rx1120_cur)
+  rx1125_done:
+    rx1125_cur."!cursor_fail"()
+    rx1125_cur."!cursor_debug"("FAIL  ", "infix:sym<ge>")
+    .return (rx1125_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ge>"  :subid("288_1261064023.05912") :method
-.annotate "line", 413
-    $P1122 = self."!PREFIX__!subrule"("O", "ge")
-    new $P1123, "ResizablePMCArray"
-    push $P1123, $P1122
-    .return ($P1123)
+.sub "!PREFIX__infix:sym<ge>"  :subid("288_1267204702.05125") :method
+.annotate "line", 417
+    $P1127 = self."!PREFIX__!subrule"("O", "ge")
+    new $P1128, "ResizablePMCArray"
+    push $P1128, $P1127
+    .return ($P1128)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<lt>"  :subid("289_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1127_tgt
-    .local int rx1127_pos
-    .local int rx1127_off
-    .local int rx1127_eos
-    .local int rx1127_rep
-    .local pmc rx1127_cur
-    (rx1127_cur, rx1127_pos, rx1127_tgt) = self."!cursor_start"()
-    rx1127_cur."!cursor_debug"("START ", "infix:sym<lt>")
-    .lex unicode:"$\x{a2}", rx1127_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1127_eos, rx1127_tgt
-    set rx1127_off, 0
-    lt rx1127_pos, 2, rx1127_start
-    sub rx1127_off, rx1127_pos, 1
-    substr rx1127_tgt, rx1127_tgt, rx1127_off
-  rx1127_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1131_done
-    goto rxscan1131_scan
-  rxscan1131_loop:
-    ($P10) = rx1127_cur."from"()
-    inc $P10
-    set rx1127_pos, $P10
-    ge rx1127_pos, rx1127_eos, rxscan1131_done
-  rxscan1131_scan:
-    set_addr $I10, rxscan1131_loop
-    rx1127_cur."!mark_push"(0, rx1127_pos, $I10)
-  rxscan1131_done:
-.annotate "line", 492
+.sub "infix:sym<lt>"  :subid("289_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1132_tgt
+    .local int rx1132_pos
+    .local int rx1132_off
+    .local int rx1132_eos
+    .local int rx1132_rep
+    .local pmc rx1132_cur
+    (rx1132_cur, rx1132_pos, rx1132_tgt) = self."!cursor_start"()
+    rx1132_cur."!cursor_debug"("START ", "infix:sym<lt>")
+    .lex unicode:"$\x{a2}", rx1132_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1132_eos, rx1132_tgt
+    set rx1132_off, 0
+    lt rx1132_pos, 2, rx1132_start
+    sub rx1132_off, rx1132_pos, 1
+    substr rx1132_tgt, rx1132_tgt, rx1132_off
+  rx1132_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1136_done
+    goto rxscan1136_scan
+  rxscan1136_loop:
+    ($P10) = rx1132_cur."from"()
+    inc $P10
+    set rx1132_pos, $P10
+    ge rx1132_pos, rx1132_eos, rxscan1136_done
+  rxscan1136_scan:
+    set_addr $I10, rxscan1136_loop
+    rx1132_cur."!mark_push"(0, rx1132_pos, $I10)
+  rxscan1136_done:
+.annotate "line", 496
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1132_fail
-    rx1127_cur."!mark_push"(0, rx1127_pos, $I10)
+    set_addr $I10, rxcap_1137_fail
+    rx1132_cur."!mark_push"(0, rx1132_pos, $I10)
   # rx literal  "lt"
-    add $I11, rx1127_pos, 2
-    gt $I11, rx1127_eos, rx1127_fail
-    sub $I11, rx1127_pos, rx1127_off
-    substr $S10, rx1127_tgt, $I11, 2
-    ne $S10, "lt", rx1127_fail
-    add rx1127_pos, 2
-    set_addr $I10, rxcap_1132_fail
-    ($I12, $I11) = rx1127_cur."!mark_peek"($I10)
-    rx1127_cur."!cursor_pos"($I11)
-    ($P10) = rx1127_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1127_pos, "")
-    rx1127_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1132_pos, 2
+    gt $I11, rx1132_eos, rx1132_fail
+    sub $I11, rx1132_pos, rx1132_off
+    substr $S10, rx1132_tgt, $I11, 2
+    ne $S10, "lt", rx1132_fail
+    add rx1132_pos, 2
+    set_addr $I10, rxcap_1137_fail
+    ($I12, $I11) = rx1132_cur."!mark_peek"($I10)
+    rx1132_cur."!cursor_pos"($I11)
+    ($P10) = rx1132_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1132_pos, "")
+    rx1132_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1132_done
-  rxcap_1132_fail:
-    goto rx1127_fail
-  rxcap_1132_done:
+    goto rxcap_1137_done
+  rxcap_1137_fail:
+    goto rx1132_fail
+  rxcap_1137_done:
   # rx subrule "O" subtype=capture negate=
-    rx1127_cur."!cursor_pos"(rx1127_pos)
-    $P10 = rx1127_cur."O"("%relational, :pirop<islt ISs>")
-    unless $P10, rx1127_fail
-    rx1127_cur."!mark_push"(0, -1, 0, $P10)
+    rx1132_cur."!cursor_pos"(rx1132_pos)
+    $P10 = rx1132_cur."O"("%relational, :pirop<islt ISs>")
+    unless $P10, rx1132_fail
+    rx1132_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1127_pos = $P10."pos"()
+    rx1132_pos = $P10."pos"()
   # rx pass
-    rx1127_cur."!cursor_pass"(rx1127_pos, "infix:sym<lt>")
-    rx1127_cur."!cursor_debug"("PASS  ", "infix:sym<lt>", " at pos=", rx1127_pos)
-    .return (rx1127_cur)
-  rx1127_fail:
-.annotate "line", 413
-    (rx1127_rep, rx1127_pos, $I10, $P10) = rx1127_cur."!mark_fail"(0)
-    lt rx1127_pos, -1, rx1127_done
-    eq rx1127_pos, -1, rx1127_fail
+    rx1132_cur."!cursor_pass"(rx1132_pos, "infix:sym<lt>")
+    rx1132_cur."!cursor_debug"("PASS  ", "infix:sym<lt>", " at pos=", rx1132_pos)
+    .return (rx1132_cur)
+  rx1132_fail:
+.annotate "line", 417
+    (rx1132_rep, rx1132_pos, $I10, $P10) = rx1132_cur."!mark_fail"(0)
+    lt rx1132_pos, -1, rx1132_done
+    eq rx1132_pos, -1, rx1132_fail
     jump $I10
-  rx1127_done:
-    rx1127_cur."!cursor_fail"()
-    rx1127_cur."!cursor_debug"("FAIL  ", "infix:sym<lt>")
-    .return (rx1127_cur)
+  rx1132_done:
+    rx1132_cur."!cursor_fail"()
+    rx1132_cur."!cursor_debug"("FAIL  ", "infix:sym<lt>")
+    .return (rx1132_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<lt>"  :subid("290_1261064023.05912") :method
-.annotate "line", 413
-    $P1129 = self."!PREFIX__!subrule"("O", "lt")
-    new $P1130, "ResizablePMCArray"
-    push $P1130, $P1129
-    .return ($P1130)
+.sub "!PREFIX__infix:sym<lt>"  :subid("290_1267204702.05125") :method
+.annotate "line", 417
+    $P1134 = self."!PREFIX__!subrule"("O", "lt")
+    new $P1135, "ResizablePMCArray"
+    push $P1135, $P1134
+    .return ($P1135)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<gt>"  :subid("291_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1134_tgt
-    .local int rx1134_pos
-    .local int rx1134_off
-    .local int rx1134_eos
-    .local int rx1134_rep
-    .local pmc rx1134_cur
-    (rx1134_cur, rx1134_pos, rx1134_tgt) = self."!cursor_start"()
-    rx1134_cur."!cursor_debug"("START ", "infix:sym<gt>")
-    .lex unicode:"$\x{a2}", rx1134_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1134_eos, rx1134_tgt
-    set rx1134_off, 0
-    lt rx1134_pos, 2, rx1134_start
-    sub rx1134_off, rx1134_pos, 1
-    substr rx1134_tgt, rx1134_tgt, rx1134_off
-  rx1134_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1138_done
-    goto rxscan1138_scan
-  rxscan1138_loop:
-    ($P10) = rx1134_cur."from"()
-    inc $P10
-    set rx1134_pos, $P10
-    ge rx1134_pos, rx1134_eos, rxscan1138_done
-  rxscan1138_scan:
-    set_addr $I10, rxscan1138_loop
-    rx1134_cur."!mark_push"(0, rx1134_pos, $I10)
-  rxscan1138_done:
-.annotate "line", 493
+.sub "infix:sym<gt>"  :subid("291_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1139_tgt
+    .local int rx1139_pos
+    .local int rx1139_off
+    .local int rx1139_eos
+    .local int rx1139_rep
+    .local pmc rx1139_cur
+    (rx1139_cur, rx1139_pos, rx1139_tgt) = self."!cursor_start"()
+    rx1139_cur."!cursor_debug"("START ", "infix:sym<gt>")
+    .lex unicode:"$\x{a2}", rx1139_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1139_eos, rx1139_tgt
+    set rx1139_off, 0
+    lt rx1139_pos, 2, rx1139_start
+    sub rx1139_off, rx1139_pos, 1
+    substr rx1139_tgt, rx1139_tgt, rx1139_off
+  rx1139_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1143_done
+    goto rxscan1143_scan
+  rxscan1143_loop:
+    ($P10) = rx1139_cur."from"()
+    inc $P10
+    set rx1139_pos, $P10
+    ge rx1139_pos, rx1139_eos, rxscan1143_done
+  rxscan1143_scan:
+    set_addr $I10, rxscan1143_loop
+    rx1139_cur."!mark_push"(0, rx1139_pos, $I10)
+  rxscan1143_done:
+.annotate "line", 497
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1139_fail
-    rx1134_cur."!mark_push"(0, rx1134_pos, $I10)
+    set_addr $I10, rxcap_1144_fail
+    rx1139_cur."!mark_push"(0, rx1139_pos, $I10)
   # rx literal  "gt"
-    add $I11, rx1134_pos, 2
-    gt $I11, rx1134_eos, rx1134_fail
-    sub $I11, rx1134_pos, rx1134_off
-    substr $S10, rx1134_tgt, $I11, 2
-    ne $S10, "gt", rx1134_fail
-    add rx1134_pos, 2
-    set_addr $I10, rxcap_1139_fail
-    ($I12, $I11) = rx1134_cur."!mark_peek"($I10)
-    rx1134_cur."!cursor_pos"($I11)
-    ($P10) = rx1134_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1134_pos, "")
-    rx1134_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1139_pos, 2
+    gt $I11, rx1139_eos, rx1139_fail
+    sub $I11, rx1139_pos, rx1139_off
+    substr $S10, rx1139_tgt, $I11, 2
+    ne $S10, "gt", rx1139_fail
+    add rx1139_pos, 2
+    set_addr $I10, rxcap_1144_fail
+    ($I12, $I11) = rx1139_cur."!mark_peek"($I10)
+    rx1139_cur."!cursor_pos"($I11)
+    ($P10) = rx1139_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1139_pos, "")
+    rx1139_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1139_done
-  rxcap_1139_fail:
-    goto rx1134_fail
-  rxcap_1139_done:
+    goto rxcap_1144_done
+  rxcap_1144_fail:
+    goto rx1139_fail
+  rxcap_1144_done:
   # rx subrule "O" subtype=capture negate=
-    rx1134_cur."!cursor_pos"(rx1134_pos)
-    $P10 = rx1134_cur."O"("%relational, :pirop<isgt ISs>")
-    unless $P10, rx1134_fail
-    rx1134_cur."!mark_push"(0, -1, 0, $P10)
+    rx1139_cur."!cursor_pos"(rx1139_pos)
+    $P10 = rx1139_cur."O"("%relational, :pirop<isgt ISs>")
+    unless $P10, rx1139_fail
+    rx1139_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1134_pos = $P10."pos"()
+    rx1139_pos = $P10."pos"()
   # rx pass
-    rx1134_cur."!cursor_pass"(rx1134_pos, "infix:sym<gt>")
-    rx1134_cur."!cursor_debug"("PASS  ", "infix:sym<gt>", " at pos=", rx1134_pos)
-    .return (rx1134_cur)
-  rx1134_fail:
-.annotate "line", 413
-    (rx1134_rep, rx1134_pos, $I10, $P10) = rx1134_cur."!mark_fail"(0)
-    lt rx1134_pos, -1, rx1134_done
-    eq rx1134_pos, -1, rx1134_fail
+    rx1139_cur."!cursor_pass"(rx1139_pos, "infix:sym<gt>")
+    rx1139_cur."!cursor_debug"("PASS  ", "infix:sym<gt>", " at pos=", rx1139_pos)
+    .return (rx1139_cur)
+  rx1139_fail:
+.annotate "line", 417
+    (rx1139_rep, rx1139_pos, $I10, $P10) = rx1139_cur."!mark_fail"(0)
+    lt rx1139_pos, -1, rx1139_done
+    eq rx1139_pos, -1, rx1139_fail
     jump $I10
-  rx1134_done:
-    rx1134_cur."!cursor_fail"()
-    rx1134_cur."!cursor_debug"("FAIL  ", "infix:sym<gt>")
-    .return (rx1134_cur)
+  rx1139_done:
+    rx1139_cur."!cursor_fail"()
+    rx1139_cur."!cursor_debug"("FAIL  ", "infix:sym<gt>")
+    .return (rx1139_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<gt>"  :subid("292_1261064023.05912") :method
-.annotate "line", 413
-    $P1136 = self."!PREFIX__!subrule"("O", "gt")
-    new $P1137, "ResizablePMCArray"
-    push $P1137, $P1136
-    .return ($P1137)
+.sub "!PREFIX__infix:sym<gt>"  :subid("292_1267204702.05125") :method
+.annotate "line", 417
+    $P1141 = self."!PREFIX__!subrule"("O", "gt")
+    new $P1142, "ResizablePMCArray"
+    push $P1142, $P1141
+    .return ($P1142)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=:=>"  :subid("293_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1141_tgt
-    .local int rx1141_pos
-    .local int rx1141_off
-    .local int rx1141_eos
-    .local int rx1141_rep
-    .local pmc rx1141_cur
-    (rx1141_cur, rx1141_pos, rx1141_tgt) = self."!cursor_start"()
-    rx1141_cur."!cursor_debug"("START ", "infix:sym<=:=>")
-    .lex unicode:"$\x{a2}", rx1141_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1141_eos, rx1141_tgt
-    set rx1141_off, 0
-    lt rx1141_pos, 2, rx1141_start
-    sub rx1141_off, rx1141_pos, 1
-    substr rx1141_tgt, rx1141_tgt, rx1141_off
-  rx1141_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1145_done
-    goto rxscan1145_scan
-  rxscan1145_loop:
-    ($P10) = rx1141_cur."from"()
-    inc $P10
-    set rx1141_pos, $P10
-    ge rx1141_pos, rx1141_eos, rxscan1145_done
-  rxscan1145_scan:
-    set_addr $I10, rxscan1145_loop
-    rx1141_cur."!mark_push"(0, rx1141_pos, $I10)
-  rxscan1145_done:
-.annotate "line", 494
+.sub "infix:sym<=:=>"  :subid("293_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1146_tgt
+    .local int rx1146_pos
+    .local int rx1146_off
+    .local int rx1146_eos
+    .local int rx1146_rep
+    .local pmc rx1146_cur
+    (rx1146_cur, rx1146_pos, rx1146_tgt) = self."!cursor_start"()
+    rx1146_cur."!cursor_debug"("START ", "infix:sym<=:=>")
+    .lex unicode:"$\x{a2}", rx1146_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1146_eos, rx1146_tgt
+    set rx1146_off, 0
+    lt rx1146_pos, 2, rx1146_start
+    sub rx1146_off, rx1146_pos, 1
+    substr rx1146_tgt, rx1146_tgt, rx1146_off
+  rx1146_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1150_done
+    goto rxscan1150_scan
+  rxscan1150_loop:
+    ($P10) = rx1146_cur."from"()
+    inc $P10
+    set rx1146_pos, $P10
+    ge rx1146_pos, rx1146_eos, rxscan1150_done
+  rxscan1150_scan:
+    set_addr $I10, rxscan1150_loop
+    rx1146_cur."!mark_push"(0, rx1146_pos, $I10)
+  rxscan1150_done:
+.annotate "line", 498
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1146_fail
-    rx1141_cur."!mark_push"(0, rx1141_pos, $I10)
+    set_addr $I10, rxcap_1151_fail
+    rx1146_cur."!mark_push"(0, rx1146_pos, $I10)
   # rx literal  "=:="
-    add $I11, rx1141_pos, 3
-    gt $I11, rx1141_eos, rx1141_fail
-    sub $I11, rx1141_pos, rx1141_off
-    substr $S10, rx1141_tgt, $I11, 3
-    ne $S10, "=:=", rx1141_fail
-    add rx1141_pos, 3
-    set_addr $I10, rxcap_1146_fail
-    ($I12, $I11) = rx1141_cur."!mark_peek"($I10)
-    rx1141_cur."!cursor_pos"($I11)
-    ($P10) = rx1141_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1141_pos, "")
-    rx1141_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1146_pos, 3
+    gt $I11, rx1146_eos, rx1146_fail
+    sub $I11, rx1146_pos, rx1146_off
+    substr $S10, rx1146_tgt, $I11, 3
+    ne $S10, "=:=", rx1146_fail
+    add rx1146_pos, 3
+    set_addr $I10, rxcap_1151_fail
+    ($I12, $I11) = rx1146_cur."!mark_peek"($I10)
+    rx1146_cur."!cursor_pos"($I11)
+    ($P10) = rx1146_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1146_pos, "")
+    rx1146_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1146_done
-  rxcap_1146_fail:
-    goto rx1141_fail
-  rxcap_1146_done:
+    goto rxcap_1151_done
+  rxcap_1151_fail:
+    goto rx1146_fail
+  rxcap_1151_done:
   # rx subrule "O" subtype=capture negate=
-    rx1141_cur."!cursor_pos"(rx1141_pos)
-    $P10 = rx1141_cur."O"("%relational, :pirop<issame>")
-    unless $P10, rx1141_fail
-    rx1141_cur."!mark_push"(0, -1, 0, $P10)
+    rx1146_cur."!cursor_pos"(rx1146_pos)
+    $P10 = rx1146_cur."O"("%relational, :pirop<issame>")
+    unless $P10, rx1146_fail
+    rx1146_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1141_pos = $P10."pos"()
+    rx1146_pos = $P10."pos"()
   # rx pass
-    rx1141_cur."!cursor_pass"(rx1141_pos, "infix:sym<=:=>")
-    rx1141_cur."!cursor_debug"("PASS  ", "infix:sym<=:=>", " at pos=", rx1141_pos)
-    .return (rx1141_cur)
-  rx1141_fail:
-.annotate "line", 413
-    (rx1141_rep, rx1141_pos, $I10, $P10) = rx1141_cur."!mark_fail"(0)
-    lt rx1141_pos, -1, rx1141_done
-    eq rx1141_pos, -1, rx1141_fail
+    rx1146_cur."!cursor_pass"(rx1146_pos, "infix:sym<=:=>")
+    rx1146_cur."!cursor_debug"("PASS  ", "infix:sym<=:=>", " at pos=", rx1146_pos)
+    .return (rx1146_cur)
+  rx1146_fail:
+.annotate "line", 417
+    (rx1146_rep, rx1146_pos, $I10, $P10) = rx1146_cur."!mark_fail"(0)
+    lt rx1146_pos, -1, rx1146_done
+    eq rx1146_pos, -1, rx1146_fail
     jump $I10
-  rx1141_done:
-    rx1141_cur."!cursor_fail"()
-    rx1141_cur."!cursor_debug"("FAIL  ", "infix:sym<=:=>")
-    .return (rx1141_cur)
+  rx1146_done:
+    rx1146_cur."!cursor_fail"()
+    rx1146_cur."!cursor_debug"("FAIL  ", "infix:sym<=:=>")
+    .return (rx1146_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=:=>"  :subid("294_1261064023.05912") :method
-.annotate "line", 413
-    $P1143 = self."!PREFIX__!subrule"("O", "=:=")
-    new $P1144, "ResizablePMCArray"
-    push $P1144, $P1143
-    .return ($P1144)
+.sub "!PREFIX__infix:sym<=:=>"  :subid("294_1267204702.05125") :method
+.annotate "line", 417
+    $P1148 = self."!PREFIX__!subrule"("O", "=:=")
+    new $P1149, "ResizablePMCArray"
+    push $P1149, $P1148
+    .return ($P1149)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~~>"  :subid("295_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1148_tgt
-    .local int rx1148_pos
-    .local int rx1148_off
-    .local int rx1148_eos
-    .local int rx1148_rep
-    .local pmc rx1148_cur
-    (rx1148_cur, rx1148_pos, rx1148_tgt) = self."!cursor_start"()
-    rx1148_cur."!cursor_debug"("START ", "infix:sym<~~>")
-    .lex unicode:"$\x{a2}", rx1148_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1148_eos, rx1148_tgt
-    set rx1148_off, 0
-    lt rx1148_pos, 2, rx1148_start
-    sub rx1148_off, rx1148_pos, 1
-    substr rx1148_tgt, rx1148_tgt, rx1148_off
-  rx1148_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1152_done
-    goto rxscan1152_scan
-  rxscan1152_loop:
-    ($P10) = rx1148_cur."from"()
-    inc $P10
-    set rx1148_pos, $P10
-    ge rx1148_pos, rx1148_eos, rxscan1152_done
-  rxscan1152_scan:
-    set_addr $I10, rxscan1152_loop
-    rx1148_cur."!mark_push"(0, rx1148_pos, $I10)
-  rxscan1152_done:
-.annotate "line", 495
+.sub "infix:sym<~~>"  :subid("295_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1153_tgt
+    .local int rx1153_pos
+    .local int rx1153_off
+    .local int rx1153_eos
+    .local int rx1153_rep
+    .local pmc rx1153_cur
+    (rx1153_cur, rx1153_pos, rx1153_tgt) = self."!cursor_start"()
+    rx1153_cur."!cursor_debug"("START ", "infix:sym<~~>")
+    .lex unicode:"$\x{a2}", rx1153_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1153_eos, rx1153_tgt
+    set rx1153_off, 0
+    lt rx1153_pos, 2, rx1153_start
+    sub rx1153_off, rx1153_pos, 1
+    substr rx1153_tgt, rx1153_tgt, rx1153_off
+  rx1153_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1157_done
+    goto rxscan1157_scan
+  rxscan1157_loop:
+    ($P10) = rx1153_cur."from"()
+    inc $P10
+    set rx1153_pos, $P10
+    ge rx1153_pos, rx1153_eos, rxscan1157_done
+  rxscan1157_scan:
+    set_addr $I10, rxscan1157_loop
+    rx1153_cur."!mark_push"(0, rx1153_pos, $I10)
+  rxscan1157_done:
+.annotate "line", 499
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1153_fail
-    rx1148_cur."!mark_push"(0, rx1148_pos, $I10)
+    set_addr $I10, rxcap_1158_fail
+    rx1153_cur."!mark_push"(0, rx1153_pos, $I10)
   # rx literal  "~~"
-    add $I11, rx1148_pos, 2
-    gt $I11, rx1148_eos, rx1148_fail
-    sub $I11, rx1148_pos, rx1148_off
-    substr $S10, rx1148_tgt, $I11, 2
-    ne $S10, "~~", rx1148_fail
-    add rx1148_pos, 2
-    set_addr $I10, rxcap_1153_fail
-    ($I12, $I11) = rx1148_cur."!mark_peek"($I10)
-    rx1148_cur."!cursor_pos"($I11)
-    ($P10) = rx1148_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1148_pos, "")
-    rx1148_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1153_pos, 2
+    gt $I11, rx1153_eos, rx1153_fail
+    sub $I11, rx1153_pos, rx1153_off
+    substr $S10, rx1153_tgt, $I11, 2
+    ne $S10, "~~", rx1153_fail
+    add rx1153_pos, 2
+    set_addr $I10, rxcap_1158_fail
+    ($I12, $I11) = rx1153_cur."!mark_peek"($I10)
+    rx1153_cur."!cursor_pos"($I11)
+    ($P10) = rx1153_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1153_pos, "")
+    rx1153_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1153_done
-  rxcap_1153_fail:
-    goto rx1148_fail
-  rxcap_1153_done:
+    goto rxcap_1158_done
+  rxcap_1158_fail:
+    goto rx1153_fail
+  rxcap_1158_done:
   # rx subrule "O" subtype=capture negate=
-    rx1148_cur."!cursor_pos"(rx1148_pos)
-    $P10 = rx1148_cur."O"("%relational, :reducecheck<smartmatch>")
-    unless $P10, rx1148_fail
-    rx1148_cur."!mark_push"(0, -1, 0, $P10)
+    rx1153_cur."!cursor_pos"(rx1153_pos)
+    $P10 = rx1153_cur."O"("%relational, :reducecheck<smartmatch>")
+    unless $P10, rx1153_fail
+    rx1153_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1148_pos = $P10."pos"()
+    rx1153_pos = $P10."pos"()
   # rx pass
-    rx1148_cur."!cursor_pass"(rx1148_pos, "infix:sym<~~>")
-    rx1148_cur."!cursor_debug"("PASS  ", "infix:sym<~~>", " at pos=", rx1148_pos)
-    .return (rx1148_cur)
-  rx1148_fail:
-.annotate "line", 413
-    (rx1148_rep, rx1148_pos, $I10, $P10) = rx1148_cur."!mark_fail"(0)
-    lt rx1148_pos, -1, rx1148_done
-    eq rx1148_pos, -1, rx1148_fail
+    rx1153_cur."!cursor_pass"(rx1153_pos, "infix:sym<~~>")
+    rx1153_cur."!cursor_debug"("PASS  ", "infix:sym<~~>", " at pos=", rx1153_pos)
+    .return (rx1153_cur)
+  rx1153_fail:
+.annotate "line", 417
+    (rx1153_rep, rx1153_pos, $I10, $P10) = rx1153_cur."!mark_fail"(0)
+    lt rx1153_pos, -1, rx1153_done
+    eq rx1153_pos, -1, rx1153_fail
     jump $I10
-  rx1148_done:
-    rx1148_cur."!cursor_fail"()
-    rx1148_cur."!cursor_debug"("FAIL  ", "infix:sym<~~>")
-    .return (rx1148_cur)
+  rx1153_done:
+    rx1153_cur."!cursor_fail"()
+    rx1153_cur."!cursor_debug"("FAIL  ", "infix:sym<~~>")
+    .return (rx1153_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~~>"  :subid("296_1261064023.05912") :method
-.annotate "line", 413
-    $P1150 = self."!PREFIX__!subrule"("O", "~~")
-    new $P1151, "ResizablePMCArray"
-    push $P1151, $P1150
-    .return ($P1151)
+.sub "!PREFIX__infix:sym<~~>"  :subid("296_1267204702.05125") :method
+.annotate "line", 417
+    $P1155 = self."!PREFIX__!subrule"("O", "~~")
+    new $P1156, "ResizablePMCArray"
+    push $P1156, $P1155
+    .return ($P1156)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<&&>"  :subid("297_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1155_tgt
-    .local int rx1155_pos
-    .local int rx1155_off
-    .local int rx1155_eos
-    .local int rx1155_rep
-    .local pmc rx1155_cur
-    (rx1155_cur, rx1155_pos, rx1155_tgt) = self."!cursor_start"()
-    rx1155_cur."!cursor_debug"("START ", "infix:sym<&&>")
-    .lex unicode:"$\x{a2}", rx1155_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1155_eos, rx1155_tgt
-    set rx1155_off, 0
-    lt rx1155_pos, 2, rx1155_start
-    sub rx1155_off, rx1155_pos, 1
-    substr rx1155_tgt, rx1155_tgt, rx1155_off
-  rx1155_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1159_done
-    goto rxscan1159_scan
-  rxscan1159_loop:
-    ($P10) = rx1155_cur."from"()
-    inc $P10
-    set rx1155_pos, $P10
-    ge rx1155_pos, rx1155_eos, rxscan1159_done
-  rxscan1159_scan:
-    set_addr $I10, rxscan1159_loop
-    rx1155_cur."!mark_push"(0, rx1155_pos, $I10)
-  rxscan1159_done:
-.annotate "line", 497
+.sub "infix:sym<&&>"  :subid("297_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1160_tgt
+    .local int rx1160_pos
+    .local int rx1160_off
+    .local int rx1160_eos
+    .local int rx1160_rep
+    .local pmc rx1160_cur
+    (rx1160_cur, rx1160_pos, rx1160_tgt) = self."!cursor_start"()
+    rx1160_cur."!cursor_debug"("START ", "infix:sym<&&>")
+    .lex unicode:"$\x{a2}", rx1160_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1160_eos, rx1160_tgt
+    set rx1160_off, 0
+    lt rx1160_pos, 2, rx1160_start
+    sub rx1160_off, rx1160_pos, 1
+    substr rx1160_tgt, rx1160_tgt, rx1160_off
+  rx1160_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1164_done
+    goto rxscan1164_scan
+  rxscan1164_loop:
+    ($P10) = rx1160_cur."from"()
+    inc $P10
+    set rx1160_pos, $P10
+    ge rx1160_pos, rx1160_eos, rxscan1164_done
+  rxscan1164_scan:
+    set_addr $I10, rxscan1164_loop
+    rx1160_cur."!mark_push"(0, rx1160_pos, $I10)
+  rxscan1164_done:
+.annotate "line", 501
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1160_fail
-    rx1155_cur."!mark_push"(0, rx1155_pos, $I10)
+    set_addr $I10, rxcap_1165_fail
+    rx1160_cur."!mark_push"(0, rx1160_pos, $I10)
   # rx literal  "&&"
-    add $I11, rx1155_pos, 2
-    gt $I11, rx1155_eos, rx1155_fail
-    sub $I11, rx1155_pos, rx1155_off
-    substr $S10, rx1155_tgt, $I11, 2
-    ne $S10, "&&", rx1155_fail
-    add rx1155_pos, 2
-    set_addr $I10, rxcap_1160_fail
-    ($I12, $I11) = rx1155_cur."!mark_peek"($I10)
-    rx1155_cur."!cursor_pos"($I11)
-    ($P10) = rx1155_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1155_pos, "")
-    rx1155_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1160_pos, 2
+    gt $I11, rx1160_eos, rx1160_fail
+    sub $I11, rx1160_pos, rx1160_off
+    substr $S10, rx1160_tgt, $I11, 2
+    ne $S10, "&&", rx1160_fail
+    add rx1160_pos, 2
+    set_addr $I10, rxcap_1165_fail
+    ($I12, $I11) = rx1160_cur."!mark_peek"($I10)
+    rx1160_cur."!cursor_pos"($I11)
+    ($P10) = rx1160_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1160_pos, "")
+    rx1160_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1160_done
-  rxcap_1160_fail:
-    goto rx1155_fail
-  rxcap_1160_done:
+    goto rxcap_1165_done
+  rxcap_1165_fail:
+    goto rx1160_fail
+  rxcap_1165_done:
   # rx subrule "O" subtype=capture negate=
-    rx1155_cur."!cursor_pos"(rx1155_pos)
-    $P10 = rx1155_cur."O"("%tight_and, :pasttype<if>")
-    unless $P10, rx1155_fail
-    rx1155_cur."!mark_push"(0, -1, 0, $P10)
+    rx1160_cur."!cursor_pos"(rx1160_pos)
+    $P10 = rx1160_cur."O"("%tight_and, :pasttype<if>")
+    unless $P10, rx1160_fail
+    rx1160_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1155_pos = $P10."pos"()
+    rx1160_pos = $P10."pos"()
   # rx pass
-    rx1155_cur."!cursor_pass"(rx1155_pos, "infix:sym<&&>")
-    rx1155_cur."!cursor_debug"("PASS  ", "infix:sym<&&>", " at pos=", rx1155_pos)
-    .return (rx1155_cur)
-  rx1155_fail:
-.annotate "line", 413
-    (rx1155_rep, rx1155_pos, $I10, $P10) = rx1155_cur."!mark_fail"(0)
-    lt rx1155_pos, -1, rx1155_done
-    eq rx1155_pos, -1, rx1155_fail
+    rx1160_cur."!cursor_pass"(rx1160_pos, "infix:sym<&&>")
+    rx1160_cur."!cursor_debug"("PASS  ", "infix:sym<&&>", " at pos=", rx1160_pos)
+    .return (rx1160_cur)
+  rx1160_fail:
+.annotate "line", 417
+    (rx1160_rep, rx1160_pos, $I10, $P10) = rx1160_cur."!mark_fail"(0)
+    lt rx1160_pos, -1, rx1160_done
+    eq rx1160_pos, -1, rx1160_fail
     jump $I10
-  rx1155_done:
-    rx1155_cur."!cursor_fail"()
-    rx1155_cur."!cursor_debug"("FAIL  ", "infix:sym<&&>")
-    .return (rx1155_cur)
+  rx1160_done:
+    rx1160_cur."!cursor_fail"()
+    rx1160_cur."!cursor_debug"("FAIL  ", "infix:sym<&&>")
+    .return (rx1160_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<&&>"  :subid("298_1261064023.05912") :method
-.annotate "line", 413
-    $P1157 = self."!PREFIX__!subrule"("O", "&&")
-    new $P1158, "ResizablePMCArray"
-    push $P1158, $P1157
-    .return ($P1158)
+.sub "!PREFIX__infix:sym<&&>"  :subid("298_1267204702.05125") :method
+.annotate "line", 417
+    $P1162 = self."!PREFIX__!subrule"("O", "&&")
+    new $P1163, "ResizablePMCArray"
+    push $P1163, $P1162
+    .return ($P1163)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<||>"  :subid("299_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1162_tgt
-    .local int rx1162_pos
-    .local int rx1162_off
-    .local int rx1162_eos
-    .local int rx1162_rep
-    .local pmc rx1162_cur
-    (rx1162_cur, rx1162_pos, rx1162_tgt) = self."!cursor_start"()
-    rx1162_cur."!cursor_debug"("START ", "infix:sym<||>")
-    .lex unicode:"$\x{a2}", rx1162_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1162_eos, rx1162_tgt
-    set rx1162_off, 0
-    lt rx1162_pos, 2, rx1162_start
-    sub rx1162_off, rx1162_pos, 1
-    substr rx1162_tgt, rx1162_tgt, rx1162_off
-  rx1162_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1166_done
-    goto rxscan1166_scan
-  rxscan1166_loop:
-    ($P10) = rx1162_cur."from"()
-    inc $P10
-    set rx1162_pos, $P10
-    ge rx1162_pos, rx1162_eos, rxscan1166_done
-  rxscan1166_scan:
-    set_addr $I10, rxscan1166_loop
-    rx1162_cur."!mark_push"(0, rx1162_pos, $I10)
-  rxscan1166_done:
-.annotate "line", 499
+.sub "infix:sym<||>"  :subid("299_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1167_tgt
+    .local int rx1167_pos
+    .local int rx1167_off
+    .local int rx1167_eos
+    .local int rx1167_rep
+    .local pmc rx1167_cur
+    (rx1167_cur, rx1167_pos, rx1167_tgt) = self."!cursor_start"()
+    rx1167_cur."!cursor_debug"("START ", "infix:sym<||>")
+    .lex unicode:"$\x{a2}", rx1167_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1167_eos, rx1167_tgt
+    set rx1167_off, 0
+    lt rx1167_pos, 2, rx1167_start
+    sub rx1167_off, rx1167_pos, 1
+    substr rx1167_tgt, rx1167_tgt, rx1167_off
+  rx1167_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1171_done
+    goto rxscan1171_scan
+  rxscan1171_loop:
+    ($P10) = rx1167_cur."from"()
+    inc $P10
+    set rx1167_pos, $P10
+    ge rx1167_pos, rx1167_eos, rxscan1171_done
+  rxscan1171_scan:
+    set_addr $I10, rxscan1171_loop
+    rx1167_cur."!mark_push"(0, rx1167_pos, $I10)
+  rxscan1171_done:
+.annotate "line", 503
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1167_fail
-    rx1162_cur."!mark_push"(0, rx1162_pos, $I10)
+    set_addr $I10, rxcap_1172_fail
+    rx1167_cur."!mark_push"(0, rx1167_pos, $I10)
   # rx literal  "||"
-    add $I11, rx1162_pos, 2
-    gt $I11, rx1162_eos, rx1162_fail
-    sub $I11, rx1162_pos, rx1162_off
-    substr $S10, rx1162_tgt, $I11, 2
-    ne $S10, "||", rx1162_fail
-    add rx1162_pos, 2
-    set_addr $I10, rxcap_1167_fail
-    ($I12, $I11) = rx1162_cur."!mark_peek"($I10)
-    rx1162_cur."!cursor_pos"($I11)
-    ($P10) = rx1162_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1162_pos, "")
-    rx1162_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1167_pos, 2
+    gt $I11, rx1167_eos, rx1167_fail
+    sub $I11, rx1167_pos, rx1167_off
+    substr $S10, rx1167_tgt, $I11, 2
+    ne $S10, "||", rx1167_fail
+    add rx1167_pos, 2
+    set_addr $I10, rxcap_1172_fail
+    ($I12, $I11) = rx1167_cur."!mark_peek"($I10)
+    rx1167_cur."!cursor_pos"($I11)
+    ($P10) = rx1167_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1167_pos, "")
+    rx1167_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1167_done
-  rxcap_1167_fail:
-    goto rx1162_fail
-  rxcap_1167_done:
+    goto rxcap_1172_done
+  rxcap_1172_fail:
+    goto rx1167_fail
+  rxcap_1172_done:
   # rx subrule "O" subtype=capture negate=
-    rx1162_cur."!cursor_pos"(rx1162_pos)
-    $P10 = rx1162_cur."O"("%tight_or, :pasttype<unless>")
-    unless $P10, rx1162_fail
-    rx1162_cur."!mark_push"(0, -1, 0, $P10)
+    rx1167_cur."!cursor_pos"(rx1167_pos)
+    $P10 = rx1167_cur."O"("%tight_or, :pasttype<unless>")
+    unless $P10, rx1167_fail
+    rx1167_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1162_pos = $P10."pos"()
+    rx1167_pos = $P10."pos"()
   # rx pass
-    rx1162_cur."!cursor_pass"(rx1162_pos, "infix:sym<||>")
-    rx1162_cur."!cursor_debug"("PASS  ", "infix:sym<||>", " at pos=", rx1162_pos)
-    .return (rx1162_cur)
-  rx1162_fail:
-.annotate "line", 413
-    (rx1162_rep, rx1162_pos, $I10, $P10) = rx1162_cur."!mark_fail"(0)
-    lt rx1162_pos, -1, rx1162_done
-    eq rx1162_pos, -1, rx1162_fail
+    rx1167_cur."!cursor_pass"(rx1167_pos, "infix:sym<||>")
+    rx1167_cur."!cursor_debug"("PASS  ", "infix:sym<||>", " at pos=", rx1167_pos)
+    .return (rx1167_cur)
+  rx1167_fail:
+.annotate "line", 417
+    (rx1167_rep, rx1167_pos, $I10, $P10) = rx1167_cur."!mark_fail"(0)
+    lt rx1167_pos, -1, rx1167_done
+    eq rx1167_pos, -1, rx1167_fail
     jump $I10
-  rx1162_done:
-    rx1162_cur."!cursor_fail"()
-    rx1162_cur."!cursor_debug"("FAIL  ", "infix:sym<||>")
-    .return (rx1162_cur)
+  rx1167_done:
+    rx1167_cur."!cursor_fail"()
+    rx1167_cur."!cursor_debug"("FAIL  ", "infix:sym<||>")
+    .return (rx1167_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<||>"  :subid("300_1261064023.05912") :method
-.annotate "line", 413
-    $P1164 = self."!PREFIX__!subrule"("O", "||")
-    new $P1165, "ResizablePMCArray"
-    push $P1165, $P1164
-    .return ($P1165)
+.sub "!PREFIX__infix:sym<||>"  :subid("300_1267204702.05125") :method
+.annotate "line", 417
+    $P1169 = self."!PREFIX__!subrule"("O", "||")
+    new $P1170, "ResizablePMCArray"
+    push $P1170, $P1169
+    .return ($P1170)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<//>"  :subid("301_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1169_tgt
-    .local int rx1169_pos
-    .local int rx1169_off
-    .local int rx1169_eos
-    .local int rx1169_rep
-    .local pmc rx1169_cur
-    (rx1169_cur, rx1169_pos, rx1169_tgt) = self."!cursor_start"()
-    rx1169_cur."!cursor_debug"("START ", "infix:sym<//>")
-    .lex unicode:"$\x{a2}", rx1169_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1169_eos, rx1169_tgt
-    set rx1169_off, 0
-    lt rx1169_pos, 2, rx1169_start
-    sub rx1169_off, rx1169_pos, 1
-    substr rx1169_tgt, rx1169_tgt, rx1169_off
-  rx1169_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1173_done
-    goto rxscan1173_scan
-  rxscan1173_loop:
-    ($P10) = rx1169_cur."from"()
-    inc $P10
-    set rx1169_pos, $P10
-    ge rx1169_pos, rx1169_eos, rxscan1173_done
-  rxscan1173_scan:
-    set_addr $I10, rxscan1173_loop
-    rx1169_cur."!mark_push"(0, rx1169_pos, $I10)
-  rxscan1173_done:
-.annotate "line", 500
+.sub "infix:sym<//>"  :subid("301_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1174_tgt
+    .local int rx1174_pos
+    .local int rx1174_off
+    .local int rx1174_eos
+    .local int rx1174_rep
+    .local pmc rx1174_cur
+    (rx1174_cur, rx1174_pos, rx1174_tgt) = self."!cursor_start"()
+    rx1174_cur."!cursor_debug"("START ", "infix:sym<//>")
+    .lex unicode:"$\x{a2}", rx1174_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1174_eos, rx1174_tgt
+    set rx1174_off, 0
+    lt rx1174_pos, 2, rx1174_start
+    sub rx1174_off, rx1174_pos, 1
+    substr rx1174_tgt, rx1174_tgt, rx1174_off
+  rx1174_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1178_done
+    goto rxscan1178_scan
+  rxscan1178_loop:
+    ($P10) = rx1174_cur."from"()
+    inc $P10
+    set rx1174_pos, $P10
+    ge rx1174_pos, rx1174_eos, rxscan1178_done
+  rxscan1178_scan:
+    set_addr $I10, rxscan1178_loop
+    rx1174_cur."!mark_push"(0, rx1174_pos, $I10)
+  rxscan1178_done:
+.annotate "line", 504
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1174_fail
-    rx1169_cur."!mark_push"(0, rx1169_pos, $I10)
+    set_addr $I10, rxcap_1179_fail
+    rx1174_cur."!mark_push"(0, rx1174_pos, $I10)
   # rx literal  "//"
-    add $I11, rx1169_pos, 2
-    gt $I11, rx1169_eos, rx1169_fail
-    sub $I11, rx1169_pos, rx1169_off
-    substr $S10, rx1169_tgt, $I11, 2
-    ne $S10, "//", rx1169_fail
-    add rx1169_pos, 2
-    set_addr $I10, rxcap_1174_fail
-    ($I12, $I11) = rx1169_cur."!mark_peek"($I10)
-    rx1169_cur."!cursor_pos"($I11)
-    ($P10) = rx1169_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1169_pos, "")
-    rx1169_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1174_pos, 2
+    gt $I11, rx1174_eos, rx1174_fail
+    sub $I11, rx1174_pos, rx1174_off
+    substr $S10, rx1174_tgt, $I11, 2
+    ne $S10, "//", rx1174_fail
+    add rx1174_pos, 2
+    set_addr $I10, rxcap_1179_fail
+    ($I12, $I11) = rx1174_cur."!mark_peek"($I10)
+    rx1174_cur."!cursor_pos"($I11)
+    ($P10) = rx1174_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1174_pos, "")
+    rx1174_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1174_done
-  rxcap_1174_fail:
-    goto rx1169_fail
-  rxcap_1174_done:
+    goto rxcap_1179_done
+  rxcap_1179_fail:
+    goto rx1174_fail
+  rxcap_1179_done:
   # rx subrule "O" subtype=capture negate=
-    rx1169_cur."!cursor_pos"(rx1169_pos)
-    $P10 = rx1169_cur."O"("%tight_or, :pasttype<def_or>")
-    unless $P10, rx1169_fail
-    rx1169_cur."!mark_push"(0, -1, 0, $P10)
+    rx1174_cur."!cursor_pos"(rx1174_pos)
+    $P10 = rx1174_cur."O"("%tight_or, :pasttype<def_or>")
+    unless $P10, rx1174_fail
+    rx1174_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1169_pos = $P10."pos"()
+    rx1174_pos = $P10."pos"()
   # rx pass
-    rx1169_cur."!cursor_pass"(rx1169_pos, "infix:sym<//>")
-    rx1169_cur."!cursor_debug"("PASS  ", "infix:sym<//>", " at pos=", rx1169_pos)
-    .return (rx1169_cur)
-  rx1169_fail:
-.annotate "line", 413
-    (rx1169_rep, rx1169_pos, $I10, $P10) = rx1169_cur."!mark_fail"(0)
-    lt rx1169_pos, -1, rx1169_done
-    eq rx1169_pos, -1, rx1169_fail
+    rx1174_cur."!cursor_pass"(rx1174_pos, "infix:sym<//>")
+    rx1174_cur."!cursor_debug"("PASS  ", "infix:sym<//>", " at pos=", rx1174_pos)
+    .return (rx1174_cur)
+  rx1174_fail:
+.annotate "line", 417
+    (rx1174_rep, rx1174_pos, $I10, $P10) = rx1174_cur."!mark_fail"(0)
+    lt rx1174_pos, -1, rx1174_done
+    eq rx1174_pos, -1, rx1174_fail
     jump $I10
-  rx1169_done:
-    rx1169_cur."!cursor_fail"()
-    rx1169_cur."!cursor_debug"("FAIL  ", "infix:sym<//>")
-    .return (rx1169_cur)
+  rx1174_done:
+    rx1174_cur."!cursor_fail"()
+    rx1174_cur."!cursor_debug"("FAIL  ", "infix:sym<//>")
+    .return (rx1174_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<//>"  :subid("302_1261064023.05912") :method
-.annotate "line", 413
-    $P1171 = self."!PREFIX__!subrule"("O", "//")
-    new $P1172, "ResizablePMCArray"
-    push $P1172, $P1171
-    .return ($P1172)
+.sub "!PREFIX__infix:sym<//>"  :subid("302_1267204702.05125") :method
+.annotate "line", 417
+    $P1176 = self."!PREFIX__!subrule"("O", "//")
+    new $P1177, "ResizablePMCArray"
+    push $P1177, $P1176
+    .return ($P1177)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<?? !!>"  :subid("303_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1176_tgt
-    .local int rx1176_pos
-    .local int rx1176_off
-    .local int rx1176_eos
-    .local int rx1176_rep
-    .local pmc rx1176_cur
-    (rx1176_cur, rx1176_pos, rx1176_tgt) = self."!cursor_start"()
-    rx1176_cur."!cursor_debug"("START ", "infix:sym<?? !!>")
-    .lex unicode:"$\x{a2}", rx1176_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1176_eos, rx1176_tgt
-    set rx1176_off, 0
-    lt rx1176_pos, 2, rx1176_start
-    sub rx1176_off, rx1176_pos, 1
-    substr rx1176_tgt, rx1176_tgt, rx1176_off
-  rx1176_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1180_done
-    goto rxscan1180_scan
-  rxscan1180_loop:
-    ($P10) = rx1176_cur."from"()
-    inc $P10
-    set rx1176_pos, $P10
-    ge rx1176_pos, rx1176_eos, rxscan1180_done
-  rxscan1180_scan:
-    set_addr $I10, rxscan1180_loop
-    rx1176_cur."!mark_push"(0, rx1176_pos, $I10)
-  rxscan1180_done:
-.annotate "line", 503
+.sub "infix:sym<?? !!>"  :subid("303_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1181_tgt
+    .local int rx1181_pos
+    .local int rx1181_off
+    .local int rx1181_eos
+    .local int rx1181_rep
+    .local pmc rx1181_cur
+    (rx1181_cur, rx1181_pos, rx1181_tgt) = self."!cursor_start"()
+    rx1181_cur."!cursor_debug"("START ", "infix:sym<?? !!>")
+    .lex unicode:"$\x{a2}", rx1181_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1181_eos, rx1181_tgt
+    set rx1181_off, 0
+    lt rx1181_pos, 2, rx1181_start
+    sub rx1181_off, rx1181_pos, 1
+    substr rx1181_tgt, rx1181_tgt, rx1181_off
+  rx1181_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1185_done
+    goto rxscan1185_scan
+  rxscan1185_loop:
+    ($P10) = rx1181_cur."from"()
+    inc $P10
+    set rx1181_pos, $P10
+    ge rx1181_pos, rx1181_eos, rxscan1185_done
+  rxscan1185_scan:
+    set_addr $I10, rxscan1185_loop
+    rx1181_cur."!mark_push"(0, rx1181_pos, $I10)
+  rxscan1185_done:
+.annotate "line", 507
   # rx literal  "??"
-    add $I11, rx1176_pos, 2
-    gt $I11, rx1176_eos, rx1176_fail
-    sub $I11, rx1176_pos, rx1176_off
-    substr $S10, rx1176_tgt, $I11, 2
-    ne $S10, "??", rx1176_fail
-    add rx1176_pos, 2
-.annotate "line", 504
-  # rx subrule "ws" subtype=method negate=
-    rx1176_cur."!cursor_pos"(rx1176_pos)
-    $P10 = rx1176_cur."ws"()
-    unless $P10, rx1176_fail
-    rx1176_pos = $P10."pos"()
-.annotate "line", 505
+    add $I11, rx1181_pos, 2
+    gt $I11, rx1181_eos, rx1181_fail
+    sub $I11, rx1181_pos, rx1181_off
+    substr $S10, rx1181_tgt, $I11, 2
+    ne $S10, "??", rx1181_fail
+    add rx1181_pos, 2
+.annotate "line", 508
+  # rx subrule "ws" subtype=method negate=
+    rx1181_cur."!cursor_pos"(rx1181_pos)
+    $P10 = rx1181_cur."ws"()
+    unless $P10, rx1181_fail
+    rx1181_pos = $P10."pos"()
+.annotate "line", 509
   # rx subrule "EXPR" subtype=capture negate=
-    rx1176_cur."!cursor_pos"(rx1176_pos)
-    $P10 = rx1176_cur."EXPR"("i=")
-    unless $P10, rx1176_fail
-    rx1176_cur."!mark_push"(0, -1, 0, $P10)
+    rx1181_cur."!cursor_pos"(rx1181_pos)
+    $P10 = rx1181_cur."EXPR"("i=")
+    unless $P10, rx1181_fail
+    rx1181_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("EXPR")
-    rx1176_pos = $P10."pos"()
-.annotate "line", 506
+    rx1181_pos = $P10."pos"()
+.annotate "line", 510
   # rx literal  "!!"
-    add $I11, rx1176_pos, 2
-    gt $I11, rx1176_eos, rx1176_fail
-    sub $I11, rx1176_pos, rx1176_off
-    substr $S10, rx1176_tgt, $I11, 2
-    ne $S10, "!!", rx1176_fail
-    add rx1176_pos, 2
-.annotate "line", 507
+    add $I11, rx1181_pos, 2
+    gt $I11, rx1181_eos, rx1181_fail
+    sub $I11, rx1181_pos, rx1181_off
+    substr $S10, rx1181_tgt, $I11, 2
+    ne $S10, "!!", rx1181_fail
+    add rx1181_pos, 2
+.annotate "line", 511
   # rx subrule "O" subtype=capture negate=
-    rx1176_cur."!cursor_pos"(rx1176_pos)
-    $P10 = rx1176_cur."O"("%conditional, :reducecheck<ternary>, :pasttype<if>")
-    unless $P10, rx1176_fail
-    rx1176_cur."!mark_push"(0, -1, 0, $P10)
+    rx1181_cur."!cursor_pos"(rx1181_pos)
+    $P10 = rx1181_cur."O"("%conditional, :reducecheck<ternary>, :pasttype<if>")
+    unless $P10, rx1181_fail
+    rx1181_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1176_pos = $P10."pos"()
-.annotate "line", 502
+    rx1181_pos = $P10."pos"()
+.annotate "line", 506
   # rx pass
-    rx1176_cur."!cursor_pass"(rx1176_pos, "infix:sym<?? !!>")
-    rx1176_cur."!cursor_debug"("PASS  ", "infix:sym<?? !!>", " at pos=", rx1176_pos)
-    .return (rx1176_cur)
-  rx1176_fail:
-.annotate "line", 413
-    (rx1176_rep, rx1176_pos, $I10, $P10) = rx1176_cur."!mark_fail"(0)
-    lt rx1176_pos, -1, rx1176_done
-    eq rx1176_pos, -1, rx1176_fail
+    rx1181_cur."!cursor_pass"(rx1181_pos, "infix:sym<?? !!>")
+    rx1181_cur."!cursor_debug"("PASS  ", "infix:sym<?? !!>", " at pos=", rx1181_pos)
+    .return (rx1181_cur)
+  rx1181_fail:
+.annotate "line", 417
+    (rx1181_rep, rx1181_pos, $I10, $P10) = rx1181_cur."!mark_fail"(0)
+    lt rx1181_pos, -1, rx1181_done
+    eq rx1181_pos, -1, rx1181_fail
     jump $I10
-  rx1176_done:
-    rx1176_cur."!cursor_fail"()
-    rx1176_cur."!cursor_debug"("FAIL  ", "infix:sym<?? !!>")
-    .return (rx1176_cur)
+  rx1181_done:
+    rx1181_cur."!cursor_fail"()
+    rx1181_cur."!cursor_debug"("FAIL  ", "infix:sym<?? !!>")
+    .return (rx1181_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<?? !!>"  :subid("304_1261064023.05912") :method
-.annotate "line", 413
-    $P1178 = self."!PREFIX__!subrule"("", "??")
-    new $P1179, "ResizablePMCArray"
-    push $P1179, $P1178
-    .return ($P1179)
+.sub "!PREFIX__infix:sym<?? !!>"  :subid("304_1267204702.05125") :method
+.annotate "line", 417
+    $P1183 = self."!PREFIX__!subrule"("", "??")
+    new $P1184, "ResizablePMCArray"
+    push $P1184, $P1183
+    .return ($P1184)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=>"  :subid("305_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1182_tgt
-    .local int rx1182_pos
-    .local int rx1182_off
-    .local int rx1182_eos
-    .local int rx1182_rep
-    .local pmc rx1182_cur
-    (rx1182_cur, rx1182_pos, rx1182_tgt) = self."!cursor_start"()
-    rx1182_cur."!cursor_debug"("START ", "infix:sym<=>")
-    .lex unicode:"$\x{a2}", rx1182_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1182_eos, rx1182_tgt
-    set rx1182_off, 0
-    lt rx1182_pos, 2, rx1182_start
-    sub rx1182_off, rx1182_pos, 1
-    substr rx1182_tgt, rx1182_tgt, rx1182_off
-  rx1182_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1186_done
-    goto rxscan1186_scan
-  rxscan1186_loop:
-    ($P10) = rx1182_cur."from"()
-    inc $P10
-    set rx1182_pos, $P10
-    ge rx1182_pos, rx1182_eos, rxscan1186_done
-  rxscan1186_scan:
-    set_addr $I10, rxscan1186_loop
-    rx1182_cur."!mark_push"(0, rx1182_pos, $I10)
-  rxscan1186_done:
-.annotate "line", 511
+.sub "infix:sym<=>"  :subid("305_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1187_tgt
+    .local int rx1187_pos
+    .local int rx1187_off
+    .local int rx1187_eos
+    .local int rx1187_rep
+    .local pmc rx1187_cur
+    (rx1187_cur, rx1187_pos, rx1187_tgt) = self."!cursor_start"()
+    rx1187_cur."!cursor_debug"("START ", "infix:sym<=>")
+    .lex unicode:"$\x{a2}", rx1187_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1187_eos, rx1187_tgt
+    set rx1187_off, 0
+    lt rx1187_pos, 2, rx1187_start
+    sub rx1187_off, rx1187_pos, 1
+    substr rx1187_tgt, rx1187_tgt, rx1187_off
+  rx1187_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1191_done
+    goto rxscan1191_scan
+  rxscan1191_loop:
+    ($P10) = rx1187_cur."from"()
+    inc $P10
+    set rx1187_pos, $P10
+    ge rx1187_pos, rx1187_eos, rxscan1191_done
+  rxscan1191_scan:
+    set_addr $I10, rxscan1191_loop
+    rx1187_cur."!mark_push"(0, rx1187_pos, $I10)
+  rxscan1191_done:
+.annotate "line", 515
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1187_fail
-    rx1182_cur."!mark_push"(0, rx1182_pos, $I10)
+    set_addr $I10, rxcap_1192_fail
+    rx1187_cur."!mark_push"(0, rx1187_pos, $I10)
   # rx literal  "="
-    add $I11, rx1182_pos, 1
-    gt $I11, rx1182_eos, rx1182_fail
-    sub $I11, rx1182_pos, rx1182_off
-    substr $S10, rx1182_tgt, $I11, 1
-    ne $S10, "=", rx1182_fail
-    add rx1182_pos, 1
-    set_addr $I10, rxcap_1187_fail
-    ($I12, $I11) = rx1182_cur."!mark_peek"($I10)
-    rx1182_cur."!cursor_pos"($I11)
-    ($P10) = rx1182_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1182_pos, "")
-    rx1182_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1187_pos, 1
+    gt $I11, rx1187_eos, rx1187_fail
+    sub $I11, rx1187_pos, rx1187_off
+    substr $S10, rx1187_tgt, $I11, 1
+    ne $S10, "=", rx1187_fail
+    add rx1187_pos, 1
+    set_addr $I10, rxcap_1192_fail
+    ($I12, $I11) = rx1187_cur."!mark_peek"($I10)
+    rx1187_cur."!cursor_pos"($I11)
+    ($P10) = rx1187_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1187_pos, "")
+    rx1187_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1187_done
-  rxcap_1187_fail:
-    goto rx1182_fail
-  rxcap_1187_done:
+    goto rxcap_1192_done
+  rxcap_1192_fail:
+    goto rx1187_fail
+  rxcap_1192_done:
   # rx subrule "panic" subtype=method negate=
-    rx1182_cur."!cursor_pos"(rx1182_pos)
-    $P10 = rx1182_cur."panic"("Assignment (\"=\") not supported in NQP, use \":=\" instead")
-    unless $P10, rx1182_fail
-    rx1182_pos = $P10."pos"()
-.annotate "line", 510
+    rx1187_cur."!cursor_pos"(rx1187_pos)
+    $P10 = rx1187_cur."panic"("Assignment (\"=\") not supported in NQP, use \":=\" instead")
+    unless $P10, rx1187_fail
+    rx1187_pos = $P10."pos"()
+.annotate "line", 514
   # rx pass
-    rx1182_cur."!cursor_pass"(rx1182_pos, "infix:sym<=>")
-    rx1182_cur."!cursor_debug"("PASS  ", "infix:sym<=>", " at pos=", rx1182_pos)
-    .return (rx1182_cur)
-  rx1182_fail:
-.annotate "line", 413
-    (rx1182_rep, rx1182_pos, $I10, $P10) = rx1182_cur."!mark_fail"(0)
-    lt rx1182_pos, -1, rx1182_done
-    eq rx1182_pos, -1, rx1182_fail
+    rx1187_cur."!cursor_pass"(rx1187_pos, "infix:sym<=>")
+    rx1187_cur."!cursor_debug"("PASS  ", "infix:sym<=>", " at pos=", rx1187_pos)
+    .return (rx1187_cur)
+  rx1187_fail:
+.annotate "line", 417
+    (rx1187_rep, rx1187_pos, $I10, $P10) = rx1187_cur."!mark_fail"(0)
+    lt rx1187_pos, -1, rx1187_done
+    eq rx1187_pos, -1, rx1187_fail
     jump $I10
-  rx1182_done:
-    rx1182_cur."!cursor_fail"()
-    rx1182_cur."!cursor_debug"("FAIL  ", "infix:sym<=>")
-    .return (rx1182_cur)
+  rx1187_done:
+    rx1187_cur."!cursor_fail"()
+    rx1187_cur."!cursor_debug"("FAIL  ", "infix:sym<=>")
+    .return (rx1187_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=>"  :subid("306_1261064023.05912") :method
-.annotate "line", 413
-    $P1184 = self."!PREFIX__!subrule"("", "=")
-    new $P1185, "ResizablePMCArray"
-    push $P1185, $P1184
-    .return ($P1185)
+.sub "!PREFIX__infix:sym<=>"  :subid("306_1267204702.05125") :method
+.annotate "line", 417
+    $P1189 = self."!PREFIX__!subrule"("", "=")
+    new $P1190, "ResizablePMCArray"
+    push $P1190, $P1189
+    .return ($P1190)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<:=>"  :subid("307_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1189_tgt
-    .local int rx1189_pos
-    .local int rx1189_off
-    .local int rx1189_eos
-    .local int rx1189_rep
-    .local pmc rx1189_cur
-    (rx1189_cur, rx1189_pos, rx1189_tgt) = self."!cursor_start"()
-    rx1189_cur."!cursor_debug"("START ", "infix:sym<:=>")
-    .lex unicode:"$\x{a2}", rx1189_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1189_eos, rx1189_tgt
-    set rx1189_off, 0
-    lt rx1189_pos, 2, rx1189_start
-    sub rx1189_off, rx1189_pos, 1
-    substr rx1189_tgt, rx1189_tgt, rx1189_off
-  rx1189_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1193_done
-    goto rxscan1193_scan
-  rxscan1193_loop:
-    ($P10) = rx1189_cur."from"()
-    inc $P10
-    set rx1189_pos, $P10
-    ge rx1189_pos, rx1189_eos, rxscan1193_done
-  rxscan1193_scan:
-    set_addr $I10, rxscan1193_loop
-    rx1189_cur."!mark_push"(0, rx1189_pos, $I10)
-  rxscan1193_done:
-.annotate "line", 513
+.sub "infix:sym<:=>"  :subid("307_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1194_tgt
+    .local int rx1194_pos
+    .local int rx1194_off
+    .local int rx1194_eos
+    .local int rx1194_rep
+    .local pmc rx1194_cur
+    (rx1194_cur, rx1194_pos, rx1194_tgt) = self."!cursor_start"()
+    rx1194_cur."!cursor_debug"("START ", "infix:sym<:=>")
+    .lex unicode:"$\x{a2}", rx1194_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1194_eos, rx1194_tgt
+    set rx1194_off, 0
+    lt rx1194_pos, 2, rx1194_start
+    sub rx1194_off, rx1194_pos, 1
+    substr rx1194_tgt, rx1194_tgt, rx1194_off
+  rx1194_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1198_done
+    goto rxscan1198_scan
+  rxscan1198_loop:
+    ($P10) = rx1194_cur."from"()
+    inc $P10
+    set rx1194_pos, $P10
+    ge rx1194_pos, rx1194_eos, rxscan1198_done
+  rxscan1198_scan:
+    set_addr $I10, rxscan1198_loop
+    rx1194_cur."!mark_push"(0, rx1194_pos, $I10)
+  rxscan1198_done:
+.annotate "line", 517
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1194_fail
-    rx1189_cur."!mark_push"(0, rx1189_pos, $I10)
+    set_addr $I10, rxcap_1199_fail
+    rx1194_cur."!mark_push"(0, rx1194_pos, $I10)
   # rx literal  ":="
-    add $I11, rx1189_pos, 2
-    gt $I11, rx1189_eos, rx1189_fail
-    sub $I11, rx1189_pos, rx1189_off
-    substr $S10, rx1189_tgt, $I11, 2
-    ne $S10, ":=", rx1189_fail
-    add rx1189_pos, 2
-    set_addr $I10, rxcap_1194_fail
-    ($I12, $I11) = rx1189_cur."!mark_peek"($I10)
-    rx1189_cur."!cursor_pos"($I11)
-    ($P10) = rx1189_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1189_pos, "")
-    rx1189_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1194_pos, 2
+    gt $I11, rx1194_eos, rx1194_fail
+    sub $I11, rx1194_pos, rx1194_off
+    substr $S10, rx1194_tgt, $I11, 2
+    ne $S10, ":=", rx1194_fail
+    add rx1194_pos, 2
+    set_addr $I10, rxcap_1199_fail
+    ($I12, $I11) = rx1194_cur."!mark_peek"($I10)
+    rx1194_cur."!cursor_pos"($I11)
+    ($P10) = rx1194_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1194_pos, "")
+    rx1194_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1194_done
-  rxcap_1194_fail:
-    goto rx1189_fail
-  rxcap_1194_done:
+    goto rxcap_1199_done
+  rxcap_1199_fail:
+    goto rx1194_fail
+  rxcap_1199_done:
   # rx subrule "O" subtype=capture negate=
-    rx1189_cur."!cursor_pos"(rx1189_pos)
-    $P10 = rx1189_cur."O"("%assignment, :pasttype<bind>")
-    unless $P10, rx1189_fail
-    rx1189_cur."!mark_push"(0, -1, 0, $P10)
+    rx1194_cur."!cursor_pos"(rx1194_pos)
+    $P10 = rx1194_cur."O"("%assignment, :pasttype<bind>")
+    unless $P10, rx1194_fail
+    rx1194_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1189_pos = $P10."pos"()
+    rx1194_pos = $P10."pos"()
   # rx pass
-    rx1189_cur."!cursor_pass"(rx1189_pos, "infix:sym<:=>")
-    rx1189_cur."!cursor_debug"("PASS  ", "infix:sym<:=>", " at pos=", rx1189_pos)
-    .return (rx1189_cur)
-  rx1189_fail:
-.annotate "line", 413
-    (rx1189_rep, rx1189_pos, $I10, $P10) = rx1189_cur."!mark_fail"(0)
-    lt rx1189_pos, -1, rx1189_done
-    eq rx1189_pos, -1, rx1189_fail
+    rx1194_cur."!cursor_pass"(rx1194_pos, "infix:sym<:=>")
+    rx1194_cur."!cursor_debug"("PASS  ", "infix:sym<:=>", " at pos=", rx1194_pos)
+    .return (rx1194_cur)
+  rx1194_fail:
+.annotate "line", 417
+    (rx1194_rep, rx1194_pos, $I10, $P10) = rx1194_cur."!mark_fail"(0)
+    lt rx1194_pos, -1, rx1194_done
+    eq rx1194_pos, -1, rx1194_fail
     jump $I10
-  rx1189_done:
-    rx1189_cur."!cursor_fail"()
-    rx1189_cur."!cursor_debug"("FAIL  ", "infix:sym<:=>")
-    .return (rx1189_cur)
+  rx1194_done:
+    rx1194_cur."!cursor_fail"()
+    rx1194_cur."!cursor_debug"("FAIL  ", "infix:sym<:=>")
+    .return (rx1194_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<:=>"  :subid("308_1261064023.05912") :method
-.annotate "line", 413
-    $P1191 = self."!PREFIX__!subrule"("O", ":=")
-    new $P1192, "ResizablePMCArray"
-    push $P1192, $P1191
-    .return ($P1192)
+.sub "!PREFIX__infix:sym<:=>"  :subid("308_1267204702.05125") :method
+.annotate "line", 417
+    $P1196 = self."!PREFIX__!subrule"("O", ":=")
+    new $P1197, "ResizablePMCArray"
+    push $P1197, $P1196
+    .return ($P1197)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<::=>"  :subid("309_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1196_tgt
-    .local int rx1196_pos
-    .local int rx1196_off
-    .local int rx1196_eos
-    .local int rx1196_rep
-    .local pmc rx1196_cur
-    (rx1196_cur, rx1196_pos, rx1196_tgt) = self."!cursor_start"()
-    rx1196_cur."!cursor_debug"("START ", "infix:sym<::=>")
-    .lex unicode:"$\x{a2}", rx1196_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1196_eos, rx1196_tgt
-    set rx1196_off, 0
-    lt rx1196_pos, 2, rx1196_start
-    sub rx1196_off, rx1196_pos, 1
-    substr rx1196_tgt, rx1196_tgt, rx1196_off
-  rx1196_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1200_done
-    goto rxscan1200_scan
-  rxscan1200_loop:
-    ($P10) = rx1196_cur."from"()
-    inc $P10
-    set rx1196_pos, $P10
-    ge rx1196_pos, rx1196_eos, rxscan1200_done
-  rxscan1200_scan:
-    set_addr $I10, rxscan1200_loop
-    rx1196_cur."!mark_push"(0, rx1196_pos, $I10)
-  rxscan1200_done:
-.annotate "line", 514
+.sub "infix:sym<::=>"  :subid("309_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1201_tgt
+    .local int rx1201_pos
+    .local int rx1201_off
+    .local int rx1201_eos
+    .local int rx1201_rep
+    .local pmc rx1201_cur
+    (rx1201_cur, rx1201_pos, rx1201_tgt) = self."!cursor_start"()
+    rx1201_cur."!cursor_debug"("START ", "infix:sym<::=>")
+    .lex unicode:"$\x{a2}", rx1201_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1201_eos, rx1201_tgt
+    set rx1201_off, 0
+    lt rx1201_pos, 2, rx1201_start
+    sub rx1201_off, rx1201_pos, 1
+    substr rx1201_tgt, rx1201_tgt, rx1201_off
+  rx1201_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1205_done
+    goto rxscan1205_scan
+  rxscan1205_loop:
+    ($P10) = rx1201_cur."from"()
+    inc $P10
+    set rx1201_pos, $P10
+    ge rx1201_pos, rx1201_eos, rxscan1205_done
+  rxscan1205_scan:
+    set_addr $I10, rxscan1205_loop
+    rx1201_cur."!mark_push"(0, rx1201_pos, $I10)
+  rxscan1205_done:
+.annotate "line", 518
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1201_fail
-    rx1196_cur."!mark_push"(0, rx1196_pos, $I10)
+    set_addr $I10, rxcap_1206_fail
+    rx1201_cur."!mark_push"(0, rx1201_pos, $I10)
   # rx literal  "::="
-    add $I11, rx1196_pos, 3
-    gt $I11, rx1196_eos, rx1196_fail
-    sub $I11, rx1196_pos, rx1196_off
-    substr $S10, rx1196_tgt, $I11, 3
-    ne $S10, "::=", rx1196_fail
-    add rx1196_pos, 3
-    set_addr $I10, rxcap_1201_fail
-    ($I12, $I11) = rx1196_cur."!mark_peek"($I10)
-    rx1196_cur."!cursor_pos"($I11)
-    ($P10) = rx1196_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1196_pos, "")
-    rx1196_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1201_pos, 3
+    gt $I11, rx1201_eos, rx1201_fail
+    sub $I11, rx1201_pos, rx1201_off
+    substr $S10, rx1201_tgt, $I11, 3
+    ne $S10, "::=", rx1201_fail
+    add rx1201_pos, 3
+    set_addr $I10, rxcap_1206_fail
+    ($I12, $I11) = rx1201_cur."!mark_peek"($I10)
+    rx1201_cur."!cursor_pos"($I11)
+    ($P10) = rx1201_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1201_pos, "")
+    rx1201_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1201_done
-  rxcap_1201_fail:
-    goto rx1196_fail
-  rxcap_1201_done:
+    goto rxcap_1206_done
+  rxcap_1206_fail:
+    goto rx1201_fail
+  rxcap_1206_done:
   # rx subrule "O" subtype=capture negate=
-    rx1196_cur."!cursor_pos"(rx1196_pos)
-    $P10 = rx1196_cur."O"("%assignment, :pasttype<bind>")
-    unless $P10, rx1196_fail
-    rx1196_cur."!mark_push"(0, -1, 0, $P10)
+    rx1201_cur."!cursor_pos"(rx1201_pos)
+    $P10 = rx1201_cur."O"("%assignment, :pasttype<bind>")
+    unless $P10, rx1201_fail
+    rx1201_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1196_pos = $P10."pos"()
+    rx1201_pos = $P10."pos"()
   # rx pass
-    rx1196_cur."!cursor_pass"(rx1196_pos, "infix:sym<::=>")
-    rx1196_cur."!cursor_debug"("PASS  ", "infix:sym<::=>", " at pos=", rx1196_pos)
-    .return (rx1196_cur)
-  rx1196_fail:
-.annotate "line", 413
-    (rx1196_rep, rx1196_pos, $I10, $P10) = rx1196_cur."!mark_fail"(0)
-    lt rx1196_pos, -1, rx1196_done
-    eq rx1196_pos, -1, rx1196_fail
+    rx1201_cur."!cursor_pass"(rx1201_pos, "infix:sym<::=>")
+    rx1201_cur."!cursor_debug"("PASS  ", "infix:sym<::=>", " at pos=", rx1201_pos)
+    .return (rx1201_cur)
+  rx1201_fail:
+.annotate "line", 417
+    (rx1201_rep, rx1201_pos, $I10, $P10) = rx1201_cur."!mark_fail"(0)
+    lt rx1201_pos, -1, rx1201_done
+    eq rx1201_pos, -1, rx1201_fail
     jump $I10
-  rx1196_done:
-    rx1196_cur."!cursor_fail"()
-    rx1196_cur."!cursor_debug"("FAIL  ", "infix:sym<::=>")
-    .return (rx1196_cur)
+  rx1201_done:
+    rx1201_cur."!cursor_fail"()
+    rx1201_cur."!cursor_debug"("FAIL  ", "infix:sym<::=>")
+    .return (rx1201_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<::=>"  :subid("310_1261064023.05912") :method
-.annotate "line", 413
-    $P1198 = self."!PREFIX__!subrule"("O", "::=")
-    new $P1199, "ResizablePMCArray"
-    push $P1199, $P1198
-    .return ($P1199)
+.sub "!PREFIX__infix:sym<::=>"  :subid("310_1267204702.05125") :method
+.annotate "line", 417
+    $P1203 = self."!PREFIX__!subrule"("O", "::=")
+    new $P1204, "ResizablePMCArray"
+    push $P1204, $P1203
+    .return ($P1204)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<,>"  :subid("311_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1203_tgt
-    .local int rx1203_pos
-    .local int rx1203_off
-    .local int rx1203_eos
-    .local int rx1203_rep
-    .local pmc rx1203_cur
-    (rx1203_cur, rx1203_pos, rx1203_tgt) = self."!cursor_start"()
-    rx1203_cur."!cursor_debug"("START ", "infix:sym<,>")
-    .lex unicode:"$\x{a2}", rx1203_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1203_eos, rx1203_tgt
-    set rx1203_off, 0
-    lt rx1203_pos, 2, rx1203_start
-    sub rx1203_off, rx1203_pos, 1
-    substr rx1203_tgt, rx1203_tgt, rx1203_off
-  rx1203_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1207_done
-    goto rxscan1207_scan
-  rxscan1207_loop:
-    ($P10) = rx1203_cur."from"()
-    inc $P10
-    set rx1203_pos, $P10
-    ge rx1203_pos, rx1203_eos, rxscan1207_done
-  rxscan1207_scan:
-    set_addr $I10, rxscan1207_loop
-    rx1203_cur."!mark_push"(0, rx1203_pos, $I10)
-  rxscan1207_done:
-.annotate "line", 516
+.sub "infix:sym<,>"  :subid("311_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1208_tgt
+    .local int rx1208_pos
+    .local int rx1208_off
+    .local int rx1208_eos
+    .local int rx1208_rep
+    .local pmc rx1208_cur
+    (rx1208_cur, rx1208_pos, rx1208_tgt) = self."!cursor_start"()
+    rx1208_cur."!cursor_debug"("START ", "infix:sym<,>")
+    .lex unicode:"$\x{a2}", rx1208_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1208_eos, rx1208_tgt
+    set rx1208_off, 0
+    lt rx1208_pos, 2, rx1208_start
+    sub rx1208_off, rx1208_pos, 1
+    substr rx1208_tgt, rx1208_tgt, rx1208_off
+  rx1208_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1212_done
+    goto rxscan1212_scan
+  rxscan1212_loop:
+    ($P10) = rx1208_cur."from"()
+    inc $P10
+    set rx1208_pos, $P10
+    ge rx1208_pos, rx1208_eos, rxscan1212_done
+  rxscan1212_scan:
+    set_addr $I10, rxscan1212_loop
+    rx1208_cur."!mark_push"(0, rx1208_pos, $I10)
+  rxscan1212_done:
+.annotate "line", 520
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1208_fail
-    rx1203_cur."!mark_push"(0, rx1203_pos, $I10)
+    set_addr $I10, rxcap_1213_fail
+    rx1208_cur."!mark_push"(0, rx1208_pos, $I10)
   # rx literal  ","
-    add $I11, rx1203_pos, 1
-    gt $I11, rx1203_eos, rx1203_fail
-    sub $I11, rx1203_pos, rx1203_off
-    substr $S10, rx1203_tgt, $I11, 1
-    ne $S10, ",", rx1203_fail
-    add rx1203_pos, 1
-    set_addr $I10, rxcap_1208_fail
-    ($I12, $I11) = rx1203_cur."!mark_peek"($I10)
-    rx1203_cur."!cursor_pos"($I11)
-    ($P10) = rx1203_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1203_pos, "")
-    rx1203_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1208_pos, 1
+    gt $I11, rx1208_eos, rx1208_fail
+    sub $I11, rx1208_pos, rx1208_off
+    substr $S10, rx1208_tgt, $I11, 1
+    ne $S10, ",", rx1208_fail
+    add rx1208_pos, 1
+    set_addr $I10, rxcap_1213_fail
+    ($I12, $I11) = rx1208_cur."!mark_peek"($I10)
+    rx1208_cur."!cursor_pos"($I11)
+    ($P10) = rx1208_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1208_pos, "")
+    rx1208_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1208_done
-  rxcap_1208_fail:
-    goto rx1203_fail
-  rxcap_1208_done:
+    goto rxcap_1213_done
+  rxcap_1213_fail:
+    goto rx1208_fail
+  rxcap_1213_done:
   # rx subrule "O" subtype=capture negate=
-    rx1203_cur."!cursor_pos"(rx1203_pos)
-    $P10 = rx1203_cur."O"("%comma, :pasttype<list>")
-    unless $P10, rx1203_fail
-    rx1203_cur."!mark_push"(0, -1, 0, $P10)
+    rx1208_cur."!cursor_pos"(rx1208_pos)
+    $P10 = rx1208_cur."O"("%comma, :pasttype<list>")
+    unless $P10, rx1208_fail
+    rx1208_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1203_pos = $P10."pos"()
+    rx1208_pos = $P10."pos"()
   # rx pass
-    rx1203_cur."!cursor_pass"(rx1203_pos, "infix:sym<,>")
-    rx1203_cur."!cursor_debug"("PASS  ", "infix:sym<,>", " at pos=", rx1203_pos)
-    .return (rx1203_cur)
-  rx1203_fail:
-.annotate "line", 413
-    (rx1203_rep, rx1203_pos, $I10, $P10) = rx1203_cur."!mark_fail"(0)
-    lt rx1203_pos, -1, rx1203_done
-    eq rx1203_pos, -1, rx1203_fail
+    rx1208_cur."!cursor_pass"(rx1208_pos, "infix:sym<,>")
+    rx1208_cur."!cursor_debug"("PASS  ", "infix:sym<,>", " at pos=", rx1208_pos)
+    .return (rx1208_cur)
+  rx1208_fail:
+.annotate "line", 417
+    (rx1208_rep, rx1208_pos, $I10, $P10) = rx1208_cur."!mark_fail"(0)
+    lt rx1208_pos, -1, rx1208_done
+    eq rx1208_pos, -1, rx1208_fail
     jump $I10
-  rx1203_done:
-    rx1203_cur."!cursor_fail"()
-    rx1203_cur."!cursor_debug"("FAIL  ", "infix:sym<,>")
-    .return (rx1203_cur)
+  rx1208_done:
+    rx1208_cur."!cursor_fail"()
+    rx1208_cur."!cursor_debug"("FAIL  ", "infix:sym<,>")
+    .return (rx1208_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<,>"  :subid("312_1261064023.05912") :method
-.annotate "line", 413
-    $P1205 = self."!PREFIX__!subrule"("O", ",")
-    new $P1206, "ResizablePMCArray"
-    push $P1206, $P1205
-    .return ($P1206)
+.sub "!PREFIX__infix:sym<,>"  :subid("312_1267204702.05125") :method
+.annotate "line", 417
+    $P1210 = self."!PREFIX__!subrule"("O", ",")
+    new $P1211, "ResizablePMCArray"
+    push $P1211, $P1210
+    .return ($P1211)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<return>"  :subid("313_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1210_tgt
-    .local int rx1210_pos
-    .local int rx1210_off
-    .local int rx1210_eos
-    .local int rx1210_rep
-    .local pmc rx1210_cur
-    (rx1210_cur, rx1210_pos, rx1210_tgt) = self."!cursor_start"()
-    rx1210_cur."!cursor_debug"("START ", "prefix:sym<return>")
-    .lex unicode:"$\x{a2}", rx1210_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1210_eos, rx1210_tgt
-    set rx1210_off, 0
-    lt rx1210_pos, 2, rx1210_start
-    sub rx1210_off, rx1210_pos, 1
-    substr rx1210_tgt, rx1210_tgt, rx1210_off
-  rx1210_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1213_done
-    goto rxscan1213_scan
-  rxscan1213_loop:
-    ($P10) = rx1210_cur."from"()
-    inc $P10
-    set rx1210_pos, $P10
-    ge rx1210_pos, rx1210_eos, rxscan1213_done
-  rxscan1213_scan:
-    set_addr $I10, rxscan1213_loop
-    rx1210_cur."!mark_push"(0, rx1210_pos, $I10)
-  rxscan1213_done:
-.annotate "line", 518
+.sub "prefix:sym<return>"  :subid("313_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1215_tgt
+    .local int rx1215_pos
+    .local int rx1215_off
+    .local int rx1215_eos
+    .local int rx1215_rep
+    .local pmc rx1215_cur
+    (rx1215_cur, rx1215_pos, rx1215_tgt) = self."!cursor_start"()
+    rx1215_cur."!cursor_debug"("START ", "prefix:sym<return>")
+    .lex unicode:"$\x{a2}", rx1215_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1215_eos, rx1215_tgt
+    set rx1215_off, 0
+    lt rx1215_pos, 2, rx1215_start
+    sub rx1215_off, rx1215_pos, 1
+    substr rx1215_tgt, rx1215_tgt, rx1215_off
+  rx1215_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1218_done
+    goto rxscan1218_scan
+  rxscan1218_loop:
+    ($P10) = rx1215_cur."from"()
+    inc $P10
+    set rx1215_pos, $P10
+    ge rx1215_pos, rx1215_eos, rxscan1218_done
+  rxscan1218_scan:
+    set_addr $I10, rxscan1218_loop
+    rx1215_cur."!mark_push"(0, rx1215_pos, $I10)
+  rxscan1218_done:
+.annotate "line", 522
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1214_fail
-    rx1210_cur."!mark_push"(0, rx1210_pos, $I10)
+    set_addr $I10, rxcap_1219_fail
+    rx1215_cur."!mark_push"(0, rx1215_pos, $I10)
   # rx literal  "return"
-    add $I11, rx1210_pos, 6
-    gt $I11, rx1210_eos, rx1210_fail
-    sub $I11, rx1210_pos, rx1210_off
-    substr $S10, rx1210_tgt, $I11, 6
-    ne $S10, "return", rx1210_fail
-    add rx1210_pos, 6
-    set_addr $I10, rxcap_1214_fail
-    ($I12, $I11) = rx1210_cur."!mark_peek"($I10)
-    rx1210_cur."!cursor_pos"($I11)
-    ($P10) = rx1210_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1210_pos, "")
-    rx1210_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1215_pos, 6
+    gt $I11, rx1215_eos, rx1215_fail
+    sub $I11, rx1215_pos, rx1215_off
+    substr $S10, rx1215_tgt, $I11, 6
+    ne $S10, "return", rx1215_fail
+    add rx1215_pos, 6
+    set_addr $I10, rxcap_1219_fail
+    ($I12, $I11) = rx1215_cur."!mark_peek"($I10)
+    rx1215_cur."!cursor_pos"($I11)
+    ($P10) = rx1215_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1215_pos, "")
+    rx1215_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1214_done
-  rxcap_1214_fail:
-    goto rx1210_fail
-  rxcap_1214_done:
+    goto rxcap_1219_done
+  rxcap_1219_fail:
+    goto rx1215_fail
+  rxcap_1219_done:
   # rx charclass s
-    ge rx1210_pos, rx1210_eos, rx1210_fail
-    sub $I10, rx1210_pos, rx1210_off
-    is_cclass $I11, 32, rx1210_tgt, $I10
-    unless $I11, rx1210_fail
-    inc rx1210_pos
+    ge rx1215_pos, rx1215_eos, rx1215_fail
+    sub $I10, rx1215_pos, rx1215_off
+    is_cclass $I11, 32, rx1215_tgt, $I10
+    unless $I11, rx1215_fail
+    inc rx1215_pos
   # rx subrule "O" subtype=capture negate=
-    rx1210_cur."!cursor_pos"(rx1210_pos)
-    $P10 = rx1210_cur."O"("%list_prefix, :pasttype<return>")
-    unless $P10, rx1210_fail
-    rx1210_cur."!mark_push"(0, -1, 0, $P10)
+    rx1215_cur."!cursor_pos"(rx1215_pos)
+    $P10 = rx1215_cur."O"("%list_prefix, :pasttype<return>")
+    unless $P10, rx1215_fail
+    rx1215_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1210_pos = $P10."pos"()
+    rx1215_pos = $P10."pos"()
   # rx pass
-    rx1210_cur."!cursor_pass"(rx1210_pos, "prefix:sym<return>")
-    rx1210_cur."!cursor_debug"("PASS  ", "prefix:sym<return>", " at pos=", rx1210_pos)
-    .return (rx1210_cur)
-  rx1210_fail:
-.annotate "line", 413
-    (rx1210_rep, rx1210_pos, $I10, $P10) = rx1210_cur."!mark_fail"(0)
-    lt rx1210_pos, -1, rx1210_done
-    eq rx1210_pos, -1, rx1210_fail
+    rx1215_cur."!cursor_pass"(rx1215_pos, "prefix:sym<return>")
+    rx1215_cur."!cursor_debug"("PASS  ", "prefix:sym<return>", " at pos=", rx1215_pos)
+    .return (rx1215_cur)
+  rx1215_fail:
+.annotate "line", 417
+    (rx1215_rep, rx1215_pos, $I10, $P10) = rx1215_cur."!mark_fail"(0)
+    lt rx1215_pos, -1, rx1215_done
+    eq rx1215_pos, -1, rx1215_fail
     jump $I10
-  rx1210_done:
-    rx1210_cur."!cursor_fail"()
-    rx1210_cur."!cursor_debug"("FAIL  ", "prefix:sym<return>")
-    .return (rx1210_cur)
+  rx1215_done:
+    rx1215_cur."!cursor_fail"()
+    rx1215_cur."!cursor_debug"("FAIL  ", "prefix:sym<return>")
+    .return (rx1215_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<return>"  :subid("314_1261064023.05912") :method
-.annotate "line", 413
-    new $P1212, "ResizablePMCArray"
-    push $P1212, "return"
-    .return ($P1212)
+.sub "!PREFIX__prefix:sym<return>"  :subid("314_1267204702.05125") :method
+.annotate "line", 417
+    new $P1217, "ResizablePMCArray"
+    push $P1217, "return"
+    .return ($P1217)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<make>"  :subid("315_1261064023.05912") :method :outer("11_1261064023.05912")
-.annotate "line", 413
-    .local string rx1216_tgt
-    .local int rx1216_pos
-    .local int rx1216_off
-    .local int rx1216_eos
-    .local int rx1216_rep
-    .local pmc rx1216_cur
-    (rx1216_cur, rx1216_pos, rx1216_tgt) = self."!cursor_start"()
-    rx1216_cur."!cursor_debug"("START ", "prefix:sym<make>")
-    .lex unicode:"$\x{a2}", rx1216_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1216_eos, rx1216_tgt
-    set rx1216_off, 0
-    lt rx1216_pos, 2, rx1216_start
-    sub rx1216_off, rx1216_pos, 1
-    substr rx1216_tgt, rx1216_tgt, rx1216_off
-  rx1216_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1219_done
-    goto rxscan1219_scan
-  rxscan1219_loop:
-    ($P10) = rx1216_cur."from"()
-    inc $P10
-    set rx1216_pos, $P10
-    ge rx1216_pos, rx1216_eos, rxscan1219_done
-  rxscan1219_scan:
-    set_addr $I10, rxscan1219_loop
-    rx1216_cur."!mark_push"(0, rx1216_pos, $I10)
-  rxscan1219_done:
-.annotate "line", 519
+.sub "prefix:sym<make>"  :subid("315_1267204702.05125") :method :outer("11_1267204702.05125")
+.annotate "line", 417
+    .local string rx1221_tgt
+    .local int rx1221_pos
+    .local int rx1221_off
+    .local int rx1221_eos
+    .local int rx1221_rep
+    .local pmc rx1221_cur
+    (rx1221_cur, rx1221_pos, rx1221_tgt) = self."!cursor_start"()
+    rx1221_cur."!cursor_debug"("START ", "prefix:sym<make>")
+    .lex unicode:"$\x{a2}", rx1221_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1221_eos, rx1221_tgt
+    set rx1221_off, 0
+    lt rx1221_pos, 2, rx1221_start
+    sub rx1221_off, rx1221_pos, 1
+    substr rx1221_tgt, rx1221_tgt, rx1221_off
+  rx1221_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1224_done
+    goto rxscan1224_scan
+  rxscan1224_loop:
+    ($P10) = rx1221_cur."from"()
+    inc $P10
+    set rx1221_pos, $P10
+    ge rx1221_pos, rx1221_eos, rxscan1224_done
+  rxscan1224_scan:
+    set_addr $I10, rxscan1224_loop
+    rx1221_cur."!mark_push"(0, rx1221_pos, $I10)
+  rxscan1224_done:
+.annotate "line", 523
   # rx subcapture "sym"
-    set_addr $I10, rxcap_1220_fail
-    rx1216_cur."!mark_push"(0, rx1216_pos, $I10)
+    set_addr $I10, rxcap_1225_fail
+    rx1221_cur."!mark_push"(0, rx1221_pos, $I10)
   # rx literal  "make"
-    add $I11, rx1216_pos, 4
-    gt $I11, rx1216_eos, rx1216_fail
-    sub $I11, rx1216_pos, rx1216_off
-    substr $S10, rx1216_tgt, $I11, 4
-    ne $S10, "make", rx1216_fail
-    add rx1216_pos, 4
-    set_addr $I10, rxcap_1220_fail
-    ($I12, $I11) = rx1216_cur."!mark_peek"($I10)
-    rx1216_cur."!cursor_pos"($I11)
-    ($P10) = rx1216_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1216_pos, "")
-    rx1216_cur."!mark_push"(0, -1, 0, $P10)
+    add $I11, rx1221_pos, 4
+    gt $I11, rx1221_eos, rx1221_fail
+    sub $I11, rx1221_pos, rx1221_off
+    substr $S10, rx1221_tgt, $I11, 4
+    ne $S10, "make", rx1221_fail
+    add rx1221_pos, 4
+    set_addr $I10, rxcap_1225_fail
+    ($I12, $I11) = rx1221_cur."!mark_peek"($I10)
+    rx1221_cur."!cursor_pos"($I11)
+    ($P10) = rx1221_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1221_pos, "")
+    rx1221_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_1220_done
-  rxcap_1220_fail:
-    goto rx1216_fail
-  rxcap_1220_done:
+    goto rxcap_1225_done
+  rxcap_1225_fail:
+    goto rx1221_fail
+  rxcap_1225_done:
   # rx charclass s
-    ge rx1216_pos, rx1216_eos, rx1216_fail
-    sub $I10, rx1216_pos, rx1216_off
-    is_cclass $I11, 32, rx1216_tgt, $I10
-    unless $I11, rx1216_fail
-    inc rx1216_pos
+    ge rx1221_pos, rx1221_eos, rx1221_fail
+    sub $I10, rx1221_pos, rx1221_off
+    is_cclass $I11, 32, rx1221_tgt, $I10
+    unless $I11, rx1221_fail
+    inc rx1221_pos
   # rx subrule "O" subtype=capture negate=
-    rx1216_cur."!cursor_pos"(rx1216_pos)
-    $P10 = rx1216_cur."O"("%list_prefix")
-    unless $P10, rx1216_fail
-    rx1216_cur."!mark_push"(0, -1, 0, $P10)
+    rx1221_cur."!cursor_pos"(rx1221_pos)
+    $P10 = rx1221_cur."O"("%list_prefix")
+    unless $P10, rx1221_fail
+    rx1221_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("O")
-    rx1216_pos = $P10."pos"()
+    rx1221_pos = $P10."pos"()
   # rx pass
-    rx1216_cur."!cursor_pass"(rx1216_pos, "prefix:sym<make>")
-    rx1216_cur."!cursor_debug"("PASS  ", "prefix:sym<make>", " at pos=", rx1216_pos)
-    .return (rx1216_cur)
-  rx1216_fail:
-.annotate "line", 413
-    (rx1216_rep, rx1216_pos, $I10, $P10) = rx1216_cur."!mark_fail"(0)
-    lt rx1216_pos, -1, rx1216_done
-    eq rx1216_pos, -1, rx1216_fail
+    rx1221_cur."!cursor_pass"(rx1221_pos, "prefix:sym<make>")
+    rx1221_cur."!cursor_debug"("PASS  ", "prefix:sym<make>", " at pos=", rx1221_pos)
+    .return (rx1221_cur)
+  rx1221_fail:
+.annotate "line", 417
+    (rx1221_rep, rx1221_pos, $I10, $P10) = rx1221_cur."!mark_fail"(0)
+    lt rx1221_pos, -1, rx1221_done
+    eq rx1221_pos, -1, rx1221_fail
     jump $I10
-  rx1216_done:
-    rx1216_cur."!cursor_fail"()
-    rx1216_cur."!cursor_debug"("FAIL  ", "prefix:sym<make>")
-    .return (rx1216_cur)
+  rx1221_done:
+    rx1221_cur."!cursor_fail"()
+    rx1221_cur."!cursor_debug"("FAIL  ", "prefix:sym<make>")
+    .return (rx1221_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<make>"  :subid("316_1261064023.05912") :method
-.annotate "line", 413
-    new $P1218, "ResizablePMCArray"
-    push $P1218, "make"
-    .return ($P1218)
+.sub "!PREFIX__prefix:sym<make>"  :subid("316_1267204702.05125") :method
+.annotate "line", 417
+    new $P1223, "ResizablePMCArray"
+    push $P1223, "make"
+    .return ($P1223)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "smartmatch"  :subid("317_1261064023.05912") :method :outer("11_1261064023.05912")
-    .param pmc param_1224
-.annotate "line", 521
-    new $P1223, 'ExceptionHandler'
-    set_addr $P1223, control_1222
-    $P1223."handle_types"(58)
-    push_eh $P1223
+.sub "smartmatch"  :subid("317_1267204702.05125") :method :outer("11_1267204702.05125")
+    .param pmc param_1229
+.annotate "line", 525
+    new $P1228, 'ExceptionHandler'
+    set_addr $P1228, control_1227
+    $P1228."handle_types"(58)
+    push_eh $P1228
     .lex "self", self
-    .lex "$/", param_1224
-.annotate "line", 523
-    new $P1225, "Undef"
-    .lex "$t", $P1225
-    find_lex $P1226, "$/"
-    unless_null $P1226, vivify_343
-    new $P1226, "ResizablePMCArray"
+    .lex "$/", param_1229
+.annotate "line", 527
+    new $P1230, "Undef"
+    .lex "$t", $P1230
+    find_lex $P1231, "$/"
+    unless_null $P1231, vivify_343
+    $P1231 = root_new ['parrot';'ResizablePMCArray']
   vivify_343:
-    set $P1227, $P1226[0]
-    unless_null $P1227, vivify_344
-    new $P1227, "Undef"
+    set $P1232, $P1231[0]
+    unless_null $P1232, vivify_344
+    new $P1232, "Undef"
   vivify_344:
-    store_lex "$t", $P1227
-    find_lex $P1228, "$/"
-    unless_null $P1228, vivify_345
-    new $P1228, "ResizablePMCArray"
+    store_lex "$t", $P1232
+    find_lex $P1233, "$/"
+    unless_null $P1233, vivify_345
+    $P1233 = root_new ['parrot';'ResizablePMCArray']
   vivify_345:
-    set $P1229, $P1228[1]
-    unless_null $P1229, vivify_346
-    new $P1229, "Undef"
+    set $P1234, $P1233[1]
+    unless_null $P1234, vivify_346
+    new $P1234, "Undef"
   vivify_346:
-    find_lex $P1230, "$/"
-    unless_null $P1230, vivify_347
-    new $P1230, "ResizablePMCArray"
-    store_lex "$/", $P1230
+    find_lex $P1235, "$/"
+    unless_null $P1235, vivify_347
+    $P1235 = root_new ['parrot';'ResizablePMCArray']
+    store_lex "$/", $P1235
   vivify_347:
-    set $P1230[0], $P1229
-    find_lex $P1231, "$t"
-    find_lex $P1232, "$/"
-    unless_null $P1232, vivify_348
-    new $P1232, "ResizablePMCArray"
-    store_lex "$/", $P1232
+    set $P1235[0], $P1234
+    find_lex $P1236, "$t"
+    find_lex $P1237, "$/"
+    unless_null $P1237, vivify_348
+    $P1237 = root_new ['parrot';'ResizablePMCArray']
+    store_lex "$/", $P1237
   vivify_348:
-    set $P1232[1], $P1231
-.annotate "line", 521
-    .return ($P1231)
-  control_1222:
+    set $P1237[1], $P1236
+.annotate "line", 525
+    .return ($P1236)
+  control_1227:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1233, exception, "payload"
-    .return ($P1233)
+    getattribute $P1238, exception, "payload"
+    .return ($P1238)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1234"  :subid("318_1261064023.05912") :outer("11_1261064023.05912")
-.annotate "line", 527
-    .const 'Sub' $P1268 = "329_1261064023.05912" 
-    capture_lex $P1268
-    .const 'Sub' $P1255 = "326_1261064023.05912" 
+.sub "_block1239"  :subid("318_1267204702.05125") :outer("11_1267204702.05125")
+.annotate "line", 531
+    .const 'Sub' $P1273 = "329_1267204702.05125" 
+    capture_lex $P1273
+    .const 'Sub' $P1260 = "326_1267204702.05125" 
+    capture_lex $P1260
+    .const 'Sub' $P1255 = "324_1267204702.05125" 
     capture_lex $P1255
-    .const 'Sub' $P1250 = "324_1261064023.05912" 
+    .const 'Sub' $P1250 = "322_1267204702.05125" 
     capture_lex $P1250
-    .const 'Sub' $P1245 = "322_1261064023.05912" 
-    capture_lex $P1245
-    .const 'Sub' $P1236 = "319_1261064023.05912" 
-    capture_lex $P1236
-    .const 'Sub' $P1268 = "329_1261064023.05912" 
-    capture_lex $P1268
-    .return ($P1268)
+    .const 'Sub' $P1241 = "319_1267204702.05125" 
+    capture_lex $P1241
+    .const 'Sub' $P1273 = "329_1267204702.05125" 
+    capture_lex $P1273
+    .return ($P1273)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<:my>"  :subid("319_1261064023.05912") :method :outer("318_1261064023.05912")
-.annotate "line", 527
-    .const 'Sub' $P1242 = "321_1261064023.05912" 
-    capture_lex $P1242
-    .local string rx1237_tgt
-    .local int rx1237_pos
-    .local int rx1237_off
-    .local int rx1237_eos
-    .local int rx1237_rep
-    .local pmc rx1237_cur
-    (rx1237_cur, rx1237_pos, rx1237_tgt) = self."!cursor_start"()
-    rx1237_cur."!cursor_debug"("START ", "metachar:sym<:my>")
-    .lex unicode:"$\x{a2}", rx1237_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1237_eos, rx1237_tgt
-    set rx1237_off, 0
-    lt rx1237_pos, 2, rx1237_start
-    sub rx1237_off, rx1237_pos, 1
-    substr rx1237_tgt, rx1237_tgt, rx1237_off
-  rx1237_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1240_done
-    goto rxscan1240_scan
-  rxscan1240_loop:
-    ($P10) = rx1237_cur."from"()
-    inc $P10
-    set rx1237_pos, $P10
-    ge rx1237_pos, rx1237_eos, rxscan1240_done
-  rxscan1240_scan:
-    set_addr $I10, rxscan1240_loop
-    rx1237_cur."!mark_push"(0, rx1237_pos, $I10)
-  rxscan1240_done:
-.annotate "line", 529
+.sub "metachar:sym<:my>"  :subid("319_1267204702.05125") :method :outer("318_1267204702.05125")
+.annotate "line", 531
+    .const 'Sub' $P1247 = "321_1267204702.05125" 
+    capture_lex $P1247
+    .local string rx1242_tgt
+    .local int rx1242_pos
+    .local int rx1242_off
+    .local int rx1242_eos
+    .local int rx1242_rep
+    .local pmc rx1242_cur
+    (rx1242_cur, rx1242_pos, rx1242_tgt) = self."!cursor_start"()
+    rx1242_cur."!cursor_debug"("START ", "metachar:sym<:my>")
+    .lex unicode:"$\x{a2}", rx1242_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1242_eos, rx1242_tgt
+    set rx1242_off, 0
+    lt rx1242_pos, 2, rx1242_start
+    sub rx1242_off, rx1242_pos, 1
+    substr rx1242_tgt, rx1242_tgt, rx1242_off
+  rx1242_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1245_done
+    goto rxscan1245_scan
+  rxscan1245_loop:
+    ($P10) = rx1242_cur."from"()
+    inc $P10
+    set rx1242_pos, $P10
+    ge rx1242_pos, rx1242_eos, rxscan1245_done
+  rxscan1245_scan:
+    set_addr $I10, rxscan1245_loop
+    rx1242_cur."!mark_push"(0, rx1242_pos, $I10)
+  rxscan1245_done:
+.annotate "line", 533
   # rx literal  ":"
-    add $I11, rx1237_pos, 1
-    gt $I11, rx1237_eos, rx1237_fail
-    sub $I11, rx1237_pos, rx1237_off
-    substr $S10, rx1237_tgt, $I11, 1
-    ne $S10, ":", rx1237_fail
-    add rx1237_pos, 1
+    add $I11, rx1242_pos, 1
+    gt $I11, rx1242_eos, rx1242_fail
+    sub $I11, rx1242_pos, rx1242_off
+    substr $S10, rx1242_tgt, $I11, 1
+    ne $S10, ":", rx1242_fail
+    add rx1242_pos, 1
   # rx subrule "before" subtype=zerowidth negate=
-    rx1237_cur."!cursor_pos"(rx1237_pos)
-    .const 'Sub' $P1242 = "321_1261064023.05912" 
-    capture_lex $P1242
-    $P10 = rx1237_cur."before"($P1242)
-    unless $P10, rx1237_fail
+    rx1242_cur."!cursor_pos"(rx1242_pos)
+    .const 'Sub' $P1247 = "321_1267204702.05125" 
+    capture_lex $P1247
+    $P10 = rx1242_cur."before"($P1247)
+    unless $P10, rx1242_fail
   # rx subrule "LANG" subtype=capture negate=
-    rx1237_cur."!cursor_pos"(rx1237_pos)
-    $P10 = rx1237_cur."LANG"("MAIN", "statement")
-    unless $P10, rx1237_fail
-    rx1237_cur."!mark_push"(0, -1, 0, $P10)
+    rx1242_cur."!cursor_pos"(rx1242_pos)
+    $P10 = rx1242_cur."LANG"("MAIN", "statement")
+    unless $P10, rx1242_fail
+    rx1242_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("statement")
-    rx1237_pos = $P10."pos"()
+    rx1242_pos = $P10."pos"()
   # rx subrule "ws" subtype=method negate=
-    rx1237_cur."!cursor_pos"(rx1237_pos)
-    $P10 = rx1237_cur."ws"()
-    unless $P10, rx1237_fail
-    rx1237_pos = $P10."pos"()
+    rx1242_cur."!cursor_pos"(rx1242_pos)
+    $P10 = rx1242_cur."ws"()
+    unless $P10, rx1242_fail
+    rx1242_pos = $P10."pos"()
   # rx literal  ";"
-    add $I11, rx1237_pos, 1
-    gt $I11, rx1237_eos, rx1237_fail
-    sub $I11, rx1237_pos, rx1237_off
-    substr $S10, rx1237_tgt, $I11, 1
-    ne $S10, ";", rx1237_fail
-    add rx1237_pos, 1
-.annotate "line", 528
-  # rx pass
-    rx1237_cur."!cursor_pass"(rx1237_pos, "metachar:sym<:my>")
-    rx1237_cur."!cursor_debug"("PASS  ", "metachar:sym<:my>", " at pos=", rx1237_pos)
-    .return (rx1237_cur)
-  rx1237_fail:
-.annotate "line", 527
-    (rx1237_rep, rx1237_pos, $I10, $P10) = rx1237_cur."!mark_fail"(0)
-    lt rx1237_pos, -1, rx1237_done
-    eq rx1237_pos, -1, rx1237_fail
-    jump $I10
-  rx1237_done:
-    rx1237_cur."!cursor_fail"()
-    rx1237_cur."!cursor_debug"("FAIL  ", "metachar:sym<:my>")
-    .return (rx1237_cur)
+    add $I11, rx1242_pos, 1
+    gt $I11, rx1242_eos, rx1242_fail
+    sub $I11, rx1242_pos, rx1242_off
+    substr $S10, rx1242_tgt, $I11, 1
+    ne $S10, ";", rx1242_fail
+    add rx1242_pos, 1
+.annotate "line", 532
+  # rx pass
+    rx1242_cur."!cursor_pass"(rx1242_pos, "metachar:sym<:my>")
+    rx1242_cur."!cursor_debug"("PASS  ", "metachar:sym<:my>", " at pos=", rx1242_pos)
+    .return (rx1242_cur)
+  rx1242_fail:
+.annotate "line", 531
+    (rx1242_rep, rx1242_pos, $I10, $P10) = rx1242_cur."!mark_fail"(0)
+    lt rx1242_pos, -1, rx1242_done
+    eq rx1242_pos, -1, rx1242_fail
+    jump $I10
+  rx1242_done:
+    rx1242_cur."!cursor_fail"()
+    rx1242_cur."!cursor_debug"("FAIL  ", "metachar:sym<:my>")
+    .return (rx1242_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<:my>"  :subid("320_1261064023.05912") :method
-.annotate "line", 527
-    new $P1239, "ResizablePMCArray"
-    push $P1239, ":"
-    .return ($P1239)
-.end
-
-
-.namespace ["NQP";"Regex"]
-.sub "_block1241"  :anon :subid("321_1261064023.05912") :method :outer("319_1261064023.05912")
-.annotate "line", 529
-    .local string rx1243_tgt
-    .local int rx1243_pos
-    .local int rx1243_off
-    .local int rx1243_eos
-    .local int rx1243_rep
-    .local pmc rx1243_cur
-    (rx1243_cur, rx1243_pos, rx1243_tgt) = self."!cursor_start"()
-    rx1243_cur."!cursor_debug"("START ", "")
-    .lex unicode:"$\x{a2}", rx1243_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1243_eos, rx1243_tgt
-    set rx1243_off, 0
-    lt rx1243_pos, 2, rx1243_start
-    sub rx1243_off, rx1243_pos, 1
-    substr rx1243_tgt, rx1243_tgt, rx1243_off
-  rx1243_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1244_done
-    goto rxscan1244_scan
-  rxscan1244_loop:
-    ($P10) = rx1243_cur."from"()
-    inc $P10
-    set rx1243_pos, $P10
-    ge rx1243_pos, rx1243_eos, rxscan1244_done
-  rxscan1244_scan:
-    set_addr $I10, rxscan1244_loop
-    rx1243_cur."!mark_push"(0, rx1243_pos, $I10)
-  rxscan1244_done:
-  # rx literal  "my"
-    add $I11, rx1243_pos, 2
-    gt $I11, rx1243_eos, rx1243_fail
-    sub $I11, rx1243_pos, rx1243_off
-    substr $S10, rx1243_tgt, $I11, 2
-    ne $S10, "my", rx1243_fail
-    add rx1243_pos, 2
-  # rx pass
-    rx1243_cur."!cursor_pass"(rx1243_pos, "")
-    rx1243_cur."!cursor_debug"("PASS  ", "", " at pos=", rx1243_pos)
-    .return (rx1243_cur)
-  rx1243_fail:
-    (rx1243_rep, rx1243_pos, $I10, $P10) = rx1243_cur."!mark_fail"(0)
-    lt rx1243_pos, -1, rx1243_done
-    eq rx1243_pos, -1, rx1243_fail
-    jump $I10
-  rx1243_done:
-    rx1243_cur."!cursor_fail"()
-    rx1243_cur."!cursor_debug"("FAIL  ", "")
-    .return (rx1243_cur)
-    .return ()
+.sub "!PREFIX__metachar:sym<:my>"  :subid("320_1267204702.05125") :method
+.annotate "line", 531
+    new $P1244, "ResizablePMCArray"
+    push $P1244, ":"
+    .return ($P1244)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<{ }>"  :subid("322_1261064023.05912") :method :outer("318_1261064023.05912")
-.annotate "line", 527
-    .local string rx1246_tgt
-    .local int rx1246_pos
-    .local int rx1246_off
-    .local int rx1246_eos
-    .local int rx1246_rep
-    .local pmc rx1246_cur
-    (rx1246_cur, rx1246_pos, rx1246_tgt) = self."!cursor_start"()
-    rx1246_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
-    .lex unicode:"$\x{a2}", rx1246_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1246_eos, rx1246_tgt
-    set rx1246_off, 0
-    lt rx1246_pos, 2, rx1246_start
-    sub rx1246_off, rx1246_pos, 1
-    substr rx1246_tgt, rx1246_tgt, rx1246_off
-  rx1246_start:
+.sub "_block1246"  :anon :subid("321_1267204702.05125") :method :outer("319_1267204702.05125")
+.annotate "line", 533
+    .local string rx1248_tgt
+    .local int rx1248_pos
+    .local int rx1248_off
+    .local int rx1248_eos
+    .local int rx1248_rep
+    .local pmc rx1248_cur
+    (rx1248_cur, rx1248_pos, rx1248_tgt) = self."!cursor_start"()
+    rx1248_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx1248_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1248_eos, rx1248_tgt
+    set rx1248_off, 0
+    lt rx1248_pos, 2, rx1248_start
+    sub rx1248_off, rx1248_pos, 1
+    substr rx1248_tgt, rx1248_tgt, rx1248_off
+  rx1248_start:
     $I10 = self.'from'()
     ne $I10, -1, rxscan1249_done
     goto rxscan1249_scan
   rxscan1249_loop:
-    ($P10) = rx1246_cur."from"()
+    ($P10) = rx1248_cur."from"()
     inc $P10
-    set rx1246_pos, $P10
-    ge rx1246_pos, rx1246_eos, rxscan1249_done
+    set rx1248_pos, $P10
+    ge rx1248_pos, rx1248_eos, rxscan1249_done
   rxscan1249_scan:
     set_addr $I10, rxscan1249_loop
-    rx1246_cur."!mark_push"(0, rx1246_pos, $I10)
+    rx1248_cur."!mark_push"(0, rx1248_pos, $I10)
   rxscan1249_done:
-.annotate "line", 533
-  # rx enumcharlist negate=0 zerowidth
-    ge rx1246_pos, rx1246_eos, rx1246_fail
-    sub $I10, rx1246_pos, rx1246_off
-    substr $S10, rx1246_tgt, $I10, 1
-    index $I11, "{", $S10
-    lt $I11, 0, rx1246_fail
-  # rx subrule "codeblock" subtype=capture negate=
-    rx1246_cur."!cursor_pos"(rx1246_pos)
-    $P10 = rx1246_cur."codeblock"()
-    unless $P10, rx1246_fail
-    rx1246_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("codeblock")
-    rx1246_pos = $P10."pos"()
-.annotate "line", 532
-  # rx pass
-    rx1246_cur."!cursor_pass"(rx1246_pos, "metachar:sym<{ }>")
-    rx1246_cur."!cursor_debug"("PASS  ", "metachar:sym<{ }>", " at pos=", rx1246_pos)
-    .return (rx1246_cur)
-  rx1246_fail:
-.annotate "line", 527
-    (rx1246_rep, rx1246_pos, $I10, $P10) = rx1246_cur."!mark_fail"(0)
-    lt rx1246_pos, -1, rx1246_done
-    eq rx1246_pos, -1, rx1246_fail
-    jump $I10
-  rx1246_done:
-    rx1246_cur."!cursor_fail"()
-    rx1246_cur."!cursor_debug"("FAIL  ", "metachar:sym<{ }>")
-    .return (rx1246_cur)
+  # rx literal  "my"
+    add $I11, rx1248_pos, 2
+    gt $I11, rx1248_eos, rx1248_fail
+    sub $I11, rx1248_pos, rx1248_off
+    substr $S10, rx1248_tgt, $I11, 2
+    ne $S10, "my", rx1248_fail
+    add rx1248_pos, 2
+  # rx pass
+    rx1248_cur."!cursor_pass"(rx1248_pos, "")
+    rx1248_cur."!cursor_debug"("PASS  ", "", " at pos=", rx1248_pos)
+    .return (rx1248_cur)
+  rx1248_fail:
+    (rx1248_rep, rx1248_pos, $I10, $P10) = rx1248_cur."!mark_fail"(0)
+    lt rx1248_pos, -1, rx1248_done
+    eq rx1248_pos, -1, rx1248_fail
+    jump $I10
+  rx1248_done:
+    rx1248_cur."!cursor_fail"()
+    rx1248_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx1248_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<{ }>"  :subid("323_1261064023.05912") :method
-.annotate "line", 527
-    new $P1248, "ResizablePMCArray"
-    push $P1248, "{"
-    .return ($P1248)
-.end
-
-
-.namespace ["NQP";"Regex"]
-.sub "assertion:sym<{ }>"  :subid("324_1261064023.05912") :method :outer("318_1261064023.05912")
-.annotate "line", 527
+.sub "metachar:sym<{ }>"  :subid("322_1267204702.05125") :method :outer("318_1267204702.05125")
+.annotate "line", 531
     .local string rx1251_tgt
     .local int rx1251_pos
     .local int rx1251_off
@@ -15344,7 +15313,7 @@
     .local int rx1251_rep
     .local pmc rx1251_cur
     (rx1251_cur, rx1251_pos, rx1251_tgt) = self."!cursor_start"()
-    rx1251_cur."!cursor_debug"("START ", "assertion:sym<{ }>")
+    rx1251_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
     .lex unicode:"$\x{a2}", rx1251_cur
     .local pmc match
     .lex "$/", match
@@ -15382,26 +15351,26 @@
     rx1251_pos = $P10."pos"()
 .annotate "line", 536
   # rx pass
-    rx1251_cur."!cursor_pass"(rx1251_pos, "assertion:sym<{ }>")
-    rx1251_cur."!cursor_debug"("PASS  ", "assertion:sym<{ }>", " at pos=", rx1251_pos)
+    rx1251_cur."!cursor_pass"(rx1251_pos, "metachar:sym<{ }>")
+    rx1251_cur."!cursor_debug"("PASS  ", "metachar:sym<{ }>", " at pos=", rx1251_pos)
     .return (rx1251_cur)
   rx1251_fail:
-.annotate "line", 527
+.annotate "line", 531
     (rx1251_rep, rx1251_pos, $I10, $P10) = rx1251_cur."!mark_fail"(0)
     lt rx1251_pos, -1, rx1251_done
     eq rx1251_pos, -1, rx1251_fail
     jump $I10
   rx1251_done:
     rx1251_cur."!cursor_fail"()
-    rx1251_cur."!cursor_debug"("FAIL  ", "assertion:sym<{ }>")
+    rx1251_cur."!cursor_debug"("FAIL  ", "metachar:sym<{ }>")
     .return (rx1251_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<{ }>"  :subid("325_1261064023.05912") :method
-.annotate "line", 527
+.sub "!PREFIX__metachar:sym<{ }>"  :subid("323_1267204702.05125") :method
+.annotate "line", 531
     new $P1253, "ResizablePMCArray"
     push $P1253, "{"
     .return ($P1253)
@@ -15409,10 +15378,8 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<name>"  :subid("326_1261064023.05912") :method :outer("318_1261064023.05912")
-.annotate "line", 527
-    .const 'Sub' $P1264 = "328_1261064023.05912" 
-    capture_lex $P1264
+.sub "assertion:sym<{ }>"  :subid("324_1267204702.05125") :method :outer("318_1267204702.05125")
+.annotate "line", 531
     .local string rx1256_tgt
     .local int rx1256_pos
     .local int rx1256_off
@@ -15420,8 +15387,7 @@
     .local int rx1256_rep
     .local pmc rx1256_cur
     (rx1256_cur, rx1256_pos, rx1256_tgt) = self."!cursor_start"()
-    rx1256_cur."!cursor_debug"("START ", "assertion:sym<name>")
-    rx1256_cur."!cursor_caparray"("arglist", "nibbler", "assertion")
+    rx1256_cur."!cursor_debug"("START ", "assertion:sym<{ }>")
     .lex unicode:"$\x{a2}", rx1256_cur
     .local pmc match
     .lex "$/", match
@@ -15444,575 +15410,652 @@
     rx1256_cur."!mark_push"(0, rx1256_pos, $I10)
   rxscan1259_done:
 .annotate "line", 541
+  # rx enumcharlist negate=0 zerowidth
+    ge rx1256_pos, rx1256_eos, rx1256_fail
+    sub $I10, rx1256_pos, rx1256_off
+    substr $S10, rx1256_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx1256_fail
+  # rx subrule "codeblock" subtype=capture negate=
+    rx1256_cur."!cursor_pos"(rx1256_pos)
+    $P10 = rx1256_cur."codeblock"()
+    unless $P10, rx1256_fail
+    rx1256_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("codeblock")
+    rx1256_pos = $P10."pos"()
+.annotate "line", 540
+  # rx pass
+    rx1256_cur."!cursor_pass"(rx1256_pos, "assertion:sym<{ }>")
+    rx1256_cur."!cursor_debug"("PASS  ", "assertion:sym<{ }>", " at pos=", rx1256_pos)
+    .return (rx1256_cur)
+  rx1256_fail:
+.annotate "line", 531
+    (rx1256_rep, rx1256_pos, $I10, $P10) = rx1256_cur."!mark_fail"(0)
+    lt rx1256_pos, -1, rx1256_done
+    eq rx1256_pos, -1, rx1256_fail
+    jump $I10
+  rx1256_done:
+    rx1256_cur."!cursor_fail"()
+    rx1256_cur."!cursor_debug"("FAIL  ", "assertion:sym<{ }>")
+    .return (rx1256_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__assertion:sym<{ }>"  :subid("325_1267204702.05125") :method
+.annotate "line", 531
+    new $P1258, "ResizablePMCArray"
+    push $P1258, "{"
+    .return ($P1258)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "assertion:sym<name>"  :subid("326_1267204702.05125") :method :outer("318_1267204702.05125")
+.annotate "line", 531
+    .const 'Sub' $P1269 = "328_1267204702.05125" 
+    capture_lex $P1269
+    .local string rx1261_tgt
+    .local int rx1261_pos
+    .local int rx1261_off
+    .local int rx1261_eos
+    .local int rx1261_rep
+    .local pmc rx1261_cur
+    (rx1261_cur, rx1261_pos, rx1261_tgt) = self."!cursor_start"()
+    rx1261_cur."!cursor_debug"("START ", "assertion:sym<name>")
+    rx1261_cur."!cursor_caparray"("assertion", "nibbler", "arglist")
+    .lex unicode:"$\x{a2}", rx1261_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1261_eos, rx1261_tgt
+    set rx1261_off, 0
+    lt rx1261_pos, 2, rx1261_start
+    sub rx1261_off, rx1261_pos, 1
+    substr rx1261_tgt, rx1261_tgt, rx1261_off
+  rx1261_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1264_done
+    goto rxscan1264_scan
+  rxscan1264_loop:
+    ($P10) = rx1261_cur."from"()
+    inc $P10
+    set rx1261_pos, $P10
+    ge rx1261_pos, rx1261_eos, rxscan1264_done
+  rxscan1264_scan:
+    set_addr $I10, rxscan1264_loop
+    rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
+  rxscan1264_done:
+.annotate "line", 545
   # rx subcapture "longname"
-    set_addr $I10, rxcap_1260_fail
-    rx1256_cur."!mark_push"(0, rx1256_pos, $I10)
+    set_addr $I10, rxcap_1265_fail
+    rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
   # rx charclass_q w r 1..-1
-    sub $I10, rx1256_pos, rx1256_off
-    find_not_cclass $I11, 8192, rx1256_tgt, $I10, rx1256_eos
+    sub $I10, rx1261_pos, rx1261_off
+    find_not_cclass $I11, 8192, rx1261_tgt, $I10, rx1261_eos
     add $I12, $I10, 1
-    lt $I11, $I12, rx1256_fail
-    add rx1256_pos, rx1256_off, $I11
-    set_addr $I10, rxcap_1260_fail
-    ($I12, $I11) = rx1256_cur."!mark_peek"($I10)
-    rx1256_cur."!cursor_pos"($I11)
-    ($P10) = rx1256_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx1256_pos, "")
-    rx1256_cur."!mark_push"(0, -1, 0, $P10)
+    lt $I11, $I12, rx1261_fail
+    add rx1261_pos, rx1261_off, $I11
+    set_addr $I10, rxcap_1265_fail
+    ($I12, $I11) = rx1261_cur."!mark_peek"($I10)
+    rx1261_cur."!cursor_pos"($I11)
+    ($P10) = rx1261_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1261_pos, "")
+    rx1261_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("longname")
-    goto rxcap_1260_done
-  rxcap_1260_fail:
-    goto rx1256_fail
-  rxcap_1260_done:
-.annotate "line", 548
-  # rx rxquantr1261 ** 0..1
-    set_addr $I1267, rxquantr1261_done
-    rx1256_cur."!mark_push"(0, rx1256_pos, $I1267)
-  rxquantr1261_loop:
-  alt1262_0:
-.annotate "line", 542
-    set_addr $I10, alt1262_1
-    rx1256_cur."!mark_push"(0, rx1256_pos, $I10)
-.annotate "line", 543
+    goto rxcap_1265_done
+  rxcap_1265_fail:
+    goto rx1261_fail
+  rxcap_1265_done:
+.annotate "line", 552
+  # rx rxquantr1266 ** 0..1
+    set_addr $I1272, rxquantr1266_done
+    rx1261_cur."!mark_push"(0, rx1261_pos, $I1272)
+  rxquantr1266_loop:
+  alt1267_0:
+.annotate "line", 546
+    set_addr $I10, alt1267_1
+    rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
+.annotate "line", 547
   # rx subrule "before" subtype=zerowidth negate=
-    rx1256_cur."!cursor_pos"(rx1256_pos)
-    .const 'Sub' $P1264 = "328_1261064023.05912" 
-    capture_lex $P1264
-    $P10 = rx1256_cur."before"($P1264)
-    unless $P10, rx1256_fail
-    goto alt1262_end
-  alt1262_1:
-    set_addr $I10, alt1262_2
-    rx1256_cur."!mark_push"(0, rx1256_pos, $I10)
-.annotate "line", 544
+    rx1261_cur."!cursor_pos"(rx1261_pos)
+    .const 'Sub' $P1269 = "328_1267204702.05125" 
+    capture_lex $P1269
+    $P10 = rx1261_cur."before"($P1269)
+    unless $P10, rx1261_fail
+    goto alt1267_end
+  alt1267_1:
+    set_addr $I10, alt1267_2
+    rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
+.annotate "line", 548
   # rx literal  "="
-    add $I11, rx1256_pos, 1
-    gt $I11, rx1256_eos, rx1256_fail
-    sub $I11, rx1256_pos, rx1256_off
-    substr $S10, rx1256_tgt, $I11, 1
-    ne $S10, "=", rx1256_fail
-    add rx1256_pos, 1
+    add $I11, rx1261_pos, 1
+    gt $I11, rx1261_eos, rx1261_fail
+    sub $I11, rx1261_pos, rx1261_off
+    substr $S10, rx1261_tgt, $I11, 1
+    ne $S10, "=", rx1261_fail
+    add rx1261_pos, 1
   # rx subrule "assertion" subtype=capture negate=
-    rx1256_cur."!cursor_pos"(rx1256_pos)
-    $P10 = rx1256_cur."assertion"()
-    unless $P10, rx1256_fail
-    rx1256_cur."!mark_push"(0, -1, 0, $P10)
+    rx1261_cur."!cursor_pos"(rx1261_pos)
+    $P10 = rx1261_cur."assertion"()
+    unless $P10, rx1261_fail
+    rx1261_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("assertion")
-    rx1256_pos = $P10."pos"()
-    goto alt1262_end
-  alt1262_2:
-    set_addr $I10, alt1262_3
-    rx1256_cur."!mark_push"(0, rx1256_pos, $I10)
-.annotate "line", 545
+    rx1261_pos = $P10."pos"()
+    goto alt1267_end
+  alt1267_2:
+    set_addr $I10, alt1267_3
+    rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
+.annotate "line", 549
   # rx literal  ":"
-    add $I11, rx1256_pos, 1
-    gt $I11, rx1256_eos, rx1256_fail
-    sub $I11, rx1256_pos, rx1256_off
-    substr $S10, rx1256_tgt, $I11, 1
-    ne $S10, ":", rx1256_fail
-    add rx1256_pos, 1
+    add $I11, rx1261_pos, 1
+    gt $I11, rx1261_eos, rx1261_fail
+    sub $I11, rx1261_pos, rx1261_off
+    substr $S10, rx1261_tgt, $I11, 1
+    ne $S10, ":", rx1261_fail
+    add rx1261_pos, 1
   # rx subrule "arglist" subtype=capture negate=
-    rx1256_cur."!cursor_pos"(rx1256_pos)
-    $P10 = rx1256_cur."arglist"()
-    unless $P10, rx1256_fail
-    rx1256_cur."!mark_push"(0, -1, 0, $P10)
+    rx1261_cur."!cursor_pos"(rx1261_pos)
+    $P10 = rx1261_cur."arglist"()
+    unless $P10, rx1261_fail
+    rx1261_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("arglist")
-    rx1256_pos = $P10."pos"()
-    goto alt1262_end
-  alt1262_3:
-    set_addr $I10, alt1262_4
-    rx1256_cur."!mark_push"(0, rx1256_pos, $I10)
-.annotate "line", 546
+    rx1261_pos = $P10."pos"()
+    goto alt1267_end
+  alt1267_3:
+    set_addr $I10, alt1267_4
+    rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
+.annotate "line", 550
   # rx literal  "("
-    add $I11, rx1256_pos, 1
-    gt $I11, rx1256_eos, rx1256_fail
-    sub $I11, rx1256_pos, rx1256_off
-    substr $S10, rx1256_tgt, $I11, 1
-    ne $S10, "(", rx1256_fail
-    add rx1256_pos, 1
+    add $I11, rx1261_pos, 1
+    gt $I11, rx1261_eos, rx1261_fail
+    sub $I11, rx1261_pos, rx1261_off
+    substr $S10, rx1261_tgt, $I11, 1
+    ne $S10, "(", rx1261_fail
+    add rx1261_pos, 1
   # rx subrule "LANG" subtype=capture negate=
-    rx1256_cur."!cursor_pos"(rx1256_pos)
-    $P10 = rx1256_cur."LANG"("MAIN", "arglist")
-    unless $P10, rx1256_fail
-    rx1256_cur."!mark_push"(0, -1, 0, $P10)
+    rx1261_cur."!cursor_pos"(rx1261_pos)
+    $P10 = rx1261_cur."LANG"("MAIN", "arglist")
+    unless $P10, rx1261_fail
+    rx1261_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("arglist")
-    rx1256_pos = $P10."pos"()
+    rx1261_pos = $P10."pos"()
   # rx literal  ")"
-    add $I11, rx1256_pos, 1
-    gt $I11, rx1256_eos, rx1256_fail
-    sub $I11, rx1256_pos, rx1256_off
-    substr $S10, rx1256_tgt, $I11, 1
-    ne $S10, ")", rx1256_fail
-    add rx1256_pos, 1
-    goto alt1262_end
-  alt1262_4:
-.annotate "line", 547
+    add $I11, rx1261_pos, 1
+    gt $I11, rx1261_eos, rx1261_fail
+    sub $I11, rx1261_pos, rx1261_off
+    substr $S10, rx1261_tgt, $I11, 1
+    ne $S10, ")", rx1261_fail
+    add rx1261_pos, 1
+    goto alt1267_end
+  alt1267_4:
+.annotate "line", 551
   # rx subrule "normspace" subtype=method negate=
-    rx1256_cur."!cursor_pos"(rx1256_pos)
-    $P10 = rx1256_cur."normspace"()
-    unless $P10, rx1256_fail
-    rx1256_pos = $P10."pos"()
+    rx1261_cur."!cursor_pos"(rx1261_pos)
+    $P10 = rx1261_cur."normspace"()
+    unless $P10, rx1261_fail
+    rx1261_pos = $P10."pos"()
   # rx subrule "nibbler" subtype=capture negate=
-    rx1256_cur."!cursor_pos"(rx1256_pos)
-    $P10 = rx1256_cur."nibbler"()
-    unless $P10, rx1256_fail
-    rx1256_cur."!mark_push"(0, -1, 0, $P10)
+    rx1261_cur."!cursor_pos"(rx1261_pos)
+    $P10 = rx1261_cur."nibbler"()
+    unless $P10, rx1261_fail
+    rx1261_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("nibbler")
-    rx1256_pos = $P10."pos"()
-  alt1262_end:
-.annotate "line", 548
-    (rx1256_rep) = rx1256_cur."!mark_commit"($I1267)
-  rxquantr1261_done:
-.annotate "line", 540
+    rx1261_pos = $P10."pos"()
+  alt1267_end:
+.annotate "line", 552
+    (rx1261_rep) = rx1261_cur."!mark_commit"($I1272)
+  rxquantr1266_done:
+.annotate "line", 544
   # rx pass
-    rx1256_cur."!cursor_pass"(rx1256_pos, "assertion:sym<name>")
-    rx1256_cur."!cursor_debug"("PASS  ", "assertion:sym<name>", " at pos=", rx1256_pos)
-    .return (rx1256_cur)
-  rx1256_fail:
-.annotate "line", 527
-    (rx1256_rep, rx1256_pos, $I10, $P10) = rx1256_cur."!mark_fail"(0)
-    lt rx1256_pos, -1, rx1256_done
-    eq rx1256_pos, -1, rx1256_fail
-    jump $I10
-  rx1256_done:
-    rx1256_cur."!cursor_fail"()
-    rx1256_cur."!cursor_debug"("FAIL  ", "assertion:sym<name>")
-    .return (rx1256_cur)
+    rx1261_cur."!cursor_pass"(rx1261_pos, "assertion:sym<name>")
+    rx1261_cur."!cursor_debug"("PASS  ", "assertion:sym<name>", " at pos=", rx1261_pos)
+    .return (rx1261_cur)
+  rx1261_fail:
+.annotate "line", 531
+    (rx1261_rep, rx1261_pos, $I10, $P10) = rx1261_cur."!mark_fail"(0)
+    lt rx1261_pos, -1, rx1261_done
+    eq rx1261_pos, -1, rx1261_fail
+    jump $I10
+  rx1261_done:
+    rx1261_cur."!cursor_fail"()
+    rx1261_cur."!cursor_debug"("FAIL  ", "assertion:sym<name>")
+    .return (rx1261_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("327_1261064023.05912") :method
-.annotate "line", 527
-    new $P1258, "ResizablePMCArray"
-    push $P1258, ""
-    .return ($P1258)
+.sub "!PREFIX__assertion:sym<name>"  :subid("327_1267204702.05125") :method
+.annotate "line", 531
+    new $P1263, "ResizablePMCArray"
+    push $P1263, ""
+    .return ($P1263)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1263"  :anon :subid("328_1261064023.05912") :method :outer("326_1261064023.05912")
-.annotate "line", 543
-    .local string rx1265_tgt
-    .local int rx1265_pos
-    .local int rx1265_off
-    .local int rx1265_eos
-    .local int rx1265_rep
-    .local pmc rx1265_cur
-    (rx1265_cur, rx1265_pos, rx1265_tgt) = self."!cursor_start"()
-    rx1265_cur."!cursor_debug"("START ", "")
-    .lex unicode:"$\x{a2}", rx1265_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1265_eos, rx1265_tgt
-    set rx1265_off, 0
-    lt rx1265_pos, 2, rx1265_start
-    sub rx1265_off, rx1265_pos, 1
-    substr rx1265_tgt, rx1265_tgt, rx1265_off
-  rx1265_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1266_done
-    goto rxscan1266_scan
-  rxscan1266_loop:
-    ($P10) = rx1265_cur."from"()
-    inc $P10
-    set rx1265_pos, $P10
-    ge rx1265_pos, rx1265_eos, rxscan1266_done
-  rxscan1266_scan:
-    set_addr $I10, rxscan1266_loop
-    rx1265_cur."!mark_push"(0, rx1265_pos, $I10)
-  rxscan1266_done:
+.sub "_block1268"  :anon :subid("328_1267204702.05125") :method :outer("326_1267204702.05125")
+.annotate "line", 547
+    .local string rx1270_tgt
+    .local int rx1270_pos
+    .local int rx1270_off
+    .local int rx1270_eos
+    .local int rx1270_rep
+    .local pmc rx1270_cur
+    (rx1270_cur, rx1270_pos, rx1270_tgt) = self."!cursor_start"()
+    rx1270_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx1270_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1270_eos, rx1270_tgt
+    set rx1270_off, 0
+    lt rx1270_pos, 2, rx1270_start
+    sub rx1270_off, rx1270_pos, 1
+    substr rx1270_tgt, rx1270_tgt, rx1270_off
+  rx1270_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1271_done
+    goto rxscan1271_scan
+  rxscan1271_loop:
+    ($P10) = rx1270_cur."from"()
+    inc $P10
+    set rx1270_pos, $P10
+    ge rx1270_pos, rx1270_eos, rxscan1271_done
+  rxscan1271_scan:
+    set_addr $I10, rxscan1271_loop
+    rx1270_cur."!mark_push"(0, rx1270_pos, $I10)
+  rxscan1271_done:
   # rx literal  ">"
-    add $I11, rx1265_pos, 1
-    gt $I11, rx1265_eos, rx1265_fail
-    sub $I11, rx1265_pos, rx1265_off
-    substr $S10, rx1265_tgt, $I11, 1
-    ne $S10, ">", rx1265_fail
-    add rx1265_pos, 1
-  # rx pass
-    rx1265_cur."!cursor_pass"(rx1265_pos, "")
-    rx1265_cur."!cursor_debug"("PASS  ", "", " at pos=", rx1265_pos)
-    .return (rx1265_cur)
-  rx1265_fail:
-    (rx1265_rep, rx1265_pos, $I10, $P10) = rx1265_cur."!mark_fail"(0)
-    lt rx1265_pos, -1, rx1265_done
-    eq rx1265_pos, -1, rx1265_fail
-    jump $I10
-  rx1265_done:
-    rx1265_cur."!cursor_fail"()
-    rx1265_cur."!cursor_debug"("FAIL  ", "")
-    .return (rx1265_cur)
+    add $I11, rx1270_pos, 1
+    gt $I11, rx1270_eos, rx1270_fail
+    sub $I11, rx1270_pos, rx1270_off
+    substr $S10, rx1270_tgt, $I11, 1
+    ne $S10, ">", rx1270_fail
+    add rx1270_pos, 1
+  # rx pass
+    rx1270_cur."!cursor_pass"(rx1270_pos, "")
+    rx1270_cur."!cursor_debug"("PASS  ", "", " at pos=", rx1270_pos)
+    .return (rx1270_cur)
+  rx1270_fail:
+    (rx1270_rep, rx1270_pos, $I10, $P10) = rx1270_cur."!mark_fail"(0)
+    lt rx1270_pos, -1, rx1270_done
+    eq rx1270_pos, -1, rx1270_fail
+    jump $I10
+  rx1270_done:
+    rx1270_cur."!cursor_fail"()
+    rx1270_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx1270_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "codeblock"  :subid("329_1261064023.05912") :method :outer("318_1261064023.05912")
-.annotate "line", 527
-    .local string rx1269_tgt
-    .local int rx1269_pos
-    .local int rx1269_off
-    .local int rx1269_eos
-    .local int rx1269_rep
-    .local pmc rx1269_cur
-    (rx1269_cur, rx1269_pos, rx1269_tgt) = self."!cursor_start"()
-    rx1269_cur."!cursor_debug"("START ", "codeblock")
-    .lex unicode:"$\x{a2}", rx1269_cur
-    .local pmc match
-    .lex "$/", match
-    length rx1269_eos, rx1269_tgt
-    set rx1269_off, 0
-    lt rx1269_pos, 2, rx1269_start
-    sub rx1269_off, rx1269_pos, 1
-    substr rx1269_tgt, rx1269_tgt, rx1269_off
-  rx1269_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan1273_done
-    goto rxscan1273_scan
-  rxscan1273_loop:
-    ($P10) = rx1269_cur."from"()
-    inc $P10
-    set rx1269_pos, $P10
-    ge rx1269_pos, rx1269_eos, rxscan1273_done
-  rxscan1273_scan:
-    set_addr $I10, rxscan1273_loop
-    rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
-  rxscan1273_done:
-.annotate "line", 553
+.sub "codeblock"  :subid("329_1267204702.05125") :method :outer("318_1267204702.05125")
+.annotate "line", 531
+    .local string rx1274_tgt
+    .local int rx1274_pos
+    .local int rx1274_off
+    .local int rx1274_eos
+    .local int rx1274_rep
+    .local pmc rx1274_cur
+    (rx1274_cur, rx1274_pos, rx1274_tgt) = self."!cursor_start"()
+    rx1274_cur."!cursor_debug"("START ", "codeblock")
+    .lex unicode:"$\x{a2}", rx1274_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1274_eos, rx1274_tgt
+    set rx1274_off, 0
+    lt rx1274_pos, 2, rx1274_start
+    sub rx1274_off, rx1274_pos, 1
+    substr rx1274_tgt, rx1274_tgt, rx1274_off
+  rx1274_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan1278_done
+    goto rxscan1278_scan
+  rxscan1278_loop:
+    ($P10) = rx1274_cur."from"()
+    inc $P10
+    set rx1274_pos, $P10
+    ge rx1274_pos, rx1274_eos, rxscan1278_done
+  rxscan1278_scan:
+    set_addr $I10, rxscan1278_loop
+    rx1274_cur."!mark_push"(0, rx1274_pos, $I10)
+  rxscan1278_done:
+.annotate "line", 557
   # rx subrule "LANG" subtype=capture negate=
-    rx1269_cur."!cursor_pos"(rx1269_pos)
-    $P10 = rx1269_cur."LANG"("MAIN", "pblock")
-    unless $P10, rx1269_fail
-    rx1269_cur."!mark_push"(0, -1, 0, $P10)
+    rx1274_cur."!cursor_pos"(rx1274_pos)
+    $P10 = rx1274_cur."LANG"("MAIN", "pblock")
+    unless $P10, rx1274_fail
+    rx1274_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("block")
-    rx1269_pos = $P10."pos"()
-.annotate "line", 552
+    rx1274_pos = $P10."pos"()
+.annotate "line", 556
   # rx pass
-    rx1269_cur."!cursor_pass"(rx1269_pos, "codeblock")
-    rx1269_cur."!cursor_debug"("PASS  ", "codeblock", " at pos=", rx1269_pos)
-    .return (rx1269_cur)
-  rx1269_fail:
-.annotate "line", 527
-    (rx1269_rep, rx1269_pos, $I10, $P10) = rx1269_cur."!mark_fail"(0)
-    lt rx1269_pos, -1, rx1269_done
-    eq rx1269_pos, -1, rx1269_fail
-    jump $I10
-  rx1269_done:
-    rx1269_cur."!cursor_fail"()
-    rx1269_cur."!cursor_debug"("FAIL  ", "codeblock")
-    .return (rx1269_cur)
+    rx1274_cur."!cursor_pass"(rx1274_pos, "codeblock")
+    rx1274_cur."!cursor_debug"("PASS  ", "codeblock", " at pos=", rx1274_pos)
+    .return (rx1274_cur)
+  rx1274_fail:
+.annotate "line", 531
+    (rx1274_rep, rx1274_pos, $I10, $P10) = rx1274_cur."!mark_fail"(0)
+    lt rx1274_pos, -1, rx1274_done
+    eq rx1274_pos, -1, rx1274_fail
+    jump $I10
+  rx1274_done:
+    rx1274_cur."!cursor_fail"()
+    rx1274_cur."!cursor_debug"("FAIL  ", "codeblock")
+    .return (rx1274_cur)
     .return ()
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__codeblock"  :subid("330_1261064023.05912") :method
-.annotate "line", 527
-    $P1271 = self."!PREFIX__!subrule"("block", "")
-    new $P1272, "ResizablePMCArray"
-    push $P1272, $P1271
-    .return ($P1272)
+.sub "!PREFIX__codeblock"  :subid("330_1267204702.05125") :method
+.annotate "line", 531
+    $P1276 = self."!PREFIX__!subrule"("block", "")
+    new $P1277, "ResizablePMCArray"
+    push $P1277, $P1276
+    .return ($P1277)
 .end
 
 ### .include 'gen/nqp-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064035.64813")
+.sub "_block11"  :anon :subid("10_1267204714.47172")
 .annotate "line", 0
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     capture_lex $P14
 .annotate "line", 3
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     capture_lex $P14
-    $P2165 = $P14()
+    $P2168 = $P14()
 .annotate "line", 1
-    .return ($P2165)
+    .return ($P2168)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post126") :outer("10_1261064035.64813")
+.sub "" :load :init :subid("post126") :outer("10_1267204714.47172")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064035.64813" 
+    .const 'Sub' $P12 = "10_1267204714.47172" 
     .local pmc block
     set block, $P12
-    $P2166 = get_root_global ["parrot"], "P6metaclass"
-    $P2166."new_class"("NQP::Actions", "HLL::Actions" :named("parent"))
+    $P2169 = get_root_global ["parrot"], "P6metaclass"
+    $P2169."new_class"("NQP::Actions", "HLL::Actions" :named("parent"))
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block13"  :subid("11_1261064035.64813") :outer("10_1261064035.64813")
+.sub "_block13"  :subid("11_1267204714.47172") :outer("10_1267204714.47172")
 .annotate "line", 3
-    .const 'Sub' $P2161 = "125_1261064035.64813" 
-    capture_lex $P2161
-    get_hll_global $P2097, ["NQP";"RegexActions"], "_block2096" 
-    capture_lex $P2097
-    .const 'Sub' $P2086 = "119_1261064035.64813" 
-    capture_lex $P2086
-    .const 'Sub' $P2074 = "118_1261064035.64813" 
-    capture_lex $P2074
-    .const 'Sub' $P2064 = "117_1261064035.64813" 
-    capture_lex $P2064
-    .const 'Sub' $P2054 = "116_1261064035.64813" 
-    capture_lex $P2054
-    .const 'Sub' $P2044 = "115_1261064035.64813" 
-    capture_lex $P2044
-    .const 'Sub' $P2030 = "114_1261064035.64813" 
-    capture_lex $P2030
-    .const 'Sub' $P2020 = "113_1261064035.64813" 
-    capture_lex $P2020
-    .const 'Sub' $P1983 = "112_1261064035.64813" 
-    capture_lex $P1983
-    .const 'Sub' $P1969 = "111_1261064035.64813" 
-    capture_lex $P1969
-    .const 'Sub' $P1959 = "110_1261064035.64813" 
-    capture_lex $P1959
-    .const 'Sub' $P1949 = "109_1261064035.64813" 
-    capture_lex $P1949
-    .const 'Sub' $P1939 = "108_1261064035.64813" 
-    capture_lex $P1939
-    .const 'Sub' $P1929 = "107_1261064035.64813" 
-    capture_lex $P1929
-    .const 'Sub' $P1919 = "106_1261064035.64813" 
-    capture_lex $P1919
-    .const 'Sub' $P1891 = "105_1261064035.64813" 
-    capture_lex $P1891
-    .const 'Sub' $P1874 = "104_1261064035.64813" 
-    capture_lex $P1874
-    .const 'Sub' $P1864 = "103_1261064035.64813" 
-    capture_lex $P1864
-    .const 'Sub' $P1852 = "102_1261064035.64813" 
-    capture_lex $P1852
-    .const 'Sub' $P1840 = "101_1261064035.64813" 
-    capture_lex $P1840
-    .const 'Sub' $P1828 = "100_1261064035.64813" 
+    .const 'Sub' $P2164 = "125_1267204714.47172" 
+    capture_lex $P2164
+    get_hll_global $P2100, ["NQP";"RegexActions"], "_block2099" 
+    capture_lex $P2100
+    .const 'Sub' $P2089 = "119_1267204714.47172" 
+    capture_lex $P2089
+    .const 'Sub' $P2077 = "118_1267204714.47172" 
+    capture_lex $P2077
+    .const 'Sub' $P2067 = "117_1267204714.47172" 
+    capture_lex $P2067
+    .const 'Sub' $P2057 = "116_1267204714.47172" 
+    capture_lex $P2057
+    .const 'Sub' $P2047 = "115_1267204714.47172" 
+    capture_lex $P2047
+    .const 'Sub' $P2033 = "114_1267204714.47172" 
+    capture_lex $P2033
+    .const 'Sub' $P2023 = "113_1267204714.47172" 
+    capture_lex $P2023
+    .const 'Sub' $P1986 = "112_1267204714.47172" 
+    capture_lex $P1986
+    .const 'Sub' $P1972 = "111_1267204714.47172" 
+    capture_lex $P1972
+    .const 'Sub' $P1962 = "110_1267204714.47172" 
+    capture_lex $P1962
+    .const 'Sub' $P1952 = "109_1267204714.47172" 
+    capture_lex $P1952
+    .const 'Sub' $P1942 = "108_1267204714.47172" 
+    capture_lex $P1942
+    .const 'Sub' $P1932 = "107_1267204714.47172" 
+    capture_lex $P1932
+    .const 'Sub' $P1922 = "106_1267204714.47172" 
+    capture_lex $P1922
+    .const 'Sub' $P1894 = "105_1267204714.47172" 
+    capture_lex $P1894
+    .const 'Sub' $P1877 = "104_1267204714.47172" 
+    capture_lex $P1877
+    .const 'Sub' $P1867 = "103_1267204714.47172" 
+    capture_lex $P1867
+    .const 'Sub' $P1854 = "102_1267204714.47172" 
+    capture_lex $P1854
+    .const 'Sub' $P1841 = "101_1267204714.47172" 
+    capture_lex $P1841
+    .const 'Sub' $P1828 = "100_1267204714.47172" 
     capture_lex $P1828
-    .const 'Sub' $P1818 = "99_1261064035.64813" 
+    .const 'Sub' $P1818 = "99_1267204714.47172" 
     capture_lex $P1818
-    .const 'Sub' $P1789 = "98_1261064035.64813" 
+    .const 'Sub' $P1789 = "98_1267204714.47172" 
     capture_lex $P1789
-    .const 'Sub' $P1767 = "97_1261064035.64813" 
-    capture_lex $P1767
-    .const 'Sub' $P1757 = "96_1261064035.64813" 
-    capture_lex $P1757
-    .const 'Sub' $P1747 = "95_1261064035.64813" 
-    capture_lex $P1747
-    .const 'Sub' $P1720 = "94_1261064035.64813" 
-    capture_lex $P1720
-    .const 'Sub' $P1702 = "93_1261064035.64813" 
-    capture_lex $P1702
-    .const 'Sub' $P1692 = "92_1261064035.64813" 
-    capture_lex $P1692
-    .const 'Sub' $P1608 = "89_1261064035.64813" 
-    capture_lex $P1608
-    .const 'Sub' $P1598 = "88_1261064035.64813" 
-    capture_lex $P1598
-    .const 'Sub' $P1569 = "87_1261064035.64813" 
-    capture_lex $P1569
-    .const 'Sub' $P1527 = "86_1261064035.64813" 
-    capture_lex $P1527
-    .const 'Sub' $P1511 = "85_1261064035.64813" 
-    capture_lex $P1511
-    .const 'Sub' $P1502 = "84_1261064035.64813" 
-    capture_lex $P1502
-    .const 'Sub' $P1470 = "83_1261064035.64813" 
-    capture_lex $P1470
-    .const 'Sub' $P1371 = "80_1261064035.64813" 
-    capture_lex $P1371
-    .const 'Sub' $P1354 = "79_1261064035.64813" 
-    capture_lex $P1354
-    .const 'Sub' $P1334 = "78_1261064035.64813" 
-    capture_lex $P1334
-    .const 'Sub' $P1250 = "77_1261064035.64813" 
-    capture_lex $P1250
-    .const 'Sub' $P1226 = "75_1261064035.64813" 
-    capture_lex $P1226
-    .const 'Sub' $P1192 = "73_1261064035.64813" 
-    capture_lex $P1192
-    .const 'Sub' $P1142 = "71_1261064035.64813" 
-    capture_lex $P1142
-    .const 'Sub' $P1132 = "70_1261064035.64813" 
-    capture_lex $P1132
-    .const 'Sub' $P1122 = "69_1261064035.64813" 
-    capture_lex $P1122
-    .const 'Sub' $P1051 = "67_1261064035.64813" 
-    capture_lex $P1051
-    .const 'Sub' $P1034 = "66_1261064035.64813" 
-    capture_lex $P1034
-    .const 'Sub' $P1024 = "65_1261064035.64813" 
-    capture_lex $P1024
-    .const 'Sub' $P1014 = "64_1261064035.64813" 
-    capture_lex $P1014
-    .const 'Sub' $P1004 = "63_1261064035.64813" 
-    capture_lex $P1004
-    .const 'Sub' $P980 = "62_1261064035.64813" 
-    capture_lex $P980
-    .const 'Sub' $P927 = "61_1261064035.64813" 
-    capture_lex $P927
-    .const 'Sub' $P917 = "60_1261064035.64813" 
-    capture_lex $P917
-    .const 'Sub' $P828 = "58_1261064035.64813" 
-    capture_lex $P828
-    .const 'Sub' $P802 = "57_1261064035.64813" 
-    capture_lex $P802
-    .const 'Sub' $P786 = "56_1261064035.64813" 
-    capture_lex $P786
-    .const 'Sub' $P776 = "55_1261064035.64813" 
-    capture_lex $P776
-    .const 'Sub' $P766 = "54_1261064035.64813" 
-    capture_lex $P766
-    .const 'Sub' $P756 = "53_1261064035.64813" 
-    capture_lex $P756
-    .const 'Sub' $P746 = "52_1261064035.64813" 
-    capture_lex $P746
-    .const 'Sub' $P736 = "51_1261064035.64813" 
-    capture_lex $P736
-    .const 'Sub' $P726 = "50_1261064035.64813" 
-    capture_lex $P726
-    .const 'Sub' $P716 = "49_1261064035.64813" 
-    capture_lex $P716
-    .const 'Sub' $P706 = "48_1261064035.64813" 
-    capture_lex $P706
-    .const 'Sub' $P696 = "47_1261064035.64813" 
-    capture_lex $P696
-    .const 'Sub' $P686 = "46_1261064035.64813" 
-    capture_lex $P686
-    .const 'Sub' $P676 = "45_1261064035.64813" 
-    capture_lex $P676
-    .const 'Sub' $P666 = "44_1261064035.64813" 
-    capture_lex $P666
-    .const 'Sub' $P656 = "43_1261064035.64813" 
-    capture_lex $P656
-    .const 'Sub' $P638 = "42_1261064035.64813" 
-    capture_lex $P638
-    .const 'Sub' $P603 = "41_1261064035.64813" 
-    capture_lex $P603
-    .const 'Sub' $P587 = "40_1261064035.64813" 
-    capture_lex $P587
-    .const 'Sub' $P566 = "39_1261064035.64813" 
-    capture_lex $P566
-    .const 'Sub' $P546 = "38_1261064035.64813" 
-    capture_lex $P546
-    .const 'Sub' $P533 = "37_1261064035.64813" 
-    capture_lex $P533
-    .const 'Sub' $P507 = "36_1261064035.64813" 
-    capture_lex $P507
-    .const 'Sub' $P471 = "35_1261064035.64813" 
-    capture_lex $P471
-    .const 'Sub' $P454 = "34_1261064035.64813" 
-    capture_lex $P454
-    .const 'Sub' $P440 = "33_1261064035.64813" 
-    capture_lex $P440
-    .const 'Sub' $P387 = "31_1261064035.64813" 
-    capture_lex $P387
-    .const 'Sub' $P374 = "30_1261064035.64813" 
-    capture_lex $P374
-    .const 'Sub' $P355 = "29_1261064035.64813" 
-    capture_lex $P355
-    .const 'Sub' $P345 = "28_1261064035.64813" 
-    capture_lex $P345
-    .const 'Sub' $P335 = "27_1261064035.64813" 
-    capture_lex $P335
-    .const 'Sub' $P319 = "26_1261064035.64813" 
-    capture_lex $P319
-    .const 'Sub' $P259 = "24_1261064035.64813" 
-    capture_lex $P259
-    .const 'Sub' $P210 = "22_1261064035.64813" 
-    capture_lex $P210
-    .const 'Sub' $P191 = "21_1261064035.64813" 
-    capture_lex $P191
-    .const 'Sub' $P158 = "20_1261064035.64813" 
-    capture_lex $P158
-    .const 'Sub' $P148 = "19_1261064035.64813" 
-    capture_lex $P148
-    .const 'Sub' $P94 = "18_1261064035.64813" 
-    capture_lex $P94
-    .const 'Sub' $P79 = "17_1261064035.64813" 
-    capture_lex $P79
-    .const 'Sub' $P61 = "16_1261064035.64813" 
+    .const 'Sub' $P1769 = "97_1267204714.47172" 
+    capture_lex $P1769
+    .const 'Sub' $P1759 = "96_1267204714.47172" 
+    capture_lex $P1759
+    .const 'Sub' $P1749 = "95_1267204714.47172" 
+    capture_lex $P1749
+    .const 'Sub' $P1722 = "94_1267204714.47172" 
+    capture_lex $P1722
+    .const 'Sub' $P1704 = "93_1267204714.47172" 
+    capture_lex $P1704
+    .const 'Sub' $P1694 = "92_1267204714.47172" 
+    capture_lex $P1694
+    .const 'Sub' $P1610 = "89_1267204714.47172" 
+    capture_lex $P1610
+    .const 'Sub' $P1600 = "88_1267204714.47172" 
+    capture_lex $P1600
+    .const 'Sub' $P1571 = "87_1267204714.47172" 
+    capture_lex $P1571
+    .const 'Sub' $P1529 = "86_1267204714.47172" 
+    capture_lex $P1529
+    .const 'Sub' $P1513 = "85_1267204714.47172" 
+    capture_lex $P1513
+    .const 'Sub' $P1504 = "84_1267204714.47172" 
+    capture_lex $P1504
+    .const 'Sub' $P1472 = "83_1267204714.47172" 
+    capture_lex $P1472
+    .const 'Sub' $P1373 = "80_1267204714.47172" 
+    capture_lex $P1373
+    .const 'Sub' $P1356 = "79_1267204714.47172" 
+    capture_lex $P1356
+    .const 'Sub' $P1336 = "78_1267204714.47172" 
+    capture_lex $P1336
+    .const 'Sub' $P1252 = "77_1267204714.47172" 
+    capture_lex $P1252
+    .const 'Sub' $P1228 = "75_1267204714.47172" 
+    capture_lex $P1228
+    .const 'Sub' $P1194 = "73_1267204714.47172" 
+    capture_lex $P1194
+    .const 'Sub' $P1144 = "71_1267204714.47172" 
+    capture_lex $P1144
+    .const 'Sub' $P1134 = "70_1267204714.47172" 
+    capture_lex $P1134
+    .const 'Sub' $P1124 = "69_1267204714.47172" 
+    capture_lex $P1124
+    .const 'Sub' $P1053 = "67_1267204714.47172" 
+    capture_lex $P1053
+    .const 'Sub' $P1036 = "66_1267204714.47172" 
+    capture_lex $P1036
+    .const 'Sub' $P1026 = "65_1267204714.47172" 
+    capture_lex $P1026
+    .const 'Sub' $P1016 = "64_1267204714.47172" 
+    capture_lex $P1016
+    .const 'Sub' $P1006 = "63_1267204714.47172" 
+    capture_lex $P1006
+    .const 'Sub' $P982 = "62_1267204714.47172" 
+    capture_lex $P982
+    .const 'Sub' $P929 = "61_1267204714.47172" 
+    capture_lex $P929
+    .const 'Sub' $P919 = "60_1267204714.47172" 
+    capture_lex $P919
+    .const 'Sub' $P830 = "58_1267204714.47172" 
+    capture_lex $P830
+    .const 'Sub' $P804 = "57_1267204714.47172" 
+    capture_lex $P804
+    .const 'Sub' $P788 = "56_1267204714.47172" 
+    capture_lex $P788
+    .const 'Sub' $P778 = "55_1267204714.47172" 
+    capture_lex $P778
+    .const 'Sub' $P768 = "54_1267204714.47172" 
+    capture_lex $P768
+    .const 'Sub' $P758 = "53_1267204714.47172" 
+    capture_lex $P758
+    .const 'Sub' $P748 = "52_1267204714.47172" 
+    capture_lex $P748
+    .const 'Sub' $P738 = "51_1267204714.47172" 
+    capture_lex $P738
+    .const 'Sub' $P728 = "50_1267204714.47172" 
+    capture_lex $P728
+    .const 'Sub' $P718 = "49_1267204714.47172" 
+    capture_lex $P718
+    .const 'Sub' $P708 = "48_1267204714.47172" 
+    capture_lex $P708
+    .const 'Sub' $P698 = "47_1267204714.47172" 
+    capture_lex $P698
+    .const 'Sub' $P688 = "46_1267204714.47172" 
+    capture_lex $P688
+    .const 'Sub' $P678 = "45_1267204714.47172" 
+    capture_lex $P678
+    .const 'Sub' $P668 = "44_1267204714.47172" 
+    capture_lex $P668
+    .const 'Sub' $P658 = "43_1267204714.47172" 
+    capture_lex $P658
+    .const 'Sub' $P640 = "42_1267204714.47172" 
+    capture_lex $P640
+    .const 'Sub' $P605 = "41_1267204714.47172" 
+    capture_lex $P605
+    .const 'Sub' $P589 = "40_1267204714.47172" 
+    capture_lex $P589
+    .const 'Sub' $P568 = "39_1267204714.47172" 
+    capture_lex $P568
+    .const 'Sub' $P548 = "38_1267204714.47172" 
+    capture_lex $P548
+    .const 'Sub' $P535 = "37_1267204714.47172" 
+    capture_lex $P535
+    .const 'Sub' $P509 = "36_1267204714.47172" 
+    capture_lex $P509
+    .const 'Sub' $P473 = "35_1267204714.47172" 
+    capture_lex $P473
+    .const 'Sub' $P456 = "34_1267204714.47172" 
+    capture_lex $P456
+    .const 'Sub' $P442 = "33_1267204714.47172" 
+    capture_lex $P442
+    .const 'Sub' $P389 = "31_1267204714.47172" 
+    capture_lex $P389
+    .const 'Sub' $P376 = "30_1267204714.47172" 
+    capture_lex $P376
+    .const 'Sub' $P357 = "29_1267204714.47172" 
+    capture_lex $P357
+    .const 'Sub' $P347 = "28_1267204714.47172" 
+    capture_lex $P347
+    .const 'Sub' $P337 = "27_1267204714.47172" 
+    capture_lex $P337
+    .const 'Sub' $P321 = "26_1267204714.47172" 
+    capture_lex $P321
+    .const 'Sub' $P261 = "24_1267204714.47172" 
+    capture_lex $P261
+    .const 'Sub' $P212 = "22_1267204714.47172" 
+    capture_lex $P212
+    .const 'Sub' $P193 = "21_1267204714.47172" 
+    capture_lex $P193
+    .const 'Sub' $P160 = "20_1267204714.47172" 
+    capture_lex $P160
+    .const 'Sub' $P150 = "19_1267204714.47172" 
+    capture_lex $P150
+    .const 'Sub' $P96 = "18_1267204714.47172" 
+    capture_lex $P96
+    .const 'Sub' $P81 = "17_1267204714.47172" 
+    capture_lex $P81
+    .const 'Sub' $P61 = "16_1267204714.47172" 
     capture_lex $P61
-    .const 'Sub' $P26 = "13_1261064035.64813" 
+    .const 'Sub' $P26 = "13_1267204714.47172" 
     capture_lex $P26
-    .const 'Sub' $P16 = "12_1261064035.64813" 
+    .const 'Sub' $P16 = "12_1267204714.47172" 
     capture_lex $P16
     get_global $P15, "@BLOCK"
     unless_null $P15, vivify_129
-    new $P15, "ResizablePMCArray"
+    $P15 = root_new ['parrot';'ResizablePMCArray']
     set_global "@BLOCK", $P15
   vivify_129:
 .annotate "line", 9
-    .const 'Sub' $P16 = "12_1261064035.64813" 
+    .const 'Sub' $P16 = "12_1267204714.47172" 
     capture_lex $P16
     .lex "xblock_immediate", $P16
 .annotate "line", 14
-    .const 'Sub' $P26 = "13_1261064035.64813" 
+    .const 'Sub' $P26 = "13_1267204714.47172" 
     capture_lex $P26
     .lex "block_immediate", $P26
 .annotate "line", 24
-    .const 'Sub' $P61 = "16_1261064035.64813" 
+    .const 'Sub' $P61 = "16_1267204714.47172" 
     capture_lex $P61
-    .lex "sigiltype", $P61
-.annotate "line", 40
-    .const 'Sub' $P79 = "17_1261064035.64813" 
-    capture_lex $P79
-    .lex "colonpair_str", $P79
-.annotate "line", 187
-    .const 'Sub' $P94 = "18_1261064035.64813" 
-    capture_lex $P94
-    .lex "push_block_handler", $P94
+    .lex "vivitype", $P61
+.annotate "line", 43
+    .const 'Sub' $P81 = "17_1267204714.47172" 
+    capture_lex $P81
+    .lex "colonpair_str", $P81
+.annotate "line", 190
+    .const 'Sub' $P96 = "18_1267204714.47172" 
+    capture_lex $P96
+    .lex "push_block_handler", $P96
 .annotate "line", 3
-    get_global $P144, "@BLOCK"
+    get_global $P146, "@BLOCK"
 .annotate "line", 5
-    find_lex $P145, "xblock_immediate"
-    find_lex $P146, "block_immediate"
-    find_lex $P147, "sigiltype"
-.annotate "line", 32
-    find_lex $P190, "colonpair_str"
-.annotate "line", 180
-    find_lex $P586, "push_block_handler"
-.annotate "line", 765
-    get_hll_global $P2097, ["NQP";"RegexActions"], "_block2096" 
-    capture_lex $P2097
-    $P2159 = $P2097()
+    find_lex $P147, "xblock_immediate"
+    find_lex $P148, "block_immediate"
+    find_lex $P149, "vivitype"
+.annotate "line", 35
+    find_lex $P192, "colonpair_str"
+.annotate "line", 183
+    find_lex $P588, "push_block_handler"
+.annotate "line", 768
+    get_hll_global $P2100, ["NQP";"RegexActions"], "_block2099" 
+    capture_lex $P2100
+    $P2162 = $P2100()
 .annotate "line", 3
-    .return ($P2159)
+    .return ($P2162)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "" :load :init :subid("post127") :outer("11_1261064035.64813")
+.sub "" :load :init :subid("post127") :outer("11_1267204714.47172")
 .annotate "line", 3
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     .local pmc block
     set block, $P14
 .annotate "line", 5
-    .const 'Sub' $P2161 = "125_1261064035.64813" 
-    capture_lex $P2161
-    $P2161()
-    $P2164 = get_root_global ["parrot"], "P6metaclass"
-    $P2164."new_class"("NQP::RegexActions", "Regex::P6Regex::Actions" :named("parent"))
+    .const 'Sub' $P2164 = "125_1267204714.47172" 
+    capture_lex $P2164
+    $P2164()
+    $P2167 = get_root_global ["parrot"], "P6metaclass"
+    $P2167."new_class"("NQP::RegexActions", "Regex::P6Regex::Actions" :named("parent"))
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block2160"  :anon :subid("125_1261064035.64813") :outer("11_1261064035.64813")
+.sub "_block2163"  :anon :subid("125_1267204714.47172") :outer("11_1267204714.47172")
 .annotate "line", 6
-    get_global $P2162, "@BLOCK"
-    unless_null $P2162, vivify_128
-    new $P2162, "ResizablePMCArray"
-    set_global "@BLOCK", $P2162
+    get_global $P2165, "@BLOCK"
+    unless_null $P2165, vivify_128
+    $P2165 = root_new ['parrot';'ResizablePMCArray']
+    set_global "@BLOCK", $P2165
   vivify_128:
- $P2163 = new ['ResizablePMCArray'] 
-    set_global "@BLOCK", $P2163
+ $P2166 = new ['ResizablePMCArray'] 
+    set_global "@BLOCK", $P2166
 .annotate "line", 5
-    .return ($P2163)
+    .return ($P2166)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock_immediate"  :subid("12_1261064035.64813") :outer("11_1261064035.64813")
+.sub "xblock_immediate"  :subid("12_1267204714.47172") :outer("11_1267204714.47172")
     .param pmc param_19
 .annotate "line", 9
     new $P18, 'ExceptionHandler'
@@ -16023,7 +16066,7 @@
 .annotate "line", 10
     find_lex $P20, "$xblock"
     unless_null $P20, vivify_130
-    new $P20, "ResizablePMCArray"
+    $P20 = root_new ['parrot';'ResizablePMCArray']
   vivify_130:
     set $P21, $P20[1]
     unless_null $P21, vivify_131
@@ -16032,7 +16075,7 @@
     $P22 = "block_immediate"($P21)
     find_lex $P23, "$xblock"
     unless_null $P23, vivify_132
-    new $P23, "ResizablePMCArray"
+    $P23 = root_new ['parrot';'ResizablePMCArray']
     store_lex "$xblock", $P23
   vivify_132:
     set $P23[1], $P22
@@ -16048,10 +16091,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "block_immediate"  :subid("13_1261064035.64813") :outer("11_1261064035.64813")
+.sub "block_immediate"  :subid("13_1267204714.47172") :outer("11_1267204714.47172")
     .param pmc param_29
 .annotate "line", 14
-    .const 'Sub' $P39 = "14_1261064035.64813" 
+    .const 'Sub' $P39 = "14_1267204714.47172" 
     capture_lex $P39
     new $P28, 'ExceptionHandler'
     set_addr $P28, control_27
@@ -16073,7 +16116,7 @@
     set $P32, $P37
   unless_33_end:
     if $P32, unless_31_end
-    .const 'Sub' $P39 = "14_1261064035.64813" 
+    .const 'Sub' $P39 = "14_1267204714.47172" 
     capture_lex $P39
     $P39()
   unless_31_end:
@@ -16089,9 +16132,9 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block38"  :anon :subid("14_1261064035.64813") :outer("13_1261064035.64813")
+.sub "_block38"  :anon :subid("14_1267204714.47172") :outer("13_1267204714.47172")
 .annotate "line", 16
-    .const 'Sub' $P50 = "15_1261064035.64813" 
+    .const 'Sub' $P50 = "15_1267204714.47172" 
     capture_lex $P50
 .annotate "line", 17
     new $P40, "Undef"
@@ -16114,7 +16157,7 @@
     unless $P44, loop55_done
     shift $P48, $P44
   loop55_redo:
-    .const 'Sub' $P50 = "15_1261064035.64813" 
+    .const 'Sub' $P50 = "15_1267204714.47172" 
     capture_lex $P50
     $P50($P48)
   loop55_next:
@@ -16137,7 +16180,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block49"  :anon :subid("15_1261064035.64813") :outer("14_1261064035.64813")
+.sub "_block49"  :anon :subid("15_1267204714.47172") :outer("14_1267204714.47172")
     .param pmc param_51
 .annotate "line", 18
     .lex "$_", param_51
@@ -16149,7 +16192,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "sigiltype"  :subid("16_1261064035.64813") :outer("11_1261064035.64813")
+.sub "vivitype"  :subid("16_1267204714.47172") :outer("11_1267204714.47172")
     .param pmc param_64
 .annotate "line", 24
     new $P63, 'ExceptionHandler'
@@ -16163,4969 +16206,4969 @@
     iseq $I69, $S68, "%"
     if $I69, if_66
 .annotate "line", 27
-    find_lex $P73, "$sigil"
-    set $S74, $P73
-    iseq $I75, $S74, "@"
-    if $I75, if_72
-    new $P77, "String"
-    assign $P77, "Undef"
-    set $P71, $P77
-    goto if_72_end
-  if_72:
-    new $P76, "String"
-    assign $P76, "ResizablePMCArray"
-    set $P71, $P76
-  if_72_end:
-    set $P65, $P71
+    find_lex $P74, "$sigil"
+    set $S75, $P74
+    iseq $I76, $S75, "@"
+    if $I76, if_73
+    new $P79, "String"
+    assign $P79, "Undef"
+    set $P72, $P79
+    goto if_73_end
+  if_73:
+.annotate "line", 28
+    get_hll_global $P77, ["PAST"], "Op"
+    $P78 = $P77."new"("    %r = root_new ['parrot';'ResizablePMCArray']" :named("inline"))
+    set $P72, $P78
+  if_73_end:
+    set $P65, $P72
 .annotate "line", 25
     goto if_66_end
   if_66:
-    new $P70, "String"
-    assign $P70, "Hash"
-    set $P65, $P70
+.annotate "line", 26
+    get_hll_global $P70, ["PAST"], "Op"
+    $P71 = $P70."new"("    %r = root_new ['parrot';'Hash']" :named("inline"))
+    set $P65, $P71
   if_66_end:
 .annotate "line", 24
     .return ($P65)
   control_62:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P78, exception, "payload"
-    .return ($P78)
+    getattribute $P80, exception, "payload"
+    .return ($P80)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "colonpair_str"  :subid("17_1261064035.64813") :outer("11_1261064035.64813")
-    .param pmc param_82
-.annotate "line", 40
-    new $P81, 'ExceptionHandler'
-    set_addr $P81, control_80
-    $P81."handle_types"(58)
-    push_eh $P81
-    .lex "$ast", param_82
-.annotate "line", 41
-    get_hll_global $P85, ["PAST"], "Op"
-    find_lex $P86, "$ast"
-    $P87 = $P85."ACCEPTS"($P86)
-    if $P87, if_84
+.sub "colonpair_str"  :subid("17_1267204714.47172") :outer("11_1267204714.47172")
+    .param pmc param_84
 .annotate "line", 43
-    find_lex $P91, "$ast"
-    $P92 = $P91."value"()
-    set $P83, $P92
-.annotate "line", 41
-    goto if_84_end
-  if_84:
-.annotate "line", 42
+    new $P83, 'ExceptionHandler'
+    set_addr $P83, control_82
+    $P83."handle_types"(58)
+    push_eh $P83
+    .lex "$ast", param_84
+.annotate "line", 44
+    get_hll_global $P87, ["PAST"], "Op"
     find_lex $P88, "$ast"
-    $P89 = $P88."list"()
-    join $S90, " ", $P89
-    new $P83, 'String'
-    set $P83, $S90
-  if_84_end:
-.annotate "line", 40
-    .return ($P83)
-  control_80:
+    $P89 = $P87."ACCEPTS"($P88)
+    if $P89, if_86
+.annotate "line", 46
+    find_lex $P93, "$ast"
+    $P94 = $P93."value"()
+    set $P85, $P94
+.annotate "line", 44
+    goto if_86_end
+  if_86:
+.annotate "line", 45
+    find_lex $P90, "$ast"
+    $P91 = $P90."list"()
+    join $S92, " ", $P91
+    new $P85, 'String'
+    set $P85, $S92
+  if_86_end:
+.annotate "line", 43
+    .return ($P85)
+  control_82:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P93, exception, "payload"
-    .return ($P93)
+    getattribute $P95, exception, "payload"
+    .return ($P95)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "push_block_handler"  :subid("18_1261064035.64813") :outer("11_1261064035.64813")
-    .param pmc param_97
-    .param pmc param_98
-.annotate "line", 187
-    new $P96, 'ExceptionHandler'
-    set_addr $P96, control_95
-    $P96."handle_types"(58)
-    push_eh $P96
-    .lex "$/", param_97
-    .lex "$block", param_98
-.annotate "line", 188
-    get_global $P100, "@BLOCK"
-    unless_null $P100, vivify_134
-    new $P100, "ResizablePMCArray"
+.sub "push_block_handler"  :subid("18_1267204714.47172") :outer("11_1267204714.47172")
+    .param pmc param_99
+    .param pmc param_100
+.annotate "line", 190
+    new $P98, 'ExceptionHandler'
+    set_addr $P98, control_97
+    $P98."handle_types"(58)
+    push_eh $P98
+    .lex "$/", param_99
+    .lex "$block", param_100
+.annotate "line", 191
+    get_global $P102, "@BLOCK"
+    unless_null $P102, vivify_134
+    $P102 = root_new ['parrot';'ResizablePMCArray']
   vivify_134:
-    set $P101, $P100[0]
-    unless_null $P101, vivify_135
-    new $P101, "Undef"
+    set $P103, $P102[0]
+    unless_null $P103, vivify_135
+    new $P103, "Undef"
   vivify_135:
-    $P102 = $P101."handlers"()
-    if $P102, unless_99_end
-.annotate "line", 189
-    get_global $P103, "@BLOCK"
-    unless_null $P103, vivify_136
-    new $P103, "ResizablePMCArray"
+    $P104 = $P103."handlers"()
+    if $P104, unless_101_end
+.annotate "line", 192
+    get_global $P105, "@BLOCK"
+    unless_null $P105, vivify_136
+    $P105 = root_new ['parrot';'ResizablePMCArray']
   vivify_136:
-    set $P104, $P103[0]
-    unless_null $P104, vivify_137
-    new $P104, "Undef"
+    set $P106, $P105[0]
+    unless_null $P106, vivify_137
+    new $P106, "Undef"
   vivify_137:
-    new $P105, "ResizablePMCArray"
-    $P104."handlers"($P105)
-  unless_99_end:
-.annotate "line", 191
-    find_lex $P107, "$block"
-    $P108 = $P107."arity"()
-    if $P108, unless_106_end
-.annotate "line", 192
-    find_lex $P109, "$block"
-.annotate "line", 193
-    get_hll_global $P110, ["PAST"], "Op"
+    new $P107, "ResizablePMCArray"
+    $P106."handlers"($P107)
+  unless_101_end:
 .annotate "line", 194
-    get_hll_global $P111, ["PAST"], "Var"
-    $P112 = $P111."new"("lexical" :named("scope"), "$!" :named("name"), 1 :named("isdecl"))
+    find_lex $P109, "$block"
+    $P110 = $P109."arity"()
+    if $P110, unless_108_end
 .annotate "line", 195
+    find_lex $P111, "$block"
+.annotate "line", 196
+    get_hll_global $P112, ["PAST"], "Op"
+.annotate "line", 197
     get_hll_global $P113, ["PAST"], "Var"
-    $P114 = $P113."new"("lexical" :named("scope"), "$_" :named("name"))
-    $P115 = $P110."new"($P112, $P114, "bind" :named("pasttype"))
-.annotate "line", 193
-    $P109."unshift"($P115)
+    $P114 = $P113."new"("lexical" :named("scope"), "$!" :named("name"), 1 :named("isdecl"))
 .annotate "line", 198
-    find_lex $P116, "$block"
-    get_hll_global $P117, ["PAST"], "Var"
-    $P118 = $P117."new"("$_" :named("name"), "parameter" :named("scope"))
-    $P116."unshift"($P118)
-.annotate "line", 199
-    find_lex $P119, "$block"
-    $P119."symbol"("$_", "lexical" :named("scope"))
-.annotate "line", 200
-    find_lex $P120, "$block"
-    $P120."symbol"("$!", "lexical" :named("scope"))
+    get_hll_global $P115, ["PAST"], "Var"
+    $P116 = $P115."new"("lexical" :named("scope"), "$_" :named("name"))
+    $P117 = $P112."new"($P114, $P116, "bind" :named("pasttype"))
+.annotate "line", 196
+    $P111."unshift"($P117)
 .annotate "line", 201
+    find_lex $P118, "$block"
+    get_hll_global $P119, ["PAST"], "Var"
+    $P120 = $P119."new"("$_" :named("name"), "parameter" :named("scope"))
+    $P118."unshift"($P120)
+.annotate "line", 202
     find_lex $P121, "$block"
-    $P121."arity"(1)
-  unless_106_end:
+    $P121."symbol"("$_", "lexical" :named("scope"))
 .annotate "line", 203
     find_lex $P122, "$block"
-    $P122."blocktype"("declaration")
+    $P122."symbol"("$!", "lexical" :named("scope"))
 .annotate "line", 204
-    get_global $P123, "@BLOCK"
-    unless_null $P123, vivify_138
-    new $P123, "ResizablePMCArray"
+    find_lex $P123, "$block"
+    $P123."arity"(1)
+  unless_108_end:
+.annotate "line", 206
+    find_lex $P124, "$block"
+    $P124."blocktype"("declaration")
+.annotate "line", 207
+    get_global $P125, "@BLOCK"
+    unless_null $P125, vivify_138
+    $P125 = root_new ['parrot';'ResizablePMCArray']
   vivify_138:
-    set $P124, $P123[0]
-    unless_null $P124, vivify_139
-    new $P124, "Undef"
+    set $P126, $P125[0]
+    unless_null $P126, vivify_139
+    new $P126, "Undef"
   vivify_139:
-    $P125 = $P124."handlers"()
-.annotate "line", 205
-    get_hll_global $P126, ["PAST"], "Control"
-    find_lex $P127, "$/"
-.annotate "line", 207
-    get_hll_global $P128, ["PAST"], "Stmts"
+    $P127 = $P126."handlers"()
 .annotate "line", 208
-    get_hll_global $P129, ["PAST"], "Op"
-    find_lex $P130, "$block"
+    get_hll_global $P128, ["PAST"], "Control"
+    find_lex $P129, "$/"
 .annotate "line", 210
-    get_hll_global $P131, ["PAST"], "Var"
-    $P132 = $P131."new"("register" :named("scope"), "exception" :named("name"))
-    $P133 = $P129."new"($P130, $P132, "call" :named("pasttype"))
-.annotate "line", 212
-    get_hll_global $P134, ["PAST"], "Op"
-.annotate "line", 213
-    get_hll_global $P135, ["PAST"], "Var"
-.annotate "line", 214
-    get_hll_global $P136, ["PAST"], "Var"
-    $P137 = $P136."new"("register" :named("scope"), "exception" :named("name"))
-    $P138 = $P135."new"($P137, "handled", "keyed" :named("scope"))
+    get_hll_global $P130, ["PAST"], "Stmts"
+.annotate "line", 211
+    get_hll_global $P131, ["PAST"], "Op"
+    find_lex $P132, "$block"
 .annotate "line", 213
-    $P139 = $P134."new"($P138, 1, "bind" :named("pasttype"))
-.annotate "line", 212
-    $P140 = $P128."new"($P133, $P139)
-.annotate "line", 207
-    $P141 = $P126."new"($P140, $P127 :named("node"))
-.annotate "line", 205
-    $P142 = $P125."unshift"($P141)
-.annotate "line", 187
-    .return ($P142)
-  control_95:
+    get_hll_global $P133, ["PAST"], "Var"
+    $P134 = $P133."new"("register" :named("scope"), "exception" :named("name"))
+    $P135 = $P131."new"($P132, $P134, "call" :named("pasttype"))
+.annotate "line", 215
+    get_hll_global $P136, ["PAST"], "Op"
+.annotate "line", 216
+    get_hll_global $P137, ["PAST"], "Var"
+.annotate "line", 217
+    get_hll_global $P138, ["PAST"], "Var"
+    $P139 = $P138."new"("register" :named("scope"), "exception" :named("name"))
+    $P140 = $P137."new"($P139, "handled", "keyed" :named("scope"))
+.annotate "line", 216
+    $P141 = $P136."new"($P140, 1, "bind" :named("pasttype"))
+.annotate "line", 215
+    $P142 = $P130."new"($P135, $P141)
+.annotate "line", 210
+    $P143 = $P128."new"($P142, $P129 :named("node"))
+.annotate "line", 208
+    $P144 = $P127."unshift"($P143)
+.annotate "line", 190
+    .return ($P144)
+  control_97:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P143, exception, "payload"
-    .return ($P143)
+    getattribute $P145, exception, "payload"
+    .return ($P145)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "TOP"  :subid("19_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_151
-.annotate "line", 30
-    new $P150, 'ExceptionHandler'
-    set_addr $P150, control_149
-    $P150."handle_types"(58)
-    push_eh $P150
-    .lex "self", self
-    .lex "$/", param_151
-    find_lex $P152, "$/"
-    find_lex $P153, "$/"
-    unless_null $P153, vivify_140
-    new $P153, "Hash"
+.sub "TOP"  :subid("19_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_153
+.annotate "line", 33
+    new $P152, 'ExceptionHandler'
+    set_addr $P152, control_151
+    $P152."handle_types"(58)
+    push_eh $P152
+    .lex "self", self
+    .lex "$/", param_153
+    find_lex $P154, "$/"
+    find_lex $P155, "$/"
+    unless_null $P155, vivify_140
+    $P155 = root_new ['parrot';'Hash']
   vivify_140:
-    set $P154, $P153["comp_unit"]
-    unless_null $P154, vivify_141
-    new $P154, "Undef"
+    set $P156, $P155["comp_unit"]
+    unless_null $P156, vivify_141
+    new $P156, "Undef"
   vivify_141:
-    $P155 = $P154."ast"()
-    $P156 = $P152."!make"($P155)
-    .return ($P156)
-  control_149:
+    $P157 = $P156."ast"()
+    $P158 = $P154."!make"($P157)
+    .return ($P158)
+  control_151:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P157, exception, "payload"
-    .return ($P157)
+    getattribute $P159, exception, "payload"
+    .return ($P159)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "deflongname"  :subid("20_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_161
-.annotate "line", 32
-    new $P160, 'ExceptionHandler'
-    set_addr $P160, control_159
-    $P160."handle_types"(58)
-    push_eh $P160
+.sub "deflongname"  :subid("20_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_163
+.annotate "line", 35
+    new $P162, 'ExceptionHandler'
+    set_addr $P162, control_161
+    $P162."handle_types"(58)
+    push_eh $P162
     .lex "self", self
-    .lex "$/", param_161
-.annotate "line", 33
-    find_lex $P162, "$/"
-.annotate "line", 34
-    find_lex $P165, "$/"
-    unless_null $P165, vivify_142
-    new $P165, "Hash"
-  vivify_142:
-    set $P166, $P165["colonpair"]
-    unless_null $P166, vivify_143
-    new $P166, "Undef"
-  vivify_143:
-    if $P166, if_164
+    .lex "$/", param_163
 .annotate "line", 36
-    find_lex $P186, "$/"
-    set $S187, $P186
-    new $P163, 'String'
-    set $P163, $S187
-.annotate "line", 34
-    goto if_164_end
-  if_164:
+    find_lex $P164, "$/"
+.annotate "line", 37
     find_lex $P167, "$/"
-    unless_null $P167, vivify_144
-    new $P167, "Hash"
-  vivify_144:
-    set $P168, $P167["identifier"]
-    unless_null $P168, vivify_145
+    unless_null $P167, vivify_142
+    $P167 = root_new ['parrot';'Hash']
+  vivify_142:
+    set $P168, $P167["colonpair"]
+    unless_null $P168, vivify_143
     new $P168, "Undef"
+  vivify_143:
+    if $P168, if_166
+.annotate "line", 39
+    find_lex $P188, "$/"
+    set $S189, $P188
+    new $P165, 'String'
+    set $P165, $S189
+.annotate "line", 37
+    goto if_166_end
+  if_166:
+    find_lex $P169, "$/"
+    unless_null $P169, vivify_144
+    $P169 = root_new ['parrot';'Hash']
+  vivify_144:
+    set $P170, $P169["identifier"]
+    unless_null $P170, vivify_145
+    new $P170, "Undef"
   vivify_145:
-    set $S169, $P168
-    new $P170, 'String'
-    set $P170, $S169
-    concat $P171, $P170, ":"
-    find_lex $P172, "$/"
-    unless_null $P172, vivify_146
-    new $P172, "Hash"
+    set $S171, $P170
+    new $P172, 'String'
+    set $P172, $S171
+    concat $P173, $P172, ":"
+    find_lex $P174, "$/"
+    unless_null $P174, vivify_146
+    $P174 = root_new ['parrot';'Hash']
   vivify_146:
-    set $P173, $P172["colonpair"]
-    unless_null $P173, vivify_147
-    new $P173, "ResizablePMCArray"
+    set $P175, $P174["colonpair"]
+    unless_null $P175, vivify_147
+    $P175 = root_new ['parrot';'ResizablePMCArray']
   vivify_147:
-    set $P174, $P173[0]
-    unless_null $P174, vivify_148
-    new $P174, "Undef"
+    set $P176, $P175[0]
+    unless_null $P176, vivify_148
+    new $P176, "Undef"
   vivify_148:
-    $P175 = $P174."ast"()
-    $S176 = $P175."named"()
-    concat $P177, $P171, $S176
-    concat $P178, $P177, "<"
-.annotate "line", 35
-    find_lex $P179, "$/"
-    unless_null $P179, vivify_149
-    new $P179, "Hash"
+    $P177 = $P176."ast"()
+    $S178 = $P177."named"()
+    concat $P179, $P173, $S178
+    concat $P180, $P179, "<"
+.annotate "line", 38
+    find_lex $P181, "$/"
+    unless_null $P181, vivify_149
+    $P181 = root_new ['parrot';'Hash']
   vivify_149:
-    set $P180, $P179["colonpair"]
-    unless_null $P180, vivify_150
-    new $P180, "ResizablePMCArray"
+    set $P182, $P181["colonpair"]
+    unless_null $P182, vivify_150
+    $P182 = root_new ['parrot';'ResizablePMCArray']
   vivify_150:
-    set $P181, $P180[0]
-    unless_null $P181, vivify_151
-    new $P181, "Undef"
+    set $P183, $P182[0]
+    unless_null $P183, vivify_151
+    new $P183, "Undef"
   vivify_151:
-    $P182 = $P181."ast"()
-    $S183 = "colonpair_str"($P182)
-    concat $P184, $P178, $S183
-    concat $P185, $P184, ">"
-    set $P163, $P185
-  if_164_end:
-.annotate "line", 34
-    $P188 = $P162."!make"($P163)
-.annotate "line", 32
-    .return ($P188)
-  control_159:
+    $P184 = $P183."ast"()
+    $S185 = "colonpair_str"($P184)
+    concat $P186, $P180, $S185
+    concat $P187, $P186, ">"
+    set $P165, $P187
+  if_166_end:
+.annotate "line", 37
+    $P190 = $P164."!make"($P165)
+.annotate "line", 35
+    .return ($P190)
+  control_161:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P189, exception, "payload"
-    .return ($P189)
+    getattribute $P191, exception, "payload"
+    .return ($P191)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "comp_unit"  :subid("21_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_194
-.annotate "line", 46
-    new $P193, 'ExceptionHandler'
-    set_addr $P193, control_192
-    $P193."handle_types"(58)
-    push_eh $P193
-    .lex "self", self
-    .lex "$/", param_194
-.annotate "line", 47
-    new $P195, "Undef"
-    .lex "$past", $P195
-.annotate "line", 48
-    new $P196, "Undef"
-    .lex "$BLOCK", $P196
-.annotate "line", 47
-    find_lex $P197, "$/"
-    unless_null $P197, vivify_152
-    new $P197, "Hash"
-  vivify_152:
-    set $P198, $P197["statementlist"]
-    unless_null $P198, vivify_153
-    new $P198, "Undef"
-  vivify_153:
-    $P199 = $P198."ast"()
-    store_lex "$past", $P199
-.annotate "line", 48
-    get_global $P200, "@BLOCK"
-    $P201 = $P200."shift"()
-    store_lex "$BLOCK", $P201
+.sub "comp_unit"  :subid("21_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_196
 .annotate "line", 49
-    find_lex $P202, "$BLOCK"
-    find_lex $P203, "$past"
-    $P202."push"($P203)
+    new $P195, 'ExceptionHandler'
+    set_addr $P195, control_194
+    $P195."handle_types"(58)
+    push_eh $P195
+    .lex "self", self
+    .lex "$/", param_196
 .annotate "line", 50
-    find_lex $P204, "$BLOCK"
-    find_lex $P205, "$/"
-    $P204."node"($P205)
+    new $P197, "Undef"
+    .lex "$past", $P197
 .annotate "line", 51
-    find_lex $P206, "$/"
-    find_lex $P207, "$BLOCK"
-    $P208 = $P206."!make"($P207)
-.annotate "line", 46
-    .return ($P208)
-  control_192:
+    new $P198, "Undef"
+    .lex "$BLOCK", $P198
+.annotate "line", 50
+    find_lex $P199, "$/"
+    unless_null $P199, vivify_152
+    $P199 = root_new ['parrot';'Hash']
+  vivify_152:
+    set $P200, $P199["statementlist"]
+    unless_null $P200, vivify_153
+    new $P200, "Undef"
+  vivify_153:
+    $P201 = $P200."ast"()
+    store_lex "$past", $P201
+.annotate "line", 51
+    get_global $P202, "@BLOCK"
+    $P203 = $P202."shift"()
+    store_lex "$BLOCK", $P203
+.annotate "line", 52
+    find_lex $P204, "$BLOCK"
+    find_lex $P205, "$past"
+    $P204."push"($P205)
+.annotate "line", 53
+    find_lex $P206, "$BLOCK"
+    find_lex $P207, "$/"
+    $P206."node"($P207)
+.annotate "line", 54
+    find_lex $P208, "$/"
+    find_lex $P209, "$BLOCK"
+    $P210 = $P208."!make"($P209)
+.annotate "line", 49
+    .return ($P210)
+  control_194:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P209, exception, "payload"
-    .return ($P209)
+    getattribute $P211, exception, "payload"
+    .return ($P211)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statementlist"  :subid("22_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_213
-.annotate "line", 54
-    .const 'Sub' $P227 = "23_1261064035.64813" 
-    capture_lex $P227
-    new $P212, 'ExceptionHandler'
-    set_addr $P212, control_211
-    $P212."handle_types"(58)
-    push_eh $P212
+.sub "statementlist"  :subid("22_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_215
+.annotate "line", 57
+    .const 'Sub' $P229 = "23_1267204714.47172" 
+    capture_lex $P229
+    new $P214, 'ExceptionHandler'
+    set_addr $P214, control_213
+    $P214."handle_types"(58)
+    push_eh $P214
     .lex "self", self
-    .lex "$/", param_213
-.annotate "line", 55
-    new $P214, "Undef"
-    .lex "$past", $P214
-    get_hll_global $P215, ["PAST"], "Stmts"
-    find_lex $P216, "$/"
-    $P217 = $P215."new"($P216 :named("node"))
-    store_lex "$past", $P217
-.annotate "line", 56
-    find_lex $P219, "$/"
-    unless_null $P219, vivify_154
-    new $P219, "Hash"
+    .lex "$/", param_215
+.annotate "line", 58
+    new $P216, "Undef"
+    .lex "$past", $P216
+    get_hll_global $P217, ["PAST"], "Stmts"
+    find_lex $P218, "$/"
+    $P219 = $P217."new"($P218 :named("node"))
+    store_lex "$past", $P219
+.annotate "line", 59
+    find_lex $P221, "$/"
+    unless_null $P221, vivify_154
+    $P221 = root_new ['parrot';'Hash']
   vivify_154:
-    set $P220, $P219["statement"]
-    unless_null $P220, vivify_155
-    new $P220, "Undef"
+    set $P222, $P221["statement"]
+    unless_null $P222, vivify_155
+    new $P222, "Undef"
   vivify_155:
-    unless $P220, if_218_end
-.annotate "line", 57
-    find_lex $P222, "$/"
-    unless_null $P222, vivify_156
-    new $P222, "Hash"
+    unless $P222, if_220_end
+.annotate "line", 60
+    find_lex $P224, "$/"
+    unless_null $P224, vivify_156
+    $P224 = root_new ['parrot';'Hash']
   vivify_156:
-    set $P223, $P222["statement"]
-    unless_null $P223, vivify_157
-    new $P223, "Undef"
+    set $P225, $P224["statement"]
+    unless_null $P225, vivify_157
+    new $P225, "Undef"
   vivify_157:
-    defined $I224, $P223
-    unless $I224, for_undef_158
-    iter $P221, $P223
-    new $P253, 'ExceptionHandler'
-    set_addr $P253, loop252_handler
-    $P253."handle_types"(65, 67, 66)
-    push_eh $P253
-  loop252_test:
-    unless $P221, loop252_done
-    shift $P225, $P221
-  loop252_redo:
-    .const 'Sub' $P227 = "23_1261064035.64813" 
-    capture_lex $P227
-    $P227($P225)
-  loop252_next:
-    goto loop252_test
-  loop252_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P254, exception, 'type'
-    eq $P254, 65, loop252_next
-    eq $P254, 67, loop252_redo
-  loop252_done:
+    defined $I226, $P225
+    unless $I226, for_undef_158
+    iter $P223, $P225
+    new $P255, 'ExceptionHandler'
+    set_addr $P255, loop254_handler
+    $P255."handle_types"(65, 67, 66)
+    push_eh $P255
+  loop254_test:
+    unless $P223, loop254_done
+    shift $P227, $P223
+  loop254_redo:
+    .const 'Sub' $P229 = "23_1267204714.47172" 
+    capture_lex $P229
+    $P229($P227)
+  loop254_next:
+    goto loop254_test
+  loop254_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P256, exception, 'type'
+    eq $P256, 65, loop254_next
+    eq $P256, 67, loop254_redo
+  loop254_done:
     pop_eh 
   for_undef_158:
-  if_218_end:
-.annotate "line", 66
-    find_lex $P255, "$/"
-    find_lex $P256, "$past"
-    $P257 = $P255."!make"($P256)
-.annotate "line", 54
-    .return ($P257)
-  control_211:
+  if_220_end:
+.annotate "line", 69
+    find_lex $P257, "$/"
+    find_lex $P258, "$past"
+    $P259 = $P257."!make"($P258)
+.annotate "line", 57
+    .return ($P259)
+  control_213:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P258, exception, "payload"
-    .return ($P258)
+    getattribute $P260, exception, "payload"
+    .return ($P260)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block226"  :anon :subid("23_1261064035.64813") :outer("22_1261064035.64813")
-    .param pmc param_229
-.annotate "line", 58
-    new $P228, "Undef"
-    .lex "$ast", $P228
-    .lex "$_", param_229
-    find_lex $P230, "$_"
-    $P231 = $P230."ast"()
-    store_lex "$ast", $P231
-.annotate "line", 59
-    find_lex $P233, "$ast"
-    unless_null $P233, vivify_159
-    new $P233, "Hash"
+.sub "_block228"  :anon :subid("23_1267204714.47172") :outer("22_1267204714.47172")
+    .param pmc param_231
+.annotate "line", 61
+    new $P230, "Undef"
+    .lex "$ast", $P230
+    .lex "$_", param_231
+    find_lex $P232, "$_"
+    $P233 = $P232."ast"()
+    store_lex "$ast", $P233
+.annotate "line", 62
+    find_lex $P235, "$ast"
+    unless_null $P235, vivify_159
+    $P235 = root_new ['parrot';'Hash']
   vivify_159:
-    set $P234, $P233["sink"]
-    unless_null $P234, vivify_160
-    new $P234, "Undef"
+    set $P236, $P235["sink"]
+    unless_null $P236, vivify_160
+    new $P236, "Undef"
   vivify_160:
-    defined $I235, $P234
-    unless $I235, if_232_end
-    find_lex $P236, "$ast"
-    unless_null $P236, vivify_161
-    new $P236, "Hash"
+    defined $I237, $P236
+    unless $I237, if_234_end
+    find_lex $P238, "$ast"
+    unless_null $P238, vivify_161
+    $P238 = root_new ['parrot';'Hash']
   vivify_161:
-    set $P237, $P236["sink"]
-    unless_null $P237, vivify_162
-    new $P237, "Undef"
+    set $P239, $P238["sink"]
+    unless_null $P239, vivify_162
+    new $P239, "Undef"
   vivify_162:
-    store_lex "$ast", $P237
-  if_232_end:
-.annotate "line", 60
-    find_lex $P241, "$ast"
-    get_hll_global $P242, ["PAST"], "Block"
-    $P243 = $P241."isa"($P242)
-    if $P243, if_240
-    set $P239, $P243
-    goto if_240_end
-  if_240:
-    find_lex $P244, "$ast"
-    $P245 = $P244."blocktype"()
-    isfalse $I246, $P245
-    new $P239, 'Integer'
-    set $P239, $I246
-  if_240_end:
-    unless $P239, if_238_end
-.annotate "line", 61
-    find_lex $P247, "$ast"
-    $P248 = "block_immediate"($P247)
-    store_lex "$ast", $P248
-  if_238_end:
+    store_lex "$ast", $P239
+  if_234_end:
 .annotate "line", 63
-    find_lex $P249, "$past"
-    find_lex $P250, "$ast"
-    $P251 = $P249."push"($P250)
-.annotate "line", 57
-    .return ($P251)
+    find_lex $P243, "$ast"
+    get_hll_global $P244, ["PAST"], "Block"
+    $P245 = $P243."isa"($P244)
+    if $P245, if_242
+    set $P241, $P245
+    goto if_242_end
+  if_242:
+    find_lex $P246, "$ast"
+    $P247 = $P246."blocktype"()
+    isfalse $I248, $P247
+    new $P241, 'Integer'
+    set $P241, $I248
+  if_242_end:
+    unless $P241, if_240_end
+.annotate "line", 64
+    find_lex $P249, "$ast"
+    $P250 = "block_immediate"($P249)
+    store_lex "$ast", $P250
+  if_240_end:
+.annotate "line", 66
+    find_lex $P251, "$past"
+    find_lex $P252, "$ast"
+    $P253 = $P251."push"($P252)
+.annotate "line", 60
+    .return ($P253)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement"  :subid("24_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_262
-    .param pmc param_263 :optional
-    .param int has_param_263 :opt_flag
-.annotate "line", 69
-    .const 'Sub' $P271 = "25_1261064035.64813" 
-    capture_lex $P271
-    new $P261, 'ExceptionHandler'
-    set_addr $P261, control_260
-    $P261."handle_types"(58)
-    push_eh $P261
-    .lex "self", self
-    .lex "$/", param_262
-    if has_param_263, optparam_163
-    new $P264, "Undef"
-    set param_263, $P264
+.sub "statement"  :subid("24_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_264
+    .param pmc param_265 :optional
+    .param int has_param_265 :opt_flag
+.annotate "line", 72
+    .const 'Sub' $P273 = "25_1267204714.47172" 
+    capture_lex $P273
+    new $P263, 'ExceptionHandler'
+    set_addr $P263, control_262
+    $P263."handle_types"(58)
+    push_eh $P263
+    .lex "self", self
+    .lex "$/", param_264
+    if has_param_265, optparam_163
+    new $P266, "Undef"
+    set param_265, $P266
   optparam_163:
-    .lex "$key", param_263
-.annotate "line", 70
-    new $P265, "Undef"
-    .lex "$past", $P265
-.annotate "line", 69
-    find_lex $P266, "$past"
-.annotate "line", 71
-    find_lex $P268, "$/"
-    unless_null $P268, vivify_164
-    new $P268, "Hash"
+    .lex "$key", param_265
+.annotate "line", 73
+    new $P267, "Undef"
+    .lex "$past", $P267
+.annotate "line", 72
+    find_lex $P268, "$past"
+.annotate "line", 74
+    find_lex $P270, "$/"
+    unless_null $P270, vivify_164
+    $P270 = root_new ['parrot';'Hash']
   vivify_164:
-    set $P269, $P268["EXPR"]
-    unless_null $P269, vivify_165
-    new $P269, "Undef"
+    set $P271, $P270["EXPR"]
+    unless_null $P271, vivify_165
+    new $P271, "Undef"
   vivify_165:
-    if $P269, if_267
-.annotate "line", 82
-    find_lex $P309, "$/"
-    unless_null $P309, vivify_166
-    new $P309, "Hash"
-  vivify_166:
-    set $P310, $P309["statement_control"]
-    unless_null $P310, vivify_167
-    new $P310, "Undef"
-  vivify_167:
-    if $P310, if_308
-.annotate "line", 83
-    new $P314, "Integer"
-    assign $P314, 0
-    store_lex "$past", $P314
-    goto if_308_end
-  if_308:
-.annotate "line", 82
+    if $P271, if_269
+.annotate "line", 85
     find_lex $P311, "$/"
-    unless_null $P311, vivify_168
-    new $P311, "Hash"
-  vivify_168:
+    unless_null $P311, vivify_166
+    $P311 = root_new ['parrot';'Hash']
+  vivify_166:
     set $P312, $P311["statement_control"]
-    unless_null $P312, vivify_169
+    unless_null $P312, vivify_167
     new $P312, "Undef"
+  vivify_167:
+    if $P312, if_310
+.annotate "line", 86
+    new $P316, "Integer"
+    assign $P316, 0
+    store_lex "$past", $P316
+    goto if_310_end
+  if_310:
+.annotate "line", 85
+    find_lex $P313, "$/"
+    unless_null $P313, vivify_168
+    $P313 = root_new ['parrot';'Hash']
+  vivify_168:
+    set $P314, $P313["statement_control"]
+    unless_null $P314, vivify_169
+    new $P314, "Undef"
   vivify_169:
-    $P313 = $P312."ast"()
-    store_lex "$past", $P313
-  if_308_end:
-    goto if_267_end
-  if_267:
-.annotate "line", 71
-    .const 'Sub' $P271 = "25_1261064035.64813" 
-    capture_lex $P271
-    $P271()
-  if_267_end:
-.annotate "line", 84
-    find_lex $P315, "$/"
-    find_lex $P316, "$past"
-    $P317 = $P315."!make"($P316)
-.annotate "line", 69
-    .return ($P317)
-  control_260:
+    $P315 = $P314."ast"()
+    store_lex "$past", $P315
+  if_310_end:
+    goto if_269_end
+  if_269:
+.annotate "line", 74
+    .const 'Sub' $P273 = "25_1267204714.47172" 
+    capture_lex $P273
+    $P273()
+  if_269_end:
+.annotate "line", 87
+    find_lex $P317, "$/"
+    find_lex $P318, "$past"
+    $P319 = $P317."!make"($P318)
+.annotate "line", 72
+    .return ($P319)
+  control_262:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P318, exception, "payload"
-    .return ($P318)
+    getattribute $P320, exception, "payload"
+    .return ($P320)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block270"  :anon :subid("25_1261064035.64813") :outer("24_1261064035.64813")
-.annotate "line", 72
-    new $P272, "Undef"
-    .lex "$mc", $P272
-.annotate "line", 73
-    new $P273, "Undef"
-    .lex "$ml", $P273
-.annotate "line", 72
-    find_lex $P274, "$/"
-    unless_null $P274, vivify_170
-    new $P274, "Hash"
+.sub "_block272"  :anon :subid("25_1267204714.47172") :outer("24_1267204714.47172")
+.annotate "line", 75
+    new $P274, "Undef"
+    .lex "$mc", $P274
+.annotate "line", 76
+    new $P275, "Undef"
+    .lex "$ml", $P275
+.annotate "line", 75
+    find_lex $P276, "$/"
+    unless_null $P276, vivify_170
+    $P276 = root_new ['parrot';'Hash']
   vivify_170:
-    set $P275, $P274["statement_mod_cond"]
-    unless_null $P275, vivify_171
-    new $P275, "ResizablePMCArray"
+    set $P277, $P276["statement_mod_cond"]
+    unless_null $P277, vivify_171
+    $P277 = root_new ['parrot';'ResizablePMCArray']
   vivify_171:
-    set $P276, $P275[0]
-    unless_null $P276, vivify_172
-    new $P276, "Undef"
+    set $P278, $P277[0]
+    unless_null $P278, vivify_172
+    new $P278, "Undef"
   vivify_172:
-    store_lex "$mc", $P276
-.annotate "line", 73
-    find_lex $P277, "$/"
-    unless_null $P277, vivify_173
-    new $P277, "Hash"
+    store_lex "$mc", $P278
+.annotate "line", 76
+    find_lex $P279, "$/"
+    unless_null $P279, vivify_173
+    $P279 = root_new ['parrot';'Hash']
   vivify_173:
-    set $P278, $P277["statement_mod_loop"]
-    unless_null $P278, vivify_174
-    new $P278, "ResizablePMCArray"
+    set $P280, $P279["statement_mod_loop"]
+    unless_null $P280, vivify_174
+    $P280 = root_new ['parrot';'ResizablePMCArray']
   vivify_174:
-    set $P279, $P278[0]
-    unless_null $P279, vivify_175
-    new $P279, "Undef"
+    set $P281, $P280[0]
+    unless_null $P281, vivify_175
+    new $P281, "Undef"
   vivify_175:
-    store_lex "$ml", $P279
-.annotate "line", 74
-    find_lex $P280, "$/"
-    unless_null $P280, vivify_176
-    new $P280, "Hash"
+    store_lex "$ml", $P281
+.annotate "line", 77
+    find_lex $P282, "$/"
+    unless_null $P282, vivify_176
+    $P282 = root_new ['parrot';'Hash']
   vivify_176:
-    set $P281, $P280["EXPR"]
-    unless_null $P281, vivify_177
-    new $P281, "Undef"
+    set $P283, $P282["EXPR"]
+    unless_null $P283, vivify_177
+    new $P283, "Undef"
   vivify_177:
-    $P282 = $P281."ast"()
-    store_lex "$past", $P282
-.annotate "line", 75
-    find_lex $P284, "$mc"
-    unless $P284, if_283_end
-.annotate "line", 76
-    get_hll_global $P285, ["PAST"], "Op"
+    $P284 = $P283."ast"()
+    store_lex "$past", $P284
+.annotate "line", 78
     find_lex $P286, "$mc"
-    unless_null $P286, vivify_178
-    new $P286, "Hash"
+    unless $P286, if_285_end
+.annotate "line", 79
+    get_hll_global $P287, ["PAST"], "Op"
+    find_lex $P288, "$mc"
+    unless_null $P288, vivify_178
+    $P288 = root_new ['parrot';'Hash']
   vivify_178:
-    set $P287, $P286["cond"]
-    unless_null $P287, vivify_179
-    new $P287, "Undef"
+    set $P289, $P288["cond"]
+    unless_null $P289, vivify_179
+    new $P289, "Undef"
   vivify_179:
-    $P288 = $P287."ast"()
-    find_lex $P289, "$past"
-    find_lex $P290, "$mc"
-    unless_null $P290, vivify_180
-    new $P290, "Hash"
+    $P290 = $P289."ast"()
+    find_lex $P291, "$past"
+    find_lex $P292, "$mc"
+    unless_null $P292, vivify_180
+    $P292 = root_new ['parrot';'Hash']
   vivify_180:
-    set $P291, $P290["sym"]
-    unless_null $P291, vivify_181
-    new $P291, "Undef"
+    set $P293, $P292["sym"]
+    unless_null $P293, vivify_181
+    new $P293, "Undef"
   vivify_181:
-    set $S292, $P291
-    find_lex $P293, "$/"
-    $P294 = $P285."new"($P288, $P289, $S292 :named("pasttype"), $P293 :named("node"))
-    store_lex "$past", $P294
-  if_283_end:
-.annotate "line", 78
-    find_lex $P297, "$ml"
-    if $P297, if_296
-    set $P295, $P297
-    goto if_296_end
-  if_296:
-.annotate "line", 79
-    get_hll_global $P298, ["PAST"], "Op"
+    set $S294, $P293
+    find_lex $P295, "$/"
+    $P296 = $P287."new"($P290, $P291, $S294 :named("pasttype"), $P295 :named("node"))
+    store_lex "$past", $P296
+  if_285_end:
+.annotate "line", 81
     find_lex $P299, "$ml"
-    unless_null $P299, vivify_182
-    new $P299, "Hash"
+    if $P299, if_298
+    set $P297, $P299
+    goto if_298_end
+  if_298:
+.annotate "line", 82
+    get_hll_global $P300, ["PAST"], "Op"
+    find_lex $P301, "$ml"
+    unless_null $P301, vivify_182
+    $P301 = root_new ['parrot';'Hash']
   vivify_182:
-    set $P300, $P299["cond"]
-    unless_null $P300, vivify_183
-    new $P300, "Undef"
+    set $P302, $P301["cond"]
+    unless_null $P302, vivify_183
+    new $P302, "Undef"
   vivify_183:
-    $P301 = $P300."ast"()
-    find_lex $P302, "$past"
-    find_lex $P303, "$ml"
-    unless_null $P303, vivify_184
-    new $P303, "Hash"
+    $P303 = $P302."ast"()
+    find_lex $P304, "$past"
+    find_lex $P305, "$ml"
+    unless_null $P305, vivify_184
+    $P305 = root_new ['parrot';'Hash']
   vivify_184:
-    set $P304, $P303["sym"]
-    unless_null $P304, vivify_185
-    new $P304, "Undef"
+    set $P306, $P305["sym"]
+    unless_null $P306, vivify_185
+    new $P306, "Undef"
   vivify_185:
-    set $S305, $P304
-    find_lex $P306, "$/"
-    $P307 = $P298."new"($P301, $P302, $S305 :named("pasttype"), $P306 :named("node"))
-    store_lex "$past", $P307
-.annotate "line", 78
-    set $P295, $P307
-  if_296_end:
-.annotate "line", 71
-    .return ($P295)
+    set $S307, $P306
+    find_lex $P308, "$/"
+    $P309 = $P300."new"($P303, $P304, $S307 :named("pasttype"), $P308 :named("node"))
+    store_lex "$past", $P309
+.annotate "line", 81
+    set $P297, $P309
+  if_298_end:
+.annotate "line", 74
+    .return ($P297)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock"  :subid("26_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_322
-.annotate "line", 87
-    new $P321, 'ExceptionHandler'
-    set_addr $P321, control_320
-    $P321."handle_types"(58)
-    push_eh $P321
+.sub "xblock"  :subid("26_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_324
+.annotate "line", 90
+    new $P323, 'ExceptionHandler'
+    set_addr $P323, control_322
+    $P323."handle_types"(58)
+    push_eh $P323
     .lex "self", self
-    .lex "$/", param_322
-.annotate "line", 88
-    find_lex $P323, "$/"
-    get_hll_global $P324, ["PAST"], "Op"
+    .lex "$/", param_324
+.annotate "line", 91
     find_lex $P325, "$/"
-    unless_null $P325, vivify_186
-    new $P325, "Hash"
+    get_hll_global $P326, ["PAST"], "Op"
+    find_lex $P327, "$/"
+    unless_null $P327, vivify_186
+    $P327 = root_new ['parrot';'Hash']
   vivify_186:
-    set $P326, $P325["EXPR"]
-    unless_null $P326, vivify_187
-    new $P326, "Undef"
+    set $P328, $P327["EXPR"]
+    unless_null $P328, vivify_187
+    new $P328, "Undef"
   vivify_187:
-    $P327 = $P326."ast"()
-    find_lex $P328, "$/"
-    unless_null $P328, vivify_188
-    new $P328, "Hash"
+    $P329 = $P328."ast"()
+    find_lex $P330, "$/"
+    unless_null $P330, vivify_188
+    $P330 = root_new ['parrot';'Hash']
   vivify_188:
-    set $P329, $P328["pblock"]
-    unless_null $P329, vivify_189
-    new $P329, "Undef"
+    set $P331, $P330["pblock"]
+    unless_null $P331, vivify_189
+    new $P331, "Undef"
   vivify_189:
-    $P330 = $P329."ast"()
-    find_lex $P331, "$/"
-    $P332 = $P324."new"($P327, $P330, "if" :named("pasttype"), $P331 :named("node"))
-    $P333 = $P323."!make"($P332)
-.annotate "line", 87
-    .return ($P333)
-  control_320:
+    $P332 = $P331."ast"()
+    find_lex $P333, "$/"
+    $P334 = $P326."new"($P329, $P332, "if" :named("pasttype"), $P333 :named("node"))
+    $P335 = $P325."!make"($P334)
+.annotate "line", 90
+    .return ($P335)
+  control_322:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P334, exception, "payload"
-    .return ($P334)
+    getattribute $P336, exception, "payload"
+    .return ($P336)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "pblock"  :subid("27_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_338
-.annotate "line", 91
-    new $P337, 'ExceptionHandler'
-    set_addr $P337, control_336
-    $P337."handle_types"(58)
-    push_eh $P337
+.sub "pblock"  :subid("27_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_340
+.annotate "line", 94
+    new $P339, 'ExceptionHandler'
+    set_addr $P339, control_338
+    $P339."handle_types"(58)
+    push_eh $P339
     .lex "self", self
-    .lex "$/", param_338
-.annotate "line", 92
-    find_lex $P339, "$/"
-    find_lex $P340, "$/"
-    unless_null $P340, vivify_190
-    new $P340, "Hash"
+    .lex "$/", param_340
+.annotate "line", 95
+    find_lex $P341, "$/"
+    find_lex $P342, "$/"
+    unless_null $P342, vivify_190
+    $P342 = root_new ['parrot';'Hash']
   vivify_190:
-    set $P341, $P340["blockoid"]
-    unless_null $P341, vivify_191
-    new $P341, "Undef"
+    set $P343, $P342["blockoid"]
+    unless_null $P343, vivify_191
+    new $P343, "Undef"
   vivify_191:
-    $P342 = $P341."ast"()
-    $P343 = $P339."!make"($P342)
-.annotate "line", 91
-    .return ($P343)
-  control_336:
+    $P344 = $P343."ast"()
+    $P345 = $P341."!make"($P344)
+.annotate "line", 94
+    .return ($P345)
+  control_338:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P344, exception, "payload"
-    .return ($P344)
+    getattribute $P346, exception, "payload"
+    .return ($P346)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "block"  :subid("28_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_348
-.annotate "line", 95
-    new $P347, 'ExceptionHandler'
-    set_addr $P347, control_346
-    $P347."handle_types"(58)
-    push_eh $P347
+.sub "block"  :subid("28_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_350
+.annotate "line", 98
+    new $P349, 'ExceptionHandler'
+    set_addr $P349, control_348
+    $P349."handle_types"(58)
+    push_eh $P349
     .lex "self", self
-    .lex "$/", param_348
-.annotate "line", 96
-    find_lex $P349, "$/"
-    find_lex $P350, "$/"
-    unless_null $P350, vivify_192
-    new $P350, "Hash"
+    .lex "$/", param_350
+.annotate "line", 99
+    find_lex $P351, "$/"
+    find_lex $P352, "$/"
+    unless_null $P352, vivify_192
+    $P352 = root_new ['parrot';'Hash']
   vivify_192:
-    set $P351, $P350["blockoid"]
-    unless_null $P351, vivify_193
-    new $P351, "Undef"
+    set $P353, $P352["blockoid"]
+    unless_null $P353, vivify_193
+    new $P353, "Undef"
   vivify_193:
-    $P352 = $P351."ast"()
-    $P353 = $P349."!make"($P352)
-.annotate "line", 95
-    .return ($P353)
-  control_346:
+    $P354 = $P353."ast"()
+    $P355 = $P351."!make"($P354)
+.annotate "line", 98
+    .return ($P355)
+  control_348:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P354, exception, "payload"
-    .return ($P354)
+    getattribute $P356, exception, "payload"
+    .return ($P356)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "blockoid"  :subid("29_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_358
-.annotate "line", 99
-    new $P357, 'ExceptionHandler'
-    set_addr $P357, control_356
-    $P357."handle_types"(58)
-    push_eh $P357
-    .lex "self", self
-    .lex "$/", param_358
-.annotate "line", 100
-    new $P359, "Undef"
-    .lex "$past", $P359
-.annotate "line", 101
-    new $P360, "Undef"
-    .lex "$BLOCK", $P360
-.annotate "line", 100
-    find_lex $P361, "$/"
-    unless_null $P361, vivify_194
-    new $P361, "Hash"
-  vivify_194:
-    set $P362, $P361["statementlist"]
-    unless_null $P362, vivify_195
-    new $P362, "Undef"
-  vivify_195:
-    $P363 = $P362."ast"()
-    store_lex "$past", $P363
-.annotate "line", 101
-    get_global $P364, "@BLOCK"
-    $P365 = $P364."shift"()
-    store_lex "$BLOCK", $P365
+.sub "blockoid"  :subid("29_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_360
 .annotate "line", 102
-    find_lex $P366, "$BLOCK"
-    find_lex $P367, "$past"
-    $P366."push"($P367)
+    new $P359, 'ExceptionHandler'
+    set_addr $P359, control_358
+    $P359."handle_types"(58)
+    push_eh $P359
+    .lex "self", self
+    .lex "$/", param_360
 .annotate "line", 103
-    find_lex $P368, "$BLOCK"
-    find_lex $P369, "$/"
-    $P368."node"($P369)
+    new $P361, "Undef"
+    .lex "$past", $P361
 .annotate "line", 104
-    find_lex $P370, "$/"
-    find_lex $P371, "$BLOCK"
-    $P372 = $P370."!make"($P371)
-.annotate "line", 99
-    .return ($P372)
-  control_356:
+    new $P362, "Undef"
+    .lex "$BLOCK", $P362
+.annotate "line", 103
+    find_lex $P363, "$/"
+    unless_null $P363, vivify_194
+    $P363 = root_new ['parrot';'Hash']
+  vivify_194:
+    set $P364, $P363["statementlist"]
+    unless_null $P364, vivify_195
+    new $P364, "Undef"
+  vivify_195:
+    $P365 = $P364."ast"()
+    store_lex "$past", $P365
+.annotate "line", 104
+    get_global $P366, "@BLOCK"
+    $P367 = $P366."shift"()
+    store_lex "$BLOCK", $P367
+.annotate "line", 105
+    find_lex $P368, "$BLOCK"
+    find_lex $P369, "$past"
+    $P368."push"($P369)
+.annotate "line", 106
+    find_lex $P370, "$BLOCK"
+    find_lex $P371, "$/"
+    $P370."node"($P371)
+.annotate "line", 107
+    find_lex $P372, "$/"
+    find_lex $P373, "$BLOCK"
+    $P374 = $P372."!make"($P373)
+.annotate "line", 102
+    .return ($P374)
+  control_358:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P373, exception, "payload"
-    .return ($P373)
+    getattribute $P375, exception, "payload"
+    .return ($P375)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "newpad"  :subid("30_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_377
-.annotate "line", 107
-    new $P376, 'ExceptionHandler'
-    set_addr $P376, control_375
-    $P376."handle_types"(58)
-    push_eh $P376
+.sub "newpad"  :subid("30_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_379
+.annotate "line", 110
+    new $P378, 'ExceptionHandler'
+    set_addr $P378, control_377
+    $P378."handle_types"(58)
+    push_eh $P378
     .lex "self", self
-    .lex "$/", param_377
-.annotate "line", 108
-    get_global $P378, "@BLOCK"
-    unless_null $P378, vivify_196
-    new $P378, "ResizablePMCArray"
-    set_global "@BLOCK", $P378
-  vivify_196:
-.annotate "line", 107
-    get_global $P379, "@BLOCK"
-.annotate "line", 109
+    .lex "$/", param_379
+.annotate "line", 111
     get_global $P380, "@BLOCK"
-    get_hll_global $P381, ["PAST"], "Block"
-    get_hll_global $P382, ["PAST"], "Stmts"
-    $P383 = $P382."new"()
-    $P384 = $P381."new"($P383)
-    $P385 = $P380."unshift"($P384)
-.annotate "line", 107
-    .return ($P385)
-  control_375:
+    unless_null $P380, vivify_196
+    $P380 = root_new ['parrot';'ResizablePMCArray']
+    set_global "@BLOCK", $P380
+  vivify_196:
+.annotate "line", 110
+    get_global $P381, "@BLOCK"
+.annotate "line", 112
+    get_global $P382, "@BLOCK"
+    get_hll_global $P383, ["PAST"], "Block"
+    get_hll_global $P384, ["PAST"], "Stmts"
+    $P385 = $P384."new"()
+    $P386 = $P383."new"($P385)
+    $P387 = $P382."unshift"($P386)
+.annotate "line", 110
+    .return ($P387)
+  control_377:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P386, exception, "payload"
-    .return ($P386)
+    getattribute $P388, exception, "payload"
+    .return ($P388)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<if>"  :subid("31_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_390
-.annotate "line", 114
-    .const 'Sub' $P418 = "32_1261064035.64813" 
-    capture_lex $P418
-    new $P389, 'ExceptionHandler'
-    set_addr $P389, control_388
-    $P389."handle_types"(58)
-    push_eh $P389
+.sub "statement_control:sym<if>"  :subid("31_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_392
+.annotate "line", 117
+    .const 'Sub' $P420 = "32_1267204714.47172" 
+    capture_lex $P420
+    new $P391, 'ExceptionHandler'
+    set_addr $P391, control_390
+    $P391."handle_types"(58)
+    push_eh $P391
     .lex "self", self
-    .lex "$/", param_390
-.annotate "line", 115
-    new $P391, "Undef"
-    .lex "$count", $P391
-.annotate "line", 116
-    new $P392, "Undef"
-    .lex "$past", $P392
-.annotate "line", 115
-    find_lex $P393, "$/"
-    unless_null $P393, vivify_197
-    new $P393, "Hash"
-  vivify_197:
-    set $P394, $P393["xblock"]
-    unless_null $P394, vivify_198
+    .lex "$/", param_392
+.annotate "line", 118
+    new $P393, "Undef"
+    .lex "$count", $P393
+.annotate "line", 119
     new $P394, "Undef"
+    .lex "$past", $P394
+.annotate "line", 118
+    find_lex $P395, "$/"
+    unless_null $P395, vivify_197
+    $P395 = root_new ['parrot';'Hash']
+  vivify_197:
+    set $P396, $P395["xblock"]
+    unless_null $P396, vivify_198
+    new $P396, "Undef"
   vivify_198:
-    set $N395, $P394
-    new $P396, 'Float'
-    set $P396, $N395
-    sub $P397, $P396, 1
-    store_lex "$count", $P397
-.annotate "line", 116
-    find_lex $P398, "$count"
-    set $I399, $P398
-    find_lex $P400, "$/"
-    unless_null $P400, vivify_199
-    new $P400, "Hash"
+    set $N397, $P396
+    new $P398, 'Float'
+    set $P398, $N397
+    sub $P399, $P398, 1
+    store_lex "$count", $P399
+.annotate "line", 119
+    find_lex $P400, "$count"
+    set $I401, $P400
+    find_lex $P402, "$/"
+    unless_null $P402, vivify_199
+    $P402 = root_new ['parrot';'Hash']
   vivify_199:
-    set $P401, $P400["xblock"]
-    unless_null $P401, vivify_200
-    new $P401, "ResizablePMCArray"
+    set $P403, $P402["xblock"]
+    unless_null $P403, vivify_200
+    $P403 = root_new ['parrot';'ResizablePMCArray']
   vivify_200:
-    set $P402, $P401[$I399]
-    unless_null $P402, vivify_201
-    new $P402, "Undef"
+    set $P404, $P403[$I401]
+    unless_null $P404, vivify_201
+    new $P404, "Undef"
   vivify_201:
-    $P403 = $P402."ast"()
-    $P404 = "xblock_immediate"($P403)
-    store_lex "$past", $P404
-.annotate "line", 117
-    find_lex $P406, "$/"
-    unless_null $P406, vivify_202
-    new $P406, "Hash"
+    $P405 = $P404."ast"()
+    $P406 = "xblock_immediate"($P405)
+    store_lex "$past", $P406
+.annotate "line", 120
+    find_lex $P408, "$/"
+    unless_null $P408, vivify_202
+    $P408 = root_new ['parrot';'Hash']
   vivify_202:
-    set $P407, $P406["else"]
-    unless_null $P407, vivify_203
-    new $P407, "Undef"
+    set $P409, $P408["else"]
+    unless_null $P409, vivify_203
+    new $P409, "Undef"
   vivify_203:
-    unless $P407, if_405_end
-.annotate "line", 118
-    find_lex $P408, "$past"
-    find_lex $P409, "$/"
-    unless_null $P409, vivify_204
-    new $P409, "Hash"
+    unless $P409, if_407_end
+.annotate "line", 121
+    find_lex $P410, "$past"
+    find_lex $P411, "$/"
+    unless_null $P411, vivify_204
+    $P411 = root_new ['parrot';'Hash']
   vivify_204:
-    set $P410, $P409["else"]
-    unless_null $P410, vivify_205
-    new $P410, "ResizablePMCArray"
+    set $P412, $P411["else"]
+    unless_null $P412, vivify_205
+    $P412 = root_new ['parrot';'ResizablePMCArray']
   vivify_205:
-    set $P411, $P410[0]
-    unless_null $P411, vivify_206
-    new $P411, "Undef"
+    set $P413, $P412[0]
+    unless_null $P413, vivify_206
+    new $P413, "Undef"
   vivify_206:
-    $P412 = $P411."ast"()
-    $P413 = "block_immediate"($P412)
-    $P408."push"($P413)
-  if_405_end:
-.annotate "line", 121
-    new $P434, 'ExceptionHandler'
-    set_addr $P434, loop433_handler
-    $P434."handle_types"(65, 67, 66)
-    push_eh $P434
-  loop433_test:
-    find_lex $P414, "$count"
-    set $N415, $P414
-    isgt $I416, $N415, 0.0
-    unless $I416, loop433_done
-  loop433_redo:
-    .const 'Sub' $P418 = "32_1261064035.64813" 
-    capture_lex $P418
-    $P418()
-  loop433_next:
-    goto loop433_test
-  loop433_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P435, exception, 'type'
-    eq $P435, 65, loop433_next
-    eq $P435, 67, loop433_redo
-  loop433_done:
+    $P414 = $P413."ast"()
+    $P415 = "block_immediate"($P414)
+    $P410."push"($P415)
+  if_407_end:
+.annotate "line", 124
+    new $P436, 'ExceptionHandler'
+    set_addr $P436, loop435_handler
+    $P436."handle_types"(65, 67, 66)
+    push_eh $P436
+  loop435_test:
+    find_lex $P416, "$count"
+    set $N417, $P416
+    isgt $I418, $N417, 0.0
+    unless $I418, loop435_done
+  loop435_redo:
+    .const 'Sub' $P420 = "32_1267204714.47172" 
+    capture_lex $P420
+    $P420()
+  loop435_next:
+    goto loop435_test
+  loop435_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P437, exception, 'type'
+    eq $P437, 65, loop435_next
+    eq $P437, 67, loop435_redo
+  loop435_done:
     pop_eh 
-.annotate "line", 127
-    find_lex $P436, "$/"
-    find_lex $P437, "$past"
-    $P438 = $P436."!make"($P437)
-.annotate "line", 114
-    .return ($P438)
-  control_388:
+.annotate "line", 130
+    find_lex $P438, "$/"
+    find_lex $P439, "$past"
+    $P440 = $P438."!make"($P439)
+.annotate "line", 117
+    .return ($P440)
+  control_390:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P439, exception, "payload"
-    .return ($P439)
+    getattribute $P441, exception, "payload"
+    .return ($P441)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block417"  :anon :subid("32_1261064035.64813") :outer("31_1261064035.64813")
-.annotate "line", 123
-    new $P419, "Undef"
-    .lex "$else", $P419
-.annotate "line", 121
-    find_lex $P420, "$count"
-    clone $P421, $P420
-    dec $P420
-.annotate "line", 123
-    find_lex $P422, "$past"
-    store_lex "$else", $P422
+.sub "_block419"  :anon :subid("32_1267204714.47172") :outer("31_1267204714.47172")
+.annotate "line", 126
+    new $P421, "Undef"
+    .lex "$else", $P421
 .annotate "line", 124
-    find_lex $P423, "$count"
-    set $I424, $P423
-    find_lex $P425, "$/"
-    unless_null $P425, vivify_207
-    new $P425, "Hash"
+    find_lex $P422, "$count"
+    clone $P423, $P422
+    dec $P422
+.annotate "line", 126
+    find_lex $P424, "$past"
+    store_lex "$else", $P424
+.annotate "line", 127
+    find_lex $P425, "$count"
+    set $I426, $P425
+    find_lex $P427, "$/"
+    unless_null $P427, vivify_207
+    $P427 = root_new ['parrot';'Hash']
   vivify_207:
-    set $P426, $P425["xblock"]
-    unless_null $P426, vivify_208
-    new $P426, "ResizablePMCArray"
+    set $P428, $P427["xblock"]
+    unless_null $P428, vivify_208
+    $P428 = root_new ['parrot';'ResizablePMCArray']
   vivify_208:
-    set $P427, $P426[$I424]
-    unless_null $P427, vivify_209
-    new $P427, "Undef"
+    set $P429, $P428[$I426]
+    unless_null $P429, vivify_209
+    new $P429, "Undef"
   vivify_209:
-    $P428 = $P427."ast"()
-    $P429 = "xblock_immediate"($P428)
-    store_lex "$past", $P429
-.annotate "line", 125
-    find_lex $P430, "$past"
-    find_lex $P431, "$else"
-    $P432 = $P430."push"($P431)
-.annotate "line", 121
-    .return ($P432)
+    $P430 = $P429."ast"()
+    $P431 = "xblock_immediate"($P430)
+    store_lex "$past", $P431
+.annotate "line", 128
+    find_lex $P432, "$past"
+    find_lex $P433, "$else"
+    $P434 = $P432."push"($P433)
+.annotate "line", 124
+    .return ($P434)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<unless>"  :subid("33_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_443
-.annotate "line", 130
-    new $P442, 'ExceptionHandler'
-    set_addr $P442, control_441
-    $P442."handle_types"(58)
-    push_eh $P442
+.sub "statement_control:sym<unless>"  :subid("33_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_445
+.annotate "line", 133
+    new $P444, 'ExceptionHandler'
+    set_addr $P444, control_443
+    $P444."handle_types"(58)
+    push_eh $P444
     .lex "self", self
-    .lex "$/", param_443
-.annotate "line", 131
-    new $P444, "Undef"
-    .lex "$past", $P444
-    find_lex $P445, "$/"
-    unless_null $P445, vivify_210
-    new $P445, "Hash"
-  vivify_210:
-    set $P446, $P445["xblock"]
-    unless_null $P446, vivify_211
+    .lex "$/", param_445
+.annotate "line", 134
     new $P446, "Undef"
+    .lex "$past", $P446
+    find_lex $P447, "$/"
+    unless_null $P447, vivify_210
+    $P447 = root_new ['parrot';'Hash']
+  vivify_210:
+    set $P448, $P447["xblock"]
+    unless_null $P448, vivify_211
+    new $P448, "Undef"
   vivify_211:
-    $P447 = $P446."ast"()
-    $P448 = "xblock_immediate"($P447)
-    store_lex "$past", $P448
-.annotate "line", 132
-    find_lex $P449, "$past"
-    $P449."pasttype"("unless")
-.annotate "line", 133
-    find_lex $P450, "$/"
+    $P449 = $P448."ast"()
+    $P450 = "xblock_immediate"($P449)
+    store_lex "$past", $P450
+.annotate "line", 135
     find_lex $P451, "$past"
-    $P452 = $P450."!make"($P451)
-.annotate "line", 130
-    .return ($P452)
-  control_441:
+    $P451."pasttype"("unless")
+.annotate "line", 136
+    find_lex $P452, "$/"
+    find_lex $P453, "$past"
+    $P454 = $P452."!make"($P453)
+.annotate "line", 133
+    .return ($P454)
+  control_443:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P453, exception, "payload"
-    .return ($P453)
+    getattribute $P455, exception, "payload"
+    .return ($P455)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<while>"  :subid("34_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_457
-.annotate "line", 136
-    new $P456, 'ExceptionHandler'
-    set_addr $P456, control_455
-    $P456."handle_types"(58)
-    push_eh $P456
+.sub "statement_control:sym<while>"  :subid("34_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_459
+.annotate "line", 139
+    new $P458, 'ExceptionHandler'
+    set_addr $P458, control_457
+    $P458."handle_types"(58)
+    push_eh $P458
     .lex "self", self
-    .lex "$/", param_457
-.annotate "line", 137
-    new $P458, "Undef"
-    .lex "$past", $P458
-    find_lex $P459, "$/"
-    unless_null $P459, vivify_212
-    new $P459, "Hash"
-  vivify_212:
-    set $P460, $P459["xblock"]
-    unless_null $P460, vivify_213
+    .lex "$/", param_459
+.annotate "line", 140
     new $P460, "Undef"
+    .lex "$past", $P460
+    find_lex $P461, "$/"
+    unless_null $P461, vivify_212
+    $P461 = root_new ['parrot';'Hash']
+  vivify_212:
+    set $P462, $P461["xblock"]
+    unless_null $P462, vivify_213
+    new $P462, "Undef"
   vivify_213:
-    $P461 = $P460."ast"()
-    $P462 = "xblock_immediate"($P461)
-    store_lex "$past", $P462
-.annotate "line", 138
-    find_lex $P463, "$past"
-    find_lex $P464, "$/"
-    unless_null $P464, vivify_214
-    new $P464, "Hash"
+    $P463 = $P462."ast"()
+    $P464 = "xblock_immediate"($P463)
+    store_lex "$past", $P464
+.annotate "line", 141
+    find_lex $P465, "$past"
+    find_lex $P466, "$/"
+    unless_null $P466, vivify_214
+    $P466 = root_new ['parrot';'Hash']
   vivify_214:
-    set $P465, $P464["sym"]
-    unless_null $P465, vivify_215
-    new $P465, "Undef"
+    set $P467, $P466["sym"]
+    unless_null $P467, vivify_215
+    new $P467, "Undef"
   vivify_215:
-    set $S466, $P465
-    $P463."pasttype"($S466)
+    set $S468, $P467
+    $P465."pasttype"($S468)
+.annotate "line", 142
+    find_lex $P469, "$/"
+    find_lex $P470, "$past"
+    $P471 = $P469."!make"($P470)
 .annotate "line", 139
-    find_lex $P467, "$/"
-    find_lex $P468, "$past"
-    $P469 = $P467."!make"($P468)
-.annotate "line", 136
-    .return ($P469)
-  control_455:
+    .return ($P471)
+  control_457:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P470, exception, "payload"
-    .return ($P470)
+    getattribute $P472, exception, "payload"
+    .return ($P472)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<repeat>"  :subid("35_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_474
-.annotate "line", 142
-    new $P473, 'ExceptionHandler'
-    set_addr $P473, control_472
-    $P473."handle_types"(58)
-    push_eh $P473
+.sub "statement_control:sym<repeat>"  :subid("35_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_476
+.annotate "line", 145
+    new $P475, 'ExceptionHandler'
+    set_addr $P475, control_474
+    $P475."handle_types"(58)
+    push_eh $P475
     .lex "self", self
-    .lex "$/", param_474
-.annotate "line", 143
-    new $P475, "Undef"
-    .lex "$pasttype", $P475
-.annotate "line", 144
-    new $P476, "Undef"
-    .lex "$past", $P476
-.annotate "line", 143
-    new $P477, "String"
-    assign $P477, "repeat_"
-    find_lex $P478, "$/"
-    unless_null $P478, vivify_216
-    new $P478, "Hash"
+    .lex "$/", param_476
+.annotate "line", 146
+    new $P477, "Undef"
+    .lex "$pasttype", $P477
+.annotate "line", 147
+    new $P478, "Undef"
+    .lex "$past", $P478
+.annotate "line", 146
+    new $P479, "String"
+    assign $P479, "repeat_"
+    find_lex $P480, "$/"
+    unless_null $P480, vivify_216
+    $P480 = root_new ['parrot';'Hash']
   vivify_216:
-    set $P479, $P478["wu"]
-    unless_null $P479, vivify_217
-    new $P479, "Undef"
+    set $P481, $P480["wu"]
+    unless_null $P481, vivify_217
+    new $P481, "Undef"
   vivify_217:
-    set $S480, $P479
-    concat $P481, $P477, $S480
-    store_lex "$pasttype", $P481
-    find_lex $P482, "$past"
-.annotate "line", 145
-    find_lex $P484, "$/"
-    unless_null $P484, vivify_218
-    new $P484, "Hash"
+    set $S482, $P481
+    concat $P483, $P479, $S482
+    store_lex "$pasttype", $P483
+    find_lex $P484, "$past"
+.annotate "line", 148
+    find_lex $P486, "$/"
+    unless_null $P486, vivify_218
+    $P486 = root_new ['parrot';'Hash']
   vivify_218:
-    set $P485, $P484["xblock"]
-    unless_null $P485, vivify_219
-    new $P485, "Undef"
+    set $P487, $P486["xblock"]
+    unless_null $P487, vivify_219
+    new $P487, "Undef"
   vivify_219:
-    if $P485, if_483
-.annotate "line", 150
-    get_hll_global $P492, ["PAST"], "Op"
-    find_lex $P493, "$/"
-    unless_null $P493, vivify_220
-    new $P493, "Hash"
+    if $P487, if_485
+.annotate "line", 153
+    get_hll_global $P494, ["PAST"], "Op"
+    find_lex $P495, "$/"
+    unless_null $P495, vivify_220
+    $P495 = root_new ['parrot';'Hash']
   vivify_220:
-    set $P494, $P493["EXPR"]
-    unless_null $P494, vivify_221
-    new $P494, "Undef"
+    set $P496, $P495["EXPR"]
+    unless_null $P496, vivify_221
+    new $P496, "Undef"
   vivify_221:
-    $P495 = $P494."ast"()
-    find_lex $P496, "$/"
-    unless_null $P496, vivify_222
-    new $P496, "Hash"
+    $P497 = $P496."ast"()
+    find_lex $P498, "$/"
+    unless_null $P498, vivify_222
+    $P498 = root_new ['parrot';'Hash']
   vivify_222:
-    set $P497, $P496["pblock"]
-    unless_null $P497, vivify_223
-    new $P497, "Undef"
+    set $P499, $P498["pblock"]
+    unless_null $P499, vivify_223
+    new $P499, "Undef"
   vivify_223:
-    $P498 = $P497."ast"()
-    $P499 = "block_immediate"($P498)
-    find_lex $P500, "$pasttype"
-    find_lex $P501, "$/"
-    $P502 = $P492."new"($P495, $P499, $P500 :named("pasttype"), $P501 :named("node"))
-    store_lex "$past", $P502
+    $P500 = $P499."ast"()
+    $P501 = "block_immediate"($P500)
+    find_lex $P502, "$pasttype"
+    find_lex $P503, "$/"
+    $P504 = $P494."new"($P497, $P501, $P502 :named("pasttype"), $P503 :named("node"))
+    store_lex "$past", $P504
+.annotate "line", 152
+    goto if_485_end
+  if_485:
 .annotate "line", 149
-    goto if_483_end
-  if_483:
-.annotate "line", 146
-    find_lex $P486, "$/"
-    unless_null $P486, vivify_224
-    new $P486, "Hash"
+    find_lex $P488, "$/"
+    unless_null $P488, vivify_224
+    $P488 = root_new ['parrot';'Hash']
   vivify_224:
-    set $P487, $P486["xblock"]
-    unless_null $P487, vivify_225
-    new $P487, "Undef"
+    set $P489, $P488["xblock"]
+    unless_null $P489, vivify_225
+    new $P489, "Undef"
   vivify_225:
-    $P488 = $P487."ast"()
-    $P489 = "xblock_immediate"($P488)
-    store_lex "$past", $P489
-.annotate "line", 147
-    find_lex $P490, "$past"
-    find_lex $P491, "$pasttype"
-    $P490."pasttype"($P491)
-  if_483_end:
-.annotate "line", 153
-    find_lex $P503, "$/"
-    find_lex $P504, "$past"
-    $P505 = $P503."!make"($P504)
-.annotate "line", 142
-    .return ($P505)
-  control_472:
+    $P490 = $P489."ast"()
+    $P491 = "xblock_immediate"($P490)
+    store_lex "$past", $P491
+.annotate "line", 150
+    find_lex $P492, "$past"
+    find_lex $P493, "$pasttype"
+    $P492."pasttype"($P493)
+  if_485_end:
+.annotate "line", 156
+    find_lex $P505, "$/"
+    find_lex $P506, "$past"
+    $P507 = $P505."!make"($P506)
+.annotate "line", 145
+    .return ($P507)
+  control_474:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P506, exception, "payload"
-    .return ($P506)
+    getattribute $P508, exception, "payload"
+    .return ($P508)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<for>"  :subid("36_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_510
-.annotate "line", 156
-    new $P509, 'ExceptionHandler'
-    set_addr $P509, control_508
-    $P509."handle_types"(58)
-    push_eh $P509
-    .lex "self", self
-    .lex "$/", param_510
-.annotate "line", 157
-    new $P511, "Undef"
-    .lex "$past", $P511
+.sub "statement_control:sym<for>"  :subid("36_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_512
 .annotate "line", 159
-    new $P512, "Undef"
-    .lex "$block", $P512
-.annotate "line", 157
-    find_lex $P513, "$/"
-    unless_null $P513, vivify_226
-    new $P513, "Hash"
-  vivify_226:
-    set $P514, $P513["xblock"]
-    unless_null $P514, vivify_227
+    new $P511, 'ExceptionHandler'
+    set_addr $P511, control_510
+    $P511."handle_types"(58)
+    push_eh $P511
+    .lex "self", self
+    .lex "$/", param_512
+.annotate "line", 160
+    new $P513, "Undef"
+    .lex "$past", $P513
+.annotate "line", 162
     new $P514, "Undef"
+    .lex "$block", $P514
+.annotate "line", 160
+    find_lex $P515, "$/"
+    unless_null $P515, vivify_226
+    $P515 = root_new ['parrot';'Hash']
+  vivify_226:
+    set $P516, $P515["xblock"]
+    unless_null $P516, vivify_227
+    new $P516, "Undef"
   vivify_227:
-    $P515 = $P514."ast"()
-    store_lex "$past", $P515
-.annotate "line", 158
-    find_lex $P516, "$past"
-    $P516."pasttype"("for")
-.annotate "line", 159
-    find_lex $P517, "$past"
-    unless_null $P517, vivify_228
-    new $P517, "ResizablePMCArray"
+    $P517 = $P516."ast"()
+    store_lex "$past", $P517
+.annotate "line", 161
+    find_lex $P518, "$past"
+    $P518."pasttype"("for")
+.annotate "line", 162
+    find_lex $P519, "$past"
+    unless_null $P519, vivify_228
+    $P519 = root_new ['parrot';'ResizablePMCArray']
   vivify_228:
-    set $P518, $P517[1]
-    unless_null $P518, vivify_229
-    new $P518, "Undef"
+    set $P520, $P519[1]
+    unless_null $P520, vivify_229
+    new $P520, "Undef"
   vivify_229:
-    store_lex "$block", $P518
-.annotate "line", 160
-    find_lex $P520, "$block"
-    $P521 = $P520."arity"()
-    if $P521, unless_519_end
-.annotate "line", 161
+    store_lex "$block", $P520
+.annotate "line", 163
     find_lex $P522, "$block"
-    unless_null $P522, vivify_230
-    new $P522, "ResizablePMCArray"
+    $P523 = $P522."arity"()
+    if $P523, unless_521_end
+.annotate "line", 164
+    find_lex $P524, "$block"
+    unless_null $P524, vivify_230
+    $P524 = root_new ['parrot';'ResizablePMCArray']
   vivify_230:
-    set $P523, $P522[0]
-    unless_null $P523, vivify_231
-    new $P523, "Undef"
+    set $P525, $P524[0]
+    unless_null $P525, vivify_231
+    new $P525, "Undef"
   vivify_231:
-    get_hll_global $P524, ["PAST"], "Var"
-    $P525 = $P524."new"("$_" :named("name"), "parameter" :named("scope"))
-    $P523."push"($P525)
-.annotate "line", 162
-    find_lex $P526, "$block"
-    $P526."symbol"("$_", "lexical" :named("scope"))
-.annotate "line", 163
-    find_lex $P527, "$block"
-    $P527."arity"(1)
-  unless_519_end:
+    get_hll_global $P526, ["PAST"], "Var"
+    $P527 = $P526."new"("$_" :named("name"), "parameter" :named("scope"))
+    $P525."push"($P527)
 .annotate "line", 165
     find_lex $P528, "$block"
-    $P528."blocktype"("immediate")
+    $P528."symbol"("$_", "lexical" :named("scope"))
 .annotate "line", 166
-    find_lex $P529, "$/"
-    find_lex $P530, "$past"
-    $P531 = $P529."!make"($P530)
-.annotate "line", 156
-    .return ($P531)
-  control_508:
+    find_lex $P529, "$block"
+    $P529."arity"(1)
+  unless_521_end:
+.annotate "line", 168
+    find_lex $P530, "$block"
+    $P530."blocktype"("immediate")
+.annotate "line", 169
+    find_lex $P531, "$/"
+    find_lex $P532, "$past"
+    $P533 = $P531."!make"($P532)
+.annotate "line", 159
+    .return ($P533)
+  control_510:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P532, exception, "payload"
-    .return ($P532)
+    getattribute $P534, exception, "payload"
+    .return ($P534)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<return>"  :subid("37_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_536
-.annotate "line", 169
-    new $P535, 'ExceptionHandler'
-    set_addr $P535, control_534
-    $P535."handle_types"(58)
-    push_eh $P535
+.sub "statement_control:sym<return>"  :subid("37_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_538
+.annotate "line", 172
+    new $P537, 'ExceptionHandler'
+    set_addr $P537, control_536
+    $P537."handle_types"(58)
+    push_eh $P537
     .lex "self", self
-    .lex "$/", param_536
-.annotate "line", 170
-    find_lex $P537, "$/"
-    get_hll_global $P538, ["PAST"], "Op"
+    .lex "$/", param_538
+.annotate "line", 173
     find_lex $P539, "$/"
-    unless_null $P539, vivify_232
-    new $P539, "Hash"
+    get_hll_global $P540, ["PAST"], "Op"
+    find_lex $P541, "$/"
+    unless_null $P541, vivify_232
+    $P541 = root_new ['parrot';'Hash']
   vivify_232:
-    set $P540, $P539["EXPR"]
-    unless_null $P540, vivify_233
-    new $P540, "Undef"
+    set $P542, $P541["EXPR"]
+    unless_null $P542, vivify_233
+    new $P542, "Undef"
   vivify_233:
-    $P541 = $P540."ast"()
-    find_lex $P542, "$/"
-    $P543 = $P538."new"($P541, "return" :named("pasttype"), $P542 :named("node"))
-    $P544 = $P537."!make"($P543)
-.annotate "line", 169
-    .return ($P544)
-  control_534:
+    $P543 = $P542."ast"()
+    find_lex $P544, "$/"
+    $P545 = $P540."new"($P543, "return" :named("pasttype"), $P544 :named("node"))
+    $P546 = $P539."!make"($P545)
+.annotate "line", 172
+    .return ($P546)
+  control_536:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P545, exception, "payload"
-    .return ($P545)
+    getattribute $P547, exception, "payload"
+    .return ($P547)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CATCH>"  :subid("38_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_549
-.annotate "line", 173
-    new $P548, 'ExceptionHandler'
-    set_addr $P548, control_547
-    $P548."handle_types"(58)
-    push_eh $P548
-    .lex "self", self
-    .lex "$/", param_549
-.annotate "line", 174
-    new $P550, "Undef"
-    .lex "$block", $P550
-    find_lex $P551, "$/"
-    unless_null $P551, vivify_234
-    new $P551, "Hash"
-  vivify_234:
-    set $P552, $P551["block"]
-    unless_null $P552, vivify_235
+.sub "statement_control:sym<CATCH>"  :subid("38_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_551
+.annotate "line", 176
+    new $P550, 'ExceptionHandler'
+    set_addr $P550, control_549
+    $P550."handle_types"(58)
+    push_eh $P550
+    .lex "self", self
+    .lex "$/", param_551
+.annotate "line", 177
     new $P552, "Undef"
+    .lex "$block", $P552
+    find_lex $P553, "$/"
+    unless_null $P553, vivify_234
+    $P553 = root_new ['parrot';'Hash']
+  vivify_234:
+    set $P554, $P553["block"]
+    unless_null $P554, vivify_235
+    new $P554, "Undef"
   vivify_235:
-    $P553 = $P552."ast"()
-    store_lex "$block", $P553
-.annotate "line", 175
-    find_lex $P554, "$/"
-    find_lex $P555, "$block"
-    "push_block_handler"($P554, $P555)
-.annotate "line", 176
-    get_global $P556, "@BLOCK"
-    unless_null $P556, vivify_236
-    new $P556, "ResizablePMCArray"
+    $P555 = $P554."ast"()
+    store_lex "$block", $P555
+.annotate "line", 178
+    find_lex $P556, "$/"
+    find_lex $P557, "$block"
+    "push_block_handler"($P556, $P557)
+.annotate "line", 179
+    get_global $P558, "@BLOCK"
+    unless_null $P558, vivify_236
+    $P558 = root_new ['parrot';'ResizablePMCArray']
   vivify_236:
-    set $P557, $P556[0]
-    unless_null $P557, vivify_237
-    new $P557, "Undef"
-  vivify_237:
-    $P558 = $P557."handlers"()
     set $P559, $P558[0]
-    unless_null $P559, vivify_238
+    unless_null $P559, vivify_237
     new $P559, "Undef"
+  vivify_237:
+    $P560 = $P559."handlers"()
+    set $P561, $P560[0]
+    unless_null $P561, vivify_238
+    new $P561, "Undef"
   vivify_238:
-    $P559."handle_types_except"("CONTROL")
-.annotate "line", 177
-    find_lex $P560, "$/"
-    get_hll_global $P561, ["PAST"], "Stmts"
+    $P561."handle_types_except"("CONTROL")
+.annotate "line", 180
     find_lex $P562, "$/"
-    $P563 = $P561."new"($P562 :named("node"))
-    $P564 = $P560."!make"($P563)
-.annotate "line", 173
-    .return ($P564)
-  control_547:
+    get_hll_global $P563, ["PAST"], "Stmts"
+    find_lex $P564, "$/"
+    $P565 = $P563."new"($P564 :named("node"))
+    $P566 = $P562."!make"($P565)
+.annotate "line", 176
+    .return ($P566)
+  control_549:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P565, exception, "payload"
-    .return ($P565)
+    getattribute $P567, exception, "payload"
+    .return ($P567)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CONTROL>"  :subid("39_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_569
-.annotate "line", 180
-    new $P568, 'ExceptionHandler'
-    set_addr $P568, control_567
-    $P568."handle_types"(58)
-    push_eh $P568
+.sub "statement_control:sym<CONTROL>"  :subid("39_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_571
+.annotate "line", 183
+    new $P570, 'ExceptionHandler'
+    set_addr $P570, control_569
+    $P570."handle_types"(58)
+    push_eh $P570
     .lex "self", self
-    .lex "$/", param_569
-.annotate "line", 181
-    new $P570, "Undef"
-    .lex "$block", $P570
-    find_lex $P571, "$/"
-    unless_null $P571, vivify_239
-    new $P571, "Hash"
-  vivify_239:
-    set $P572, $P571["block"]
-    unless_null $P572, vivify_240
+    .lex "$/", param_571
+.annotate "line", 184
     new $P572, "Undef"
+    .lex "$block", $P572
+    find_lex $P573, "$/"
+    unless_null $P573, vivify_239
+    $P573 = root_new ['parrot';'Hash']
+  vivify_239:
+    set $P574, $P573["block"]
+    unless_null $P574, vivify_240
+    new $P574, "Undef"
   vivify_240:
-    $P573 = $P572."ast"()
-    store_lex "$block", $P573
-.annotate "line", 182
-    find_lex $P574, "$/"
-    find_lex $P575, "$block"
-    "push_block_handler"($P574, $P575)
-.annotate "line", 183
-    get_global $P576, "@BLOCK"
-    unless_null $P576, vivify_241
-    new $P576, "ResizablePMCArray"
+    $P575 = $P574."ast"()
+    store_lex "$block", $P575
+.annotate "line", 185
+    find_lex $P576, "$/"
+    find_lex $P577, "$block"
+    "push_block_handler"($P576, $P577)
+.annotate "line", 186
+    get_global $P578, "@BLOCK"
+    unless_null $P578, vivify_241
+    $P578 = root_new ['parrot';'ResizablePMCArray']
   vivify_241:
-    set $P577, $P576[0]
-    unless_null $P577, vivify_242
-    new $P577, "Undef"
-  vivify_242:
-    $P578 = $P577."handlers"()
     set $P579, $P578[0]
-    unless_null $P579, vivify_243
+    unless_null $P579, vivify_242
     new $P579, "Undef"
+  vivify_242:
+    $P580 = $P579."handlers"()
+    set $P581, $P580[0]
+    unless_null $P581, vivify_243
+    new $P581, "Undef"
   vivify_243:
-    $P579."handle_types"("CONTROL")
-.annotate "line", 184
-    find_lex $P580, "$/"
-    get_hll_global $P581, ["PAST"], "Stmts"
+    $P581."handle_types"("CONTROL")
+.annotate "line", 187
     find_lex $P582, "$/"
-    $P583 = $P581."new"($P582 :named("node"))
-    $P584 = $P580."!make"($P583)
-.annotate "line", 180
-    .return ($P584)
-  control_567:
+    get_hll_global $P583, ["PAST"], "Stmts"
+    find_lex $P584, "$/"
+    $P585 = $P583."new"($P584 :named("node"))
+    $P586 = $P582."!make"($P585)
+.annotate "line", 183
+    .return ($P586)
+  control_569:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P585, exception, "payload"
-    .return ($P585)
+    getattribute $P587, exception, "payload"
+    .return ($P587)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<INIT>"  :subid("40_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_590
-.annotate "line", 224
-    new $P589, 'ExceptionHandler'
-    set_addr $P589, control_588
-    $P589."handle_types"(58)
-    push_eh $P589
-    .lex "self", self
-    .lex "$/", param_590
-.annotate "line", 225
-    get_global $P591, "@BLOCK"
-    unless_null $P591, vivify_244
-    new $P591, "ResizablePMCArray"
+.sub "statement_prefix:sym<INIT>"  :subid("40_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_592
+.annotate "line", 227
+    new $P591, 'ExceptionHandler'
+    set_addr $P591, control_590
+    $P591."handle_types"(58)
+    push_eh $P591
+    .lex "self", self
+    .lex "$/", param_592
+.annotate "line", 228
+    get_global $P593, "@BLOCK"
+    unless_null $P593, vivify_244
+    $P593 = root_new ['parrot';'ResizablePMCArray']
   vivify_244:
-    set $P592, $P591[0]
-    unless_null $P592, vivify_245
-    new $P592, "Undef"
+    set $P594, $P593[0]
+    unless_null $P594, vivify_245
+    new $P594, "Undef"
   vivify_245:
-    $P593 = $P592."loadinit"()
-    find_lex $P594, "$/"
-    unless_null $P594, vivify_246
-    new $P594, "Hash"
+    $P595 = $P594."loadinit"()
+    find_lex $P596, "$/"
+    unless_null $P596, vivify_246
+    $P596 = root_new ['parrot';'Hash']
   vivify_246:
-    set $P595, $P594["blorst"]
-    unless_null $P595, vivify_247
-    new $P595, "Undef"
+    set $P597, $P596["blorst"]
+    unless_null $P597, vivify_247
+    new $P597, "Undef"
   vivify_247:
-    $P596 = $P595."ast"()
-    $P593."push"($P596)
-.annotate "line", 226
-    find_lex $P597, "$/"
-    get_hll_global $P598, ["PAST"], "Stmts"
+    $P598 = $P597."ast"()
+    $P595."push"($P598)
+.annotate "line", 229
     find_lex $P599, "$/"
-    $P600 = $P598."new"($P599 :named("node"))
-    $P601 = $P597."!make"($P600)
-.annotate "line", 224
-    .return ($P601)
-  control_588:
+    get_hll_global $P600, ["PAST"], "Stmts"
+    find_lex $P601, "$/"
+    $P602 = $P600."new"($P601 :named("node"))
+    $P603 = $P599."!make"($P602)
+.annotate "line", 227
+    .return ($P603)
+  control_590:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P602, exception, "payload"
-    .return ($P602)
+    getattribute $P604, exception, "payload"
+    .return ($P604)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<try>"  :subid("41_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_606
-.annotate "line", 229
-    new $P605, 'ExceptionHandler'
-    set_addr $P605, control_604
-    $P605."handle_types"(58)
-    push_eh $P605
+.sub "statement_prefix:sym<try>"  :subid("41_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_608
+.annotate "line", 232
+    new $P607, 'ExceptionHandler'
+    set_addr $P607, control_606
+    $P607."handle_types"(58)
+    push_eh $P607
     .lex "self", self
-    .lex "$/", param_606
-.annotate "line", 230
-    new $P607, "Undef"
-    .lex "$past", $P607
-    find_lex $P608, "$/"
-    unless_null $P608, vivify_248
-    new $P608, "Hash"
-  vivify_248:
-    set $P609, $P608["blorst"]
-    unless_null $P609, vivify_249
+    .lex "$/", param_608
+.annotate "line", 233
     new $P609, "Undef"
+    .lex "$past", $P609
+    find_lex $P610, "$/"
+    unless_null $P610, vivify_248
+    $P610 = root_new ['parrot';'Hash']
+  vivify_248:
+    set $P611, $P610["blorst"]
+    unless_null $P611, vivify_249
+    new $P611, "Undef"
   vivify_249:
-    $P610 = $P609."ast"()
-    store_lex "$past", $P610
-.annotate "line", 231
-    find_lex $P612, "$past"
-    $S613 = $P612."WHAT"()
-    isne $I614, $S613, "PAST::Block()"
-    unless $I614, if_611_end
-.annotate "line", 232
-    get_hll_global $P615, ["PAST"], "Block"
-    find_lex $P616, "$past"
-    find_lex $P617, "$/"
-    $P618 = $P615."new"($P616, "immediate" :named("blocktype"), $P617 :named("node"))
-    store_lex "$past", $P618
-  if_611_end:
+    $P612 = $P611."ast"()
+    store_lex "$past", $P612
 .annotate "line", 234
-    find_lex $P620, "$past"
-    $P621 = $P620."handlers"()
-    if $P621, unless_619_end
+    find_lex $P614, "$past"
+    $S615 = $P614."WHAT"()
+    isne $I616, $S615, "PAST::Block()"
+    unless $I616, if_613_end
 .annotate "line", 235
-    find_lex $P622, "$past"
-    get_hll_global $P623, ["PAST"], "Control"
+    get_hll_global $P617, ["PAST"], "Block"
+    find_lex $P618, "$past"
+    find_lex $P619, "$/"
+    $P620 = $P617."new"($P618, "immediate" :named("blocktype"), $P619 :named("node"))
+    store_lex "$past", $P620
+  if_613_end:
 .annotate "line", 237
-    get_hll_global $P624, ["PAST"], "Stmts"
+    find_lex $P622, "$past"
+    $P623 = $P622."handlers"()
+    if $P623, unless_621_end
 .annotate "line", 238
-    get_hll_global $P625, ["PAST"], "Op"
-.annotate "line", 239
-    get_hll_global $P626, ["PAST"], "Var"
+    find_lex $P624, "$past"
+    get_hll_global $P625, ["PAST"], "Control"
 .annotate "line", 240
-    get_hll_global $P627, ["PAST"], "Var"
-    $P628 = $P627."new"("register" :named("scope"), "exception" :named("name"))
-    $P629 = $P626."new"($P628, "handled", "keyed" :named("scope"))
-.annotate "line", 239
-    $P630 = $P625."new"($P629, 1, "bind" :named("pasttype"))
+    get_hll_global $P626, ["PAST"], "Stmts"
+.annotate "line", 241
+    get_hll_global $P627, ["PAST"], "Op"
+.annotate "line", 242
+    get_hll_global $P628, ["PAST"], "Var"
+.annotate "line", 243
+    get_hll_global $P629, ["PAST"], "Var"
+    $P630 = $P629."new"("register" :named("scope"), "exception" :named("name"))
+    $P631 = $P628."new"($P630, "handled", "keyed" :named("scope"))
+.annotate "line", 242
+    $P632 = $P627."new"($P631, 1, "bind" :named("pasttype"))
+.annotate "line", 241
+    $P633 = $P626."new"($P632)
+.annotate "line", 240
+    $P634 = $P625."new"($P633, "CONTROL" :named("handle_types_except"))
 .annotate "line", 238
-    $P631 = $P624."new"($P630)
-.annotate "line", 237
-    $P632 = $P623."new"($P631, "CONTROL" :named("handle_types_except"))
-.annotate "line", 235
-    new $P633, "ResizablePMCArray"
-    push $P633, $P632
-    $P622."handlers"($P633)
-  unless_619_end:
-.annotate "line", 249
-    find_lex $P634, "$/"
-    find_lex $P635, "$past"
-    $P636 = $P634."!make"($P635)
-.annotate "line", 229
-    .return ($P636)
-  control_604:
+    new $P635, "ResizablePMCArray"
+    push $P635, $P634
+    $P624."handlers"($P635)
+  unless_621_end:
+.annotate "line", 252
+    find_lex $P636, "$/"
+    find_lex $P637, "$past"
+    $P638 = $P636."!make"($P637)
+.annotate "line", 232
+    .return ($P638)
+  control_606:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P637, exception, "payload"
-    .return ($P637)
+    getattribute $P639, exception, "payload"
+    .return ($P639)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "blorst"  :subid("42_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_641
-.annotate "line", 252
-    new $P640, 'ExceptionHandler'
-    set_addr $P640, control_639
-    $P640."handle_types"(58)
-    push_eh $P640
+.sub "blorst"  :subid("42_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_643
+.annotate "line", 255
+    new $P642, 'ExceptionHandler'
+    set_addr $P642, control_641
+    $P642."handle_types"(58)
+    push_eh $P642
     .lex "self", self
-    .lex "$/", param_641
-.annotate "line", 253
-    find_lex $P642, "$/"
-.annotate "line", 254
-    find_lex $P645, "$/"
-    unless_null $P645, vivify_250
-    new $P645, "Hash"
+    .lex "$/", param_643
+.annotate "line", 256
+    find_lex $P644, "$/"
+.annotate "line", 257
+    find_lex $P647, "$/"
+    unless_null $P647, vivify_250
+    $P647 = root_new ['parrot';'Hash']
   vivify_250:
-    set $P646, $P645["block"]
-    unless_null $P646, vivify_251
-    new $P646, "Undef"
+    set $P648, $P647["block"]
+    unless_null $P648, vivify_251
+    new $P648, "Undef"
   vivify_251:
-    if $P646, if_644
-.annotate "line", 255
-    find_lex $P651, "$/"
-    unless_null $P651, vivify_252
-    new $P651, "Hash"
+    if $P648, if_646
+.annotate "line", 258
+    find_lex $P653, "$/"
+    unless_null $P653, vivify_252
+    $P653 = root_new ['parrot';'Hash']
   vivify_252:
-    set $P652, $P651["statement"]
-    unless_null $P652, vivify_253
-    new $P652, "Undef"
+    set $P654, $P653["statement"]
+    unless_null $P654, vivify_253
+    new $P654, "Undef"
   vivify_253:
-    $P653 = $P652."ast"()
-    set $P643, $P653
-.annotate "line", 254
-    goto if_644_end
-  if_644:
-    find_lex $P647, "$/"
-    unless_null $P647, vivify_254
-    new $P647, "Hash"
+    $P655 = $P654."ast"()
+    set $P645, $P655
+.annotate "line", 257
+    goto if_646_end
+  if_646:
+    find_lex $P649, "$/"
+    unless_null $P649, vivify_254
+    $P649 = root_new ['parrot';'Hash']
   vivify_254:
-    set $P648, $P647["block"]
-    unless_null $P648, vivify_255
-    new $P648, "Undef"
+    set $P650, $P649["block"]
+    unless_null $P650, vivify_255
+    new $P650, "Undef"
   vivify_255:
-    $P649 = $P648."ast"()
-    $P650 = "block_immediate"($P649)
-    set $P643, $P650
-  if_644_end:
-    $P654 = $P642."!make"($P643)
-.annotate "line", 252
-    .return ($P654)
-  control_639:
+    $P651 = $P650."ast"()
+    $P652 = "block_immediate"($P651)
+    set $P645, $P652
+  if_646_end:
+    $P656 = $P644."!make"($P645)
+.annotate "line", 255
+    .return ($P656)
+  control_641:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P655, exception, "payload"
-    .return ($P655)
+    getattribute $P657, exception, "payload"
+    .return ($P657)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<if>"  :subid("43_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_659
-.annotate "line", 260
-    new $P658, 'ExceptionHandler'
-    set_addr $P658, control_657
-    $P658."handle_types"(58)
-    push_eh $P658
-    .lex "self", self
-    .lex "$/", param_659
-    find_lex $P660, "$/"
-    find_lex $P661, "$/"
-    unless_null $P661, vivify_256
-    new $P661, "Hash"
+.sub "statement_mod_cond:sym<if>"  :subid("43_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_661
+.annotate "line", 263
+    new $P660, 'ExceptionHandler'
+    set_addr $P660, control_659
+    $P660."handle_types"(58)
+    push_eh $P660
+    .lex "self", self
+    .lex "$/", param_661
+    find_lex $P662, "$/"
+    find_lex $P663, "$/"
+    unless_null $P663, vivify_256
+    $P663 = root_new ['parrot';'Hash']
   vivify_256:
-    set $P662, $P661["cond"]
-    unless_null $P662, vivify_257
-    new $P662, "Undef"
+    set $P664, $P663["cond"]
+    unless_null $P664, vivify_257
+    new $P664, "Undef"
   vivify_257:
-    $P663 = $P662."ast"()
-    $P664 = $P660."!make"($P663)
-    .return ($P664)
-  control_657:
+    $P665 = $P664."ast"()
+    $P666 = $P662."!make"($P665)
+    .return ($P666)
+  control_659:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P665, exception, "payload"
-    .return ($P665)
+    getattribute $P667, exception, "payload"
+    .return ($P667)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<unless>"  :subid("44_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_669
-.annotate "line", 261
-    new $P668, 'ExceptionHandler'
-    set_addr $P668, control_667
-    $P668."handle_types"(58)
-    push_eh $P668
-    .lex "self", self
-    .lex "$/", param_669
-    find_lex $P670, "$/"
-    find_lex $P671, "$/"
-    unless_null $P671, vivify_258
-    new $P671, "Hash"
+.sub "statement_mod_cond:sym<unless>"  :subid("44_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_671
+.annotate "line", 264
+    new $P670, 'ExceptionHandler'
+    set_addr $P670, control_669
+    $P670."handle_types"(58)
+    push_eh $P670
+    .lex "self", self
+    .lex "$/", param_671
+    find_lex $P672, "$/"
+    find_lex $P673, "$/"
+    unless_null $P673, vivify_258
+    $P673 = root_new ['parrot';'Hash']
   vivify_258:
-    set $P672, $P671["cond"]
-    unless_null $P672, vivify_259
-    new $P672, "Undef"
+    set $P674, $P673["cond"]
+    unless_null $P674, vivify_259
+    new $P674, "Undef"
   vivify_259:
-    $P673 = $P672."ast"()
-    $P674 = $P670."!make"($P673)
-    .return ($P674)
-  control_667:
+    $P675 = $P674."ast"()
+    $P676 = $P672."!make"($P675)
+    .return ($P676)
+  control_669:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P675, exception, "payload"
-    .return ($P675)
+    getattribute $P677, exception, "payload"
+    .return ($P677)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<while>"  :subid("45_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_679
-.annotate "line", 263
-    new $P678, 'ExceptionHandler'
-    set_addr $P678, control_677
-    $P678."handle_types"(58)
-    push_eh $P678
-    .lex "self", self
-    .lex "$/", param_679
-    find_lex $P680, "$/"
-    find_lex $P681, "$/"
-    unless_null $P681, vivify_260
-    new $P681, "Hash"
+.sub "statement_mod_loop:sym<while>"  :subid("45_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_681
+.annotate "line", 266
+    new $P680, 'ExceptionHandler'
+    set_addr $P680, control_679
+    $P680."handle_types"(58)
+    push_eh $P680
+    .lex "self", self
+    .lex "$/", param_681
+    find_lex $P682, "$/"
+    find_lex $P683, "$/"
+    unless_null $P683, vivify_260
+    $P683 = root_new ['parrot';'Hash']
   vivify_260:
-    set $P682, $P681["cond"]
-    unless_null $P682, vivify_261
-    new $P682, "Undef"
+    set $P684, $P683["cond"]
+    unless_null $P684, vivify_261
+    new $P684, "Undef"
   vivify_261:
-    $P683 = $P682."ast"()
-    $P684 = $P680."!make"($P683)
-    .return ($P684)
-  control_677:
+    $P685 = $P684."ast"()
+    $P686 = $P682."!make"($P685)
+    .return ($P686)
+  control_679:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P685, exception, "payload"
-    .return ($P685)
+    getattribute $P687, exception, "payload"
+    .return ($P687)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<until>"  :subid("46_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_689
-.annotate "line", 264
-    new $P688, 'ExceptionHandler'
-    set_addr $P688, control_687
-    $P688."handle_types"(58)
-    push_eh $P688
-    .lex "self", self
-    .lex "$/", param_689
-    find_lex $P690, "$/"
-    find_lex $P691, "$/"
-    unless_null $P691, vivify_262
-    new $P691, "Hash"
+.sub "statement_mod_loop:sym<until>"  :subid("46_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_691
+.annotate "line", 267
+    new $P690, 'ExceptionHandler'
+    set_addr $P690, control_689
+    $P690."handle_types"(58)
+    push_eh $P690
+    .lex "self", self
+    .lex "$/", param_691
+    find_lex $P692, "$/"
+    find_lex $P693, "$/"
+    unless_null $P693, vivify_262
+    $P693 = root_new ['parrot';'Hash']
   vivify_262:
-    set $P692, $P691["cond"]
-    unless_null $P692, vivify_263
-    new $P692, "Undef"
+    set $P694, $P693["cond"]
+    unless_null $P694, vivify_263
+    new $P694, "Undef"
   vivify_263:
-    $P693 = $P692."ast"()
-    $P694 = $P690."!make"($P693)
-    .return ($P694)
-  control_687:
+    $P695 = $P694."ast"()
+    $P696 = $P692."!make"($P695)
+    .return ($P696)
+  control_689:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P695, exception, "payload"
-    .return ($P695)
+    getattribute $P697, exception, "payload"
+    .return ($P697)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<fatarrow>"  :subid("47_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_699
-.annotate "line", 268
-    new $P698, 'ExceptionHandler'
-    set_addr $P698, control_697
-    $P698."handle_types"(58)
-    push_eh $P698
-    .lex "self", self
-    .lex "$/", param_699
-    find_lex $P700, "$/"
-    find_lex $P701, "$/"
-    unless_null $P701, vivify_264
-    new $P701, "Hash"
+.sub "term:sym<fatarrow>"  :subid("47_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_701
+.annotate "line", 271
+    new $P700, 'ExceptionHandler'
+    set_addr $P700, control_699
+    $P700."handle_types"(58)
+    push_eh $P700
+    .lex "self", self
+    .lex "$/", param_701
+    find_lex $P702, "$/"
+    find_lex $P703, "$/"
+    unless_null $P703, vivify_264
+    $P703 = root_new ['parrot';'Hash']
   vivify_264:
-    set $P702, $P701["fatarrow"]
-    unless_null $P702, vivify_265
-    new $P702, "Undef"
+    set $P704, $P703["fatarrow"]
+    unless_null $P704, vivify_265
+    new $P704, "Undef"
   vivify_265:
-    $P703 = $P702."ast"()
-    $P704 = $P700."!make"($P703)
-    .return ($P704)
-  control_697:
+    $P705 = $P704."ast"()
+    $P706 = $P702."!make"($P705)
+    .return ($P706)
+  control_699:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P705, exception, "payload"
-    .return ($P705)
+    getattribute $P707, exception, "payload"
+    .return ($P707)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<colonpair>"  :subid("48_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_709
-.annotate "line", 269
-    new $P708, 'ExceptionHandler'
-    set_addr $P708, control_707
-    $P708."handle_types"(58)
-    push_eh $P708
-    .lex "self", self
-    .lex "$/", param_709
-    find_lex $P710, "$/"
-    find_lex $P711, "$/"
-    unless_null $P711, vivify_266
-    new $P711, "Hash"
+.sub "term:sym<colonpair>"  :subid("48_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_711
+.annotate "line", 272
+    new $P710, 'ExceptionHandler'
+    set_addr $P710, control_709
+    $P710."handle_types"(58)
+    push_eh $P710
+    .lex "self", self
+    .lex "$/", param_711
+    find_lex $P712, "$/"
+    find_lex $P713, "$/"
+    unless_null $P713, vivify_266
+    $P713 = root_new ['parrot';'Hash']
   vivify_266:
-    set $P712, $P711["colonpair"]
-    unless_null $P712, vivify_267
-    new $P712, "Undef"
+    set $P714, $P713["colonpair"]
+    unless_null $P714, vivify_267
+    new $P714, "Undef"
   vivify_267:
-    $P713 = $P712."ast"()
-    $P714 = $P710."!make"($P713)
-    .return ($P714)
-  control_707:
+    $P715 = $P714."ast"()
+    $P716 = $P712."!make"($P715)
+    .return ($P716)
+  control_709:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P715, exception, "payload"
-    .return ($P715)
+    getattribute $P717, exception, "payload"
+    .return ($P717)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<variable>"  :subid("49_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_719
-.annotate "line", 270
-    new $P718, 'ExceptionHandler'
-    set_addr $P718, control_717
-    $P718."handle_types"(58)
-    push_eh $P718
-    .lex "self", self
-    .lex "$/", param_719
-    find_lex $P720, "$/"
-    find_lex $P721, "$/"
-    unless_null $P721, vivify_268
-    new $P721, "Hash"
+.sub "term:sym<variable>"  :subid("49_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_721
+.annotate "line", 273
+    new $P720, 'ExceptionHandler'
+    set_addr $P720, control_719
+    $P720."handle_types"(58)
+    push_eh $P720
+    .lex "self", self
+    .lex "$/", param_721
+    find_lex $P722, "$/"
+    find_lex $P723, "$/"
+    unless_null $P723, vivify_268
+    $P723 = root_new ['parrot';'Hash']
   vivify_268:
-    set $P722, $P721["variable"]
-    unless_null $P722, vivify_269
-    new $P722, "Undef"
+    set $P724, $P723["variable"]
+    unless_null $P724, vivify_269
+    new $P724, "Undef"
   vivify_269:
-    $P723 = $P722."ast"()
-    $P724 = $P720."!make"($P723)
-    .return ($P724)
-  control_717:
+    $P725 = $P724."ast"()
+    $P726 = $P722."!make"($P725)
+    .return ($P726)
+  control_719:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P725, exception, "payload"
-    .return ($P725)
+    getattribute $P727, exception, "payload"
+    .return ($P727)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<package_declarator>"  :subid("50_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_729
-.annotate "line", 271
-    new $P728, 'ExceptionHandler'
-    set_addr $P728, control_727
-    $P728."handle_types"(58)
-    push_eh $P728
-    .lex "self", self
-    .lex "$/", param_729
-    find_lex $P730, "$/"
-    find_lex $P731, "$/"
-    unless_null $P731, vivify_270
-    new $P731, "Hash"
+.sub "term:sym<package_declarator>"  :subid("50_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_731
+.annotate "line", 274
+    new $P730, 'ExceptionHandler'
+    set_addr $P730, control_729
+    $P730."handle_types"(58)
+    push_eh $P730
+    .lex "self", self
+    .lex "$/", param_731
+    find_lex $P732, "$/"
+    find_lex $P733, "$/"
+    unless_null $P733, vivify_270
+    $P733 = root_new ['parrot';'Hash']
   vivify_270:
-    set $P732, $P731["package_declarator"]
-    unless_null $P732, vivify_271
-    new $P732, "Undef"
+    set $P734, $P733["package_declarator"]
+    unless_null $P734, vivify_271
+    new $P734, "Undef"
   vivify_271:
-    $P733 = $P732."ast"()
-    $P734 = $P730."!make"($P733)
-    .return ($P734)
-  control_727:
+    $P735 = $P734."ast"()
+    $P736 = $P732."!make"($P735)
+    .return ($P736)
+  control_729:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P735, exception, "payload"
-    .return ($P735)
+    getattribute $P737, exception, "payload"
+    .return ($P737)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<scope_declarator>"  :subid("51_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_739
-.annotate "line", 272
-    new $P738, 'ExceptionHandler'
-    set_addr $P738, control_737
-    $P738."handle_types"(58)
-    push_eh $P738
-    .lex "self", self
-    .lex "$/", param_739
-    find_lex $P740, "$/"
-    find_lex $P741, "$/"
-    unless_null $P741, vivify_272
-    new $P741, "Hash"
+.sub "term:sym<scope_declarator>"  :subid("51_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_741
+.annotate "line", 275
+    new $P740, 'ExceptionHandler'
+    set_addr $P740, control_739
+    $P740."handle_types"(58)
+    push_eh $P740
+    .lex "self", self
+    .lex "$/", param_741
+    find_lex $P742, "$/"
+    find_lex $P743, "$/"
+    unless_null $P743, vivify_272
+    $P743 = root_new ['parrot';'Hash']
   vivify_272:
-    set $P742, $P741["scope_declarator"]
-    unless_null $P742, vivify_273
-    new $P742, "Undef"
+    set $P744, $P743["scope_declarator"]
+    unless_null $P744, vivify_273
+    new $P744, "Undef"
   vivify_273:
-    $P743 = $P742."ast"()
-    $P744 = $P740."!make"($P743)
-    .return ($P744)
-  control_737:
+    $P745 = $P744."ast"()
+    $P746 = $P742."!make"($P745)
+    .return ($P746)
+  control_739:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P745, exception, "payload"
-    .return ($P745)
+    getattribute $P747, exception, "payload"
+    .return ($P747)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<routine_declarator>"  :subid("52_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_749
-.annotate "line", 273
-    new $P748, 'ExceptionHandler'
-    set_addr $P748, control_747
-    $P748."handle_types"(58)
-    push_eh $P748
-    .lex "self", self
-    .lex "$/", param_749
-    find_lex $P750, "$/"
-    find_lex $P751, "$/"
-    unless_null $P751, vivify_274
-    new $P751, "Hash"
+.sub "term:sym<routine_declarator>"  :subid("52_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_751
+.annotate "line", 276
+    new $P750, 'ExceptionHandler'
+    set_addr $P750, control_749
+    $P750."handle_types"(58)
+    push_eh $P750
+    .lex "self", self
+    .lex "$/", param_751
+    find_lex $P752, "$/"
+    find_lex $P753, "$/"
+    unless_null $P753, vivify_274
+    $P753 = root_new ['parrot';'Hash']
   vivify_274:
-    set $P752, $P751["routine_declarator"]
-    unless_null $P752, vivify_275
-    new $P752, "Undef"
+    set $P754, $P753["routine_declarator"]
+    unless_null $P754, vivify_275
+    new $P754, "Undef"
   vivify_275:
-    $P753 = $P752."ast"()
-    $P754 = $P750."!make"($P753)
-    .return ($P754)
-  control_747:
+    $P755 = $P754."ast"()
+    $P756 = $P752."!make"($P755)
+    .return ($P756)
+  control_749:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P755, exception, "payload"
-    .return ($P755)
+    getattribute $P757, exception, "payload"
+    .return ($P757)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<regex_declarator>"  :subid("53_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_759
-.annotate "line", 274
-    new $P758, 'ExceptionHandler'
-    set_addr $P758, control_757
-    $P758."handle_types"(58)
-    push_eh $P758
-    .lex "self", self
-    .lex "$/", param_759
-    find_lex $P760, "$/"
-    find_lex $P761, "$/"
-    unless_null $P761, vivify_276
-    new $P761, "Hash"
+.sub "term:sym<regex_declarator>"  :subid("53_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_761
+.annotate "line", 277
+    new $P760, 'ExceptionHandler'
+    set_addr $P760, control_759
+    $P760."handle_types"(58)
+    push_eh $P760
+    .lex "self", self
+    .lex "$/", param_761
+    find_lex $P762, "$/"
+    find_lex $P763, "$/"
+    unless_null $P763, vivify_276
+    $P763 = root_new ['parrot';'Hash']
   vivify_276:
-    set $P762, $P761["regex_declarator"]
-    unless_null $P762, vivify_277
-    new $P762, "Undef"
+    set $P764, $P763["regex_declarator"]
+    unless_null $P764, vivify_277
+    new $P764, "Undef"
   vivify_277:
-    $P763 = $P762."ast"()
-    $P764 = $P760."!make"($P763)
-    .return ($P764)
-  control_757:
+    $P765 = $P764."ast"()
+    $P766 = $P762."!make"($P765)
+    .return ($P766)
+  control_759:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P765, exception, "payload"
-    .return ($P765)
+    getattribute $P767, exception, "payload"
+    .return ($P767)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<statement_prefix>"  :subid("54_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_769
-.annotate "line", 275
-    new $P768, 'ExceptionHandler'
-    set_addr $P768, control_767
-    $P768."handle_types"(58)
-    push_eh $P768
-    .lex "self", self
-    .lex "$/", param_769
-    find_lex $P770, "$/"
-    find_lex $P771, "$/"
-    unless_null $P771, vivify_278
-    new $P771, "Hash"
+.sub "term:sym<statement_prefix>"  :subid("54_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_771
+.annotate "line", 278
+    new $P770, 'ExceptionHandler'
+    set_addr $P770, control_769
+    $P770."handle_types"(58)
+    push_eh $P770
+    .lex "self", self
+    .lex "$/", param_771
+    find_lex $P772, "$/"
+    find_lex $P773, "$/"
+    unless_null $P773, vivify_278
+    $P773 = root_new ['parrot';'Hash']
   vivify_278:
-    set $P772, $P771["statement_prefix"]
-    unless_null $P772, vivify_279
-    new $P772, "Undef"
+    set $P774, $P773["statement_prefix"]
+    unless_null $P774, vivify_279
+    new $P774, "Undef"
   vivify_279:
-    $P773 = $P772."ast"()
-    $P774 = $P770."!make"($P773)
-    .return ($P774)
-  control_767:
+    $P775 = $P774."ast"()
+    $P776 = $P772."!make"($P775)
+    .return ($P776)
+  control_769:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P775, exception, "payload"
-    .return ($P775)
+    getattribute $P777, exception, "payload"
+    .return ($P777)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<lambda>"  :subid("55_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_779
-.annotate "line", 276
-    new $P778, 'ExceptionHandler'
-    set_addr $P778, control_777
-    $P778."handle_types"(58)
-    push_eh $P778
-    .lex "self", self
-    .lex "$/", param_779
-    find_lex $P780, "$/"
-    find_lex $P781, "$/"
-    unless_null $P781, vivify_280
-    new $P781, "Hash"
+.sub "term:sym<lambda>"  :subid("55_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_781
+.annotate "line", 279
+    new $P780, 'ExceptionHandler'
+    set_addr $P780, control_779
+    $P780."handle_types"(58)
+    push_eh $P780
+    .lex "self", self
+    .lex "$/", param_781
+    find_lex $P782, "$/"
+    find_lex $P783, "$/"
+    unless_null $P783, vivify_280
+    $P783 = root_new ['parrot';'Hash']
   vivify_280:
-    set $P782, $P781["pblock"]
-    unless_null $P782, vivify_281
-    new $P782, "Undef"
+    set $P784, $P783["pblock"]
+    unless_null $P784, vivify_281
+    new $P784, "Undef"
   vivify_281:
-    $P783 = $P782."ast"()
-    $P784 = $P780."!make"($P783)
-    .return ($P784)
-  control_777:
+    $P785 = $P784."ast"()
+    $P786 = $P782."!make"($P785)
+    .return ($P786)
+  control_779:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P785, exception, "payload"
-    .return ($P785)
+    getattribute $P787, exception, "payload"
+    .return ($P787)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "fatarrow"  :subid("56_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_789
-.annotate "line", 278
-    new $P788, 'ExceptionHandler'
-    set_addr $P788, control_787
-    $P788."handle_types"(58)
-    push_eh $P788
+.sub "fatarrow"  :subid("56_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_791
+.annotate "line", 281
+    new $P790, 'ExceptionHandler'
+    set_addr $P790, control_789
+    $P790."handle_types"(58)
+    push_eh $P790
     .lex "self", self
-    .lex "$/", param_789
-.annotate "line", 279
-    new $P790, "Undef"
-    .lex "$past", $P790
-    find_lex $P791, "$/"
-    unless_null $P791, vivify_282
-    new $P791, "Hash"
-  vivify_282:
-    set $P792, $P791["val"]
-    unless_null $P792, vivify_283
+    .lex "$/", param_791
+.annotate "line", 282
     new $P792, "Undef"
+    .lex "$past", $P792
+    find_lex $P793, "$/"
+    unless_null $P793, vivify_282
+    $P793 = root_new ['parrot';'Hash']
+  vivify_282:
+    set $P794, $P793["val"]
+    unless_null $P794, vivify_283
+    new $P794, "Undef"
   vivify_283:
-    $P793 = $P792."ast"()
-    store_lex "$past", $P793
-.annotate "line", 280
-    find_lex $P794, "$past"
-    find_lex $P795, "$/"
-    unless_null $P795, vivify_284
-    new $P795, "Hash"
+    $P795 = $P794."ast"()
+    store_lex "$past", $P795
+.annotate "line", 283
+    find_lex $P796, "$past"
+    find_lex $P797, "$/"
+    unless_null $P797, vivify_284
+    $P797 = root_new ['parrot';'Hash']
   vivify_284:
-    set $P796, $P795["key"]
-    unless_null $P796, vivify_285
-    new $P796, "Undef"
+    set $P798, $P797["key"]
+    unless_null $P798, vivify_285
+    new $P798, "Undef"
   vivify_285:
-    $P797 = $P796."Str"()
-    $P794."named"($P797)
+    $P799 = $P798."Str"()
+    $P796."named"($P799)
+.annotate "line", 284
+    find_lex $P800, "$/"
+    find_lex $P801, "$past"
+    $P802 = $P800."!make"($P801)
 .annotate "line", 281
-    find_lex $P798, "$/"
-    find_lex $P799, "$past"
-    $P800 = $P798."!make"($P799)
-.annotate "line", 278
-    .return ($P800)
-  control_787:
+    .return ($P802)
+  control_789:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P801, exception, "payload"
-    .return ($P801)
+    getattribute $P803, exception, "payload"
+    .return ($P803)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "colonpair"  :subid("57_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_805
-.annotate "line", 284
-    new $P804, 'ExceptionHandler'
-    set_addr $P804, control_803
-    $P804."handle_types"(58)
-    push_eh $P804
-    .lex "self", self
-    .lex "$/", param_805
-.annotate "line", 285
-    new $P806, "Undef"
-    .lex "$past", $P806
-.annotate "line", 286
-    find_lex $P809, "$/"
-    unless_null $P809, vivify_286
-    new $P809, "Hash"
+.sub "colonpair"  :subid("57_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_807
+.annotate "line", 287
+    new $P806, 'ExceptionHandler'
+    set_addr $P806, control_805
+    $P806."handle_types"(58)
+    push_eh $P806
+    .lex "self", self
+    .lex "$/", param_807
+.annotate "line", 288
+    new $P808, "Undef"
+    .lex "$past", $P808
+.annotate "line", 289
+    find_lex $P811, "$/"
+    unless_null $P811, vivify_286
+    $P811 = root_new ['parrot';'Hash']
   vivify_286:
-    set $P810, $P809["circumfix"]
-    unless_null $P810, vivify_287
-    new $P810, "Undef"
+    set $P812, $P811["circumfix"]
+    unless_null $P812, vivify_287
+    new $P812, "Undef"
   vivify_287:
-    if $P810, if_808
-.annotate "line", 287
-    get_hll_global $P815, ["PAST"], "Val"
-    find_lex $P816, "$/"
-    unless_null $P816, vivify_288
-    new $P816, "Hash"
+    if $P812, if_810
+.annotate "line", 290
+    get_hll_global $P817, ["PAST"], "Val"
+    find_lex $P818, "$/"
+    unless_null $P818, vivify_288
+    $P818 = root_new ['parrot';'Hash']
   vivify_288:
-    set $P817, $P816["not"]
-    unless_null $P817, vivify_289
-    new $P817, "Undef"
+    set $P819, $P818["not"]
+    unless_null $P819, vivify_289
+    new $P819, "Undef"
   vivify_289:
-    isfalse $I818, $P817
-    $P819 = $P815."new"($I818 :named("value"))
-    set $P807, $P819
-.annotate "line", 286
-    goto if_808_end
-  if_808:
-    find_lex $P811, "$/"
-    unless_null $P811, vivify_290
-    new $P811, "Hash"
+    isfalse $I820, $P819
+    $P821 = $P817."new"($I820 :named("value"))
+    set $P809, $P821
+.annotate "line", 289
+    goto if_810_end
+  if_810:
+    find_lex $P813, "$/"
+    unless_null $P813, vivify_290
+    $P813 = root_new ['parrot';'Hash']
   vivify_290:
-    set $P812, $P811["circumfix"]
-    unless_null $P812, vivify_291
-    new $P812, "ResizablePMCArray"
+    set $P814, $P813["circumfix"]
+    unless_null $P814, vivify_291
+    $P814 = root_new ['parrot';'ResizablePMCArray']
   vivify_291:
-    set $P813, $P812[0]
-    unless_null $P813, vivify_292
-    new $P813, "Undef"
+    set $P815, $P814[0]
+    unless_null $P815, vivify_292
+    new $P815, "Undef"
   vivify_292:
-    $P814 = $P813."ast"()
-    set $P807, $P814
-  if_808_end:
-    store_lex "$past", $P807
-.annotate "line", 288
-    find_lex $P820, "$past"
-    find_lex $P821, "$/"
-    unless_null $P821, vivify_293
-    new $P821, "Hash"
+    $P816 = $P815."ast"()
+    set $P809, $P816
+  if_810_end:
+    store_lex "$past", $P809
+.annotate "line", 291
+    find_lex $P822, "$past"
+    find_lex $P823, "$/"
+    unless_null $P823, vivify_293
+    $P823 = root_new ['parrot';'Hash']
   vivify_293:
-    set $P822, $P821["identifier"]
-    unless_null $P822, vivify_294
-    new $P822, "Undef"
+    set $P824, $P823["identifier"]
+    unless_null $P824, vivify_294
+    new $P824, "Undef"
   vivify_294:
-    set $S823, $P822
-    $P820."named"($S823)
-.annotate "line", 289
-    find_lex $P824, "$/"
-    find_lex $P825, "$past"
-    $P826 = $P824."!make"($P825)
-.annotate "line", 284
-    .return ($P826)
-  control_803:
+    set $S825, $P824
+    $P822."named"($S825)
+.annotate "line", 292
+    find_lex $P826, "$/"
+    find_lex $P827, "$past"
+    $P828 = $P826."!make"($P827)
+.annotate "line", 287
+    .return ($P828)
+  control_805:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P827, exception, "payload"
-    .return ($P827)
+    getattribute $P829, exception, "payload"
+    .return ($P829)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable"  :subid("58_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_831
-.annotate "line", 292
-    .const 'Sub' $P844 = "59_1261064035.64813" 
-    capture_lex $P844
-    new $P830, 'ExceptionHandler'
-    set_addr $P830, control_829
-    $P830."handle_types"(58)
-    push_eh $P830
-    .lex "self", self
-    .lex "$/", param_831
-.annotate "line", 293
-    new $P832, "Undef"
-    .lex "$past", $P832
-.annotate "line", 292
-    find_lex $P833, "$past"
-.annotate "line", 294
-    find_lex $P835, "$/"
-    unless_null $P835, vivify_295
-    new $P835, "Hash"
-  vivify_295:
-    set $P836, $P835["postcircumfix"]
-    unless_null $P836, vivify_296
-    new $P836, "Undef"
-  vivify_296:
-    if $P836, if_834
-.annotate "line", 298
-    .const 'Sub' $P844 = "59_1261064035.64813" 
-    capture_lex $P844
-    $P844()
-    goto if_834_end
-  if_834:
+.sub "variable"  :subid("58_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_833
 .annotate "line", 295
+    .const 'Sub' $P846 = "59_1267204714.47172" 
+    capture_lex $P846
+    new $P832, 'ExceptionHandler'
+    set_addr $P832, control_831
+    $P832."handle_types"(58)
+    push_eh $P832
+    .lex "self", self
+    .lex "$/", param_833
+.annotate "line", 296
+    new $P834, "Undef"
+    .lex "$past", $P834
+.annotate "line", 295
+    find_lex $P835, "$past"
+.annotate "line", 297
     find_lex $P837, "$/"
-    unless_null $P837, vivify_313
-    new $P837, "Hash"
-  vivify_313:
+    unless_null $P837, vivify_295
+    $P837 = root_new ['parrot';'Hash']
+  vivify_295:
     set $P838, $P837["postcircumfix"]
-    unless_null $P838, vivify_314
+    unless_null $P838, vivify_296
     new $P838, "Undef"
+  vivify_296:
+    if $P838, if_836
+.annotate "line", 301
+    .const 'Sub' $P846 = "59_1267204714.47172" 
+    capture_lex $P846
+    $P846()
+    goto if_836_end
+  if_836:
+.annotate "line", 298
+    find_lex $P839, "$/"
+    unless_null $P839, vivify_313
+    $P839 = root_new ['parrot';'Hash']
+  vivify_313:
+    set $P840, $P839["postcircumfix"]
+    unless_null $P840, vivify_314
+    new $P840, "Undef"
   vivify_314:
-    $P839 = $P838."ast"()
-    store_lex "$past", $P839
-.annotate "line", 296
-    find_lex $P840, "$past"
-    get_hll_global $P841, ["PAST"], "Var"
-    $P842 = $P841."new"("$/" :named("name"))
-    $P840."unshift"($P842)
-  if_834_end:
-.annotate "line", 327
-    find_lex $P913, "$/"
-    find_lex $P914, "$past"
-    $P915 = $P913."!make"($P914)
-.annotate "line", 292
-    .return ($P915)
-  control_829:
+    $P841 = $P840."ast"()
+    store_lex "$past", $P841
+.annotate "line", 299
+    find_lex $P842, "$past"
+    get_hll_global $P843, ["PAST"], "Var"
+    $P844 = $P843."new"("$/" :named("name"))
+    $P842."unshift"($P844)
+  if_836_end:
+.annotate "line", 330
+    find_lex $P915, "$/"
+    find_lex $P916, "$past"
+    $P917 = $P915."!make"($P916)
+.annotate "line", 295
+    .return ($P917)
+  control_831:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P916, exception, "payload"
-    .return ($P916)
+    getattribute $P918, exception, "payload"
+    .return ($P918)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block843"  :anon :subid("59_1261064035.64813") :outer("58_1261064035.64813")
-.annotate "line", 299
-    new $P845, "ResizablePMCArray"
-    .lex "@name", $P845
-    get_hll_global $P846, ["NQP"], "Compiler"
-    find_lex $P847, "$/"
-    set $S848, $P847
-    $P849 = $P846."parse_name"($S848)
-    store_lex "@name", $P849
-.annotate "line", 300
-    get_hll_global $P850, ["PAST"], "Var"
-    find_lex $P851, "@name"
-    $P852 = $P851."pop"()
-    set $S853, $P852
-    $P854 = $P850."new"($S853 :named("name"))
-    store_lex "$past", $P854
-.annotate "line", 301
-    find_lex $P856, "@name"
-    unless $P856, if_855_end
+.sub "_block845"  :anon :subid("59_1267204714.47172") :outer("58_1267204714.47172")
 .annotate "line", 302
+    $P847 = root_new ['parrot';'ResizablePMCArray']
+    .lex "@name", $P847
+    get_hll_global $P848, ["NQP"], "Compiler"
+    find_lex $P849, "$/"
+    set $S850, $P849
+    $P851 = $P848."parse_name"($S850)
+    store_lex "@name", $P851
+.annotate "line", 303
+    get_hll_global $P852, ["PAST"], "Var"
+    find_lex $P853, "@name"
+    $P854 = $P853."pop"()
+    set $S855, $P854
+    $P856 = $P852."new"($S855 :named("name"))
+    store_lex "$past", $P856
+.annotate "line", 304
     find_lex $P858, "@name"
-    unless_null $P858, vivify_297
-    new $P858, "ResizablePMCArray"
+    unless $P858, if_857_end
+.annotate "line", 305
+    find_lex $P860, "@name"
+    unless_null $P860, vivify_297
+    $P860 = root_new ['parrot';'ResizablePMCArray']
   vivify_297:
-    set $P859, $P858[0]
-    unless_null $P859, vivify_298
-    new $P859, "Undef"
+    set $P861, $P860[0]
+    unless_null $P861, vivify_298
+    new $P861, "Undef"
   vivify_298:
-    set $S860, $P859
-    iseq $I861, $S860, "GLOBAL"
-    unless $I861, if_857_end
-    find_lex $P862, "@name"
-    $P862."shift"()
-  if_857_end:
-.annotate "line", 303
-    find_lex $P863, "$past"
+    set $S862, $P861
+    iseq $I863, $S862, "GLOBAL"
+    unless $I863, if_859_end
     find_lex $P864, "@name"
-    $P863."namespace"($P864)
-.annotate "line", 304
+    $P864."shift"()
+  if_859_end:
+.annotate "line", 306
     find_lex $P865, "$past"
-    $P865."scope"("package")
-.annotate "line", 305
-    find_lex $P866, "$past"
-    find_lex $P867, "$/"
-    unless_null $P867, vivify_299
-    new $P867, "Hash"
+    find_lex $P866, "@name"
+    $P865."namespace"($P866)
+.annotate "line", 307
+    find_lex $P867, "$past"
+    $P867."scope"("package")
+.annotate "line", 308
+    find_lex $P868, "$past"
+    find_lex $P869, "$/"
+    unless_null $P869, vivify_299
+    $P869 = root_new ['parrot';'Hash']
   vivify_299:
-    set $P868, $P867["sigil"]
-    unless_null $P868, vivify_300
-    new $P868, "Undef"
+    set $P870, $P869["sigil"]
+    unless_null $P870, vivify_300
+    new $P870, "Undef"
   vivify_300:
-    $P869 = "sigiltype"($P868)
-    $P866."viviself"($P869)
-.annotate "line", 306
-    find_lex $P870, "$past"
-    $P870."lvalue"(1)
-  if_855_end:
-.annotate "line", 308
-    find_lex $P873, "$/"
-    unless_null $P873, vivify_301
-    new $P873, "Hash"
+    $P871 = "vivitype"($P870)
+    $P868."viviself"($P871)
+.annotate "line", 309
+    find_lex $P872, "$past"
+    $P872."lvalue"(1)
+  if_857_end:
+.annotate "line", 311
+    find_lex $P875, "$/"
+    unless_null $P875, vivify_301
+    $P875 = root_new ['parrot';'Hash']
   vivify_301:
-    set $P874, $P873["twigil"]
-    unless_null $P874, vivify_302
-    new $P874, "ResizablePMCArray"
+    set $P876, $P875["twigil"]
+    unless_null $P876, vivify_302
+    $P876 = root_new ['parrot';'ResizablePMCArray']
   vivify_302:
-    set $P875, $P874[0]
-    unless_null $P875, vivify_303
-    new $P875, "Undef"
+    set $P877, $P876[0]
+    unless_null $P877, vivify_303
+    new $P877, "Undef"
   vivify_303:
-    set $S876, $P875
-    iseq $I877, $S876, "*"
-    if $I877, if_872
-.annotate "line", 321
-    find_lex $P899, "$/"
-    unless_null $P899, vivify_304
-    new $P899, "Hash"
+    set $S878, $P877
+    iseq $I879, $S878, "*"
+    if $I879, if_874
+.annotate "line", 324
+    find_lex $P901, "$/"
+    unless_null $P901, vivify_304
+    $P901 = root_new ['parrot';'Hash']
   vivify_304:
-    set $P900, $P899["twigil"]
-    unless_null $P900, vivify_305
-    new $P900, "ResizablePMCArray"
+    set $P902, $P901["twigil"]
+    unless_null $P902, vivify_305
+    $P902 = root_new ['parrot';'ResizablePMCArray']
   vivify_305:
-    set $P901, $P900[0]
-    unless_null $P901, vivify_306
-    new $P901, "Undef"
+    set $P903, $P902[0]
+    unless_null $P903, vivify_306
+    new $P903, "Undef"
   vivify_306:
-    set $S902, $P901
-    iseq $I903, $S902, "!"
-    if $I903, if_898
-    new $P897, 'Integer'
-    set $P897, $I903
-    goto if_898_end
-  if_898:
-.annotate "line", 322
-    find_lex $P904, "$past"
-    get_hll_global $P905, ["PAST"], "Var"
-    $P906 = $P905."new"("self" :named("name"))
-    $P904."push"($P906)
-.annotate "line", 323
-    find_lex $P907, "$past"
-    $P907."scope"("attribute")
-.annotate "line", 324
-    find_lex $P908, "$past"
-    find_lex $P909, "$/"
-    unless_null $P909, vivify_307
-    new $P909, "Hash"
+    set $S904, $P903
+    iseq $I905, $S904, "!"
+    if $I905, if_900
+    new $P899, 'Integer'
+    set $P899, $I905
+    goto if_900_end
+  if_900:
+.annotate "line", 325
+    find_lex $P906, "$past"
+    get_hll_global $P907, ["PAST"], "Var"
+    $P908 = $P907."new"("self" :named("name"))
+    $P906."push"($P908)
+.annotate "line", 326
+    find_lex $P909, "$past"
+    $P909."scope"("attribute")
+.annotate "line", 327
+    find_lex $P910, "$past"
+    find_lex $P911, "$/"
+    unless_null $P911, vivify_307
+    $P911 = root_new ['parrot';'Hash']
   vivify_307:
-    set $P910, $P909["sigil"]
-    unless_null $P910, vivify_308
-    new $P910, "Undef"
+    set $P912, $P911["sigil"]
+    unless_null $P912, vivify_308
+    new $P912, "Undef"
   vivify_308:
-    $P911 = "sigiltype"($P910)
-    $P912 = $P908."viviself"($P911)
-.annotate "line", 321
-    set $P897, $P912
-  if_898_end:
-    set $P871, $P897
-.annotate "line", 308
-    goto if_872_end
-  if_872:
-.annotate "line", 309
-    find_lex $P878, "$past"
-    $P878."scope"("contextual")
-.annotate "line", 310
-    find_lex $P879, "$past"
+    $P913 = "vivitype"($P912)
+    $P914 = $P910."viviself"($P913)
+.annotate "line", 324
+    set $P899, $P914
+  if_900_end:
+    set $P873, $P899
 .annotate "line", 311
-    get_hll_global $P880, ["PAST"], "Var"
+    goto if_874_end
+  if_874:
+.annotate "line", 312
+    find_lex $P880, "$past"
+    $P880."scope"("contextual")
 .annotate "line", 313
-    find_lex $P881, "$/"
-    unless_null $P881, vivify_309
-    new $P881, "Hash"
+    find_lex $P881, "$past"
+.annotate "line", 314
+    get_hll_global $P882, ["PAST"], "Var"
+.annotate "line", 316
+    find_lex $P883, "$/"
+    unless_null $P883, vivify_309
+    $P883 = root_new ['parrot';'Hash']
   vivify_309:
-    set $P882, $P881["sigil"]
-    unless_null $P882, vivify_310
-    new $P882, "Undef"
+    set $P884, $P883["sigil"]
+    unless_null $P884, vivify_310
+    new $P884, "Undef"
   vivify_310:
-    set $S883, $P882
-    new $P884, 'String'
-    set $P884, $S883
-    find_lex $P885, "$/"
-    unless_null $P885, vivify_311
-    new $P885, "Hash"
+    set $S885, $P884
+    new $P886, 'String'
+    set $P886, $S885
+    find_lex $P887, "$/"
+    unless_null $P887, vivify_311
+    $P887 = root_new ['parrot';'Hash']
   vivify_311:
-    set $P886, $P885["desigilname"]
-    unless_null $P886, vivify_312
-    new $P886, "Undef"
+    set $P888, $P887["desigilname"]
+    unless_null $P888, vivify_312
+    new $P888, "Undef"
   vivify_312:
-    concat $P887, $P884, $P886
-.annotate "line", 315
-    get_hll_global $P888, ["PAST"], "Op"
-    new $P889, "String"
-    assign $P889, "Contextual "
-    find_lex $P890, "$/"
-    set $S891, $P890
-    concat $P892, $P889, $S891
-    concat $P893, $P892, " not found"
-    $P894 = $P888."new"($P893, "die" :named("pirop"))
-    $P895 = $P880."new"("package" :named("scope"), "" :named("namespace"), $P887 :named("name"), $P894 :named("viviself"))
+    concat $P889, $P886, $P888
+.annotate "line", 318
+    get_hll_global $P890, ["PAST"], "Op"
+    new $P891, "String"
+    assign $P891, "Contextual "
+    find_lex $P892, "$/"
+    set $S893, $P892
+    concat $P894, $P891, $S893
+    concat $P895, $P894, " not found"
+    $P896 = $P890."new"($P895, "die" :named("pirop"))
+    $P897 = $P882."new"("package" :named("scope"), "" :named("namespace"), $P889 :named("name"), $P896 :named("viviself"))
+.annotate "line", 314
+    $P898 = $P881."viviself"($P897)
 .annotate "line", 311
-    $P896 = $P879."viviself"($P895)
-.annotate "line", 308
-    set $P871, $P896
-  if_872_end:
-.annotate "line", 298
-    .return ($P871)
+    set $P873, $P898
+  if_874_end:
+.annotate "line", 301
+    .return ($P873)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<module>"  :subid("60_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_920
-.annotate "line", 330
-    new $P919, 'ExceptionHandler'
-    set_addr $P919, control_918
-    $P919."handle_types"(58)
-    push_eh $P919
-    .lex "self", self
-    .lex "$/", param_920
-    find_lex $P921, "$/"
-    find_lex $P922, "$/"
-    unless_null $P922, vivify_315
-    new $P922, "Hash"
+.sub "package_declarator:sym<module>"  :subid("60_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_922
+.annotate "line", 333
+    new $P921, 'ExceptionHandler'
+    set_addr $P921, control_920
+    $P921."handle_types"(58)
+    push_eh $P921
+    .lex "self", self
+    .lex "$/", param_922
+    find_lex $P923, "$/"
+    find_lex $P924, "$/"
+    unless_null $P924, vivify_315
+    $P924 = root_new ['parrot';'Hash']
   vivify_315:
-    set $P923, $P922["package_def"]
-    unless_null $P923, vivify_316
-    new $P923, "Undef"
+    set $P925, $P924["package_def"]
+    unless_null $P925, vivify_316
+    new $P925, "Undef"
   vivify_316:
-    $P924 = $P923."ast"()
-    $P925 = $P921."!make"($P924)
-    .return ($P925)
-  control_918:
+    $P926 = $P925."ast"()
+    $P927 = $P923."!make"($P926)
+    .return ($P927)
+  control_920:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P926, exception, "payload"
-    .return ($P926)
+    getattribute $P928, exception, "payload"
+    .return ($P928)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<class>"  :subid("61_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_930
-.annotate "line", 331
-    new $P929, 'ExceptionHandler'
-    set_addr $P929, control_928
-    $P929."handle_types"(58)
-    push_eh $P929
+.sub "package_declarator:sym<class>"  :subid("61_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_932
+.annotate "line", 334
+    new $P931, 'ExceptionHandler'
+    set_addr $P931, control_930
+    $P931."handle_types"(58)
+    push_eh $P931
     .lex "self", self
-    .lex "$/", param_930
-.annotate "line", 332
-    new $P931, "Undef"
-    .lex "$past", $P931
-.annotate "line", 333
-    new $P932, "Undef"
-    .lex "$classinit", $P932
-.annotate "line", 342
+    .lex "$/", param_932
+.annotate "line", 335
     new $P933, "Undef"
-    .lex "$parent", $P933
-.annotate "line", 332
-    find_lex $P934, "$/"
-    unless_null $P934, vivify_317
-    new $P934, "Hash"
-  vivify_317:
-    set $P935, $P934["package_def"]
-    unless_null $P935, vivify_318
+    .lex "$past", $P933
+.annotate "line", 336
+    new $P934, "Undef"
+    .lex "$classinit", $P934
+.annotate "line", 345
     new $P935, "Undef"
-  vivify_318:
-    $P936 = $P935."ast"()
-    store_lex "$past", $P936
-.annotate "line", 334
-    get_hll_global $P937, ["PAST"], "Op"
+    .lex "$parent", $P935
 .annotate "line", 335
-    get_hll_global $P938, ["PAST"], "Op"
-    $P939 = $P938."new"("    %r = get_root_global [\"parrot\"], \"P6metaclass\"" :named("inline"))
+    find_lex $P936, "$/"
+    unless_null $P936, vivify_317
+    $P936 = root_new ['parrot';'Hash']
+  vivify_317:
+    set $P937, $P936["package_def"]
+    unless_null $P937, vivify_318
+    new $P937, "Undef"
+  vivify_318:
+    $P938 = $P937."ast"()
+    store_lex "$past", $P938
+.annotate "line", 337
+    get_hll_global $P939, ["PAST"], "Op"
 .annotate "line", 338
-    find_lex $P940, "$/"
-    unless_null $P940, vivify_319
-    new $P940, "Hash"
+    get_hll_global $P940, ["PAST"], "Op"
+    $P941 = $P940."new"("    %r = get_root_global [\"parrot\"], \"P6metaclass\"" :named("inline"))
+.annotate "line", 341
+    find_lex $P942, "$/"
+    unless_null $P942, vivify_319
+    $P942 = root_new ['parrot';'Hash']
   vivify_319:
-    set $P941, $P940["package_def"]
-    unless_null $P941, vivify_320
-    new $P941, "Hash"
+    set $P943, $P942["package_def"]
+    unless_null $P943, vivify_320
+    $P943 = root_new ['parrot';'Hash']
   vivify_320:
-    set $P942, $P941["name"]
-    unless_null $P942, vivify_321
-    new $P942, "Undef"
+    set $P944, $P943["name"]
+    unless_null $P944, vivify_321
+    new $P944, "Undef"
   vivify_321:
-    set $S943, $P942
-    $P944 = $P937."new"($P939, $S943, "new_class" :named("name"), "callmethod" :named("pasttype"))
-.annotate "line", 334
-    store_lex "$classinit", $P944
-.annotate "line", 342
-    find_lex $P947, "$/"
-    unless_null $P947, vivify_322
-    new $P947, "Hash"
+    set $S945, $P944
+    $P946 = $P939."new"($P941, $S945, "new_class" :named("name"), "callmethod" :named("pasttype"))
+.annotate "line", 337
+    store_lex "$classinit", $P946
+.annotate "line", 345
+    find_lex $P949, "$/"
+    unless_null $P949, vivify_322
+    $P949 = root_new ['parrot';'Hash']
   vivify_322:
-    set $P948, $P947["package_def"]
-    unless_null $P948, vivify_323
-    new $P948, "Hash"
+    set $P950, $P949["package_def"]
+    unless_null $P950, vivify_323
+    $P950 = root_new ['parrot';'Hash']
   vivify_323:
-    set $P949, $P948["parent"]
-    unless_null $P949, vivify_324
-    new $P949, "ResizablePMCArray"
+    set $P951, $P950["parent"]
+    unless_null $P951, vivify_324
+    $P951 = root_new ['parrot';'ResizablePMCArray']
   vivify_324:
-    set $P950, $P949[0]
-    unless_null $P950, vivify_325
-    new $P950, "Undef"
+    set $P952, $P951[0]
+    unless_null $P952, vivify_325
+    new $P952, "Undef"
   vivify_325:
-    set $S951, $P950
-    unless $S951, unless_946
-    new $P945, 'String'
-    set $P945, $S951
-    goto unless_946_end
-  unless_946:
-.annotate "line", 343
-    find_lex $P954, "$/"
-    unless_null $P954, vivify_326
-    new $P954, "Hash"
+    set $S953, $P952
+    unless $S953, unless_948
+    new $P947, 'String'
+    set $P947, $S953
+    goto unless_948_end
+  unless_948:
+.annotate "line", 346
+    find_lex $P956, "$/"
+    unless_null $P956, vivify_326
+    $P956 = root_new ['parrot';'Hash']
   vivify_326:
-    set $P955, $P954["sym"]
-    unless_null $P955, vivify_327
-    new $P955, "Undef"
+    set $P957, $P956["sym"]
+    unless_null $P957, vivify_327
+    new $P957, "Undef"
   vivify_327:
-    set $S956, $P955
-    iseq $I957, $S956, "grammar"
-    if $I957, if_953
-    new $P959, "String"
-    assign $P959, ""
-    set $P952, $P959
-    goto if_953_end
-  if_953:
-    new $P958, "String"
-    assign $P958, "Regex::Cursor"
-    set $P952, $P958
-  if_953_end:
-    set $P945, $P952
-  unless_946_end:
-    store_lex "$parent", $P945
-.annotate "line", 344
-    find_lex $P961, "$parent"
-    unless $P961, if_960_end
-.annotate "line", 345
-    find_lex $P962, "$classinit"
-    get_hll_global $P963, ["PAST"], "Val"
-    find_lex $P964, "$parent"
-    $P965 = $P963."new"($P964 :named("value"), "parent" :named("named"))
-    $P962."push"($P965)
-  if_960_end:
+    set $S958, $P957
+    iseq $I959, $S958, "grammar"
+    if $I959, if_955
+    new $P961, "String"
+    assign $P961, ""
+    set $P954, $P961
+    goto if_955_end
+  if_955:
+    new $P960, "String"
+    assign $P960, "Regex::Cursor"
+    set $P954, $P960
+  if_955_end:
+    set $P947, $P954
+  unless_948_end:
+    store_lex "$parent", $P947
 .annotate "line", 347
-    find_lex $P967, "$past"
-    unless_null $P967, vivify_328
-    new $P967, "Hash"
+    find_lex $P963, "$parent"
+    unless $P963, if_962_end
+.annotate "line", 348
+    find_lex $P964, "$classinit"
+    get_hll_global $P965, ["PAST"], "Val"
+    find_lex $P966, "$parent"
+    $P967 = $P965."new"($P966 :named("value"), "parent" :named("named"))
+    $P964."push"($P967)
+  if_962_end:
+.annotate "line", 350
+    find_lex $P969, "$past"
+    unless_null $P969, vivify_328
+    $P969 = root_new ['parrot';'Hash']
   vivify_328:
-    set $P968, $P967["attributes"]
-    unless_null $P968, vivify_329
-    new $P968, "Undef"
+    set $P970, $P969["attributes"]
+    unless_null $P970, vivify_329
+    new $P970, "Undef"
   vivify_329:
-    unless $P968, if_966_end
-.annotate "line", 348
-    find_lex $P969, "$classinit"
-    find_lex $P970, "$past"
-    unless_null $P970, vivify_330
-    new $P970, "Hash"
+    unless $P970, if_968_end
+.annotate "line", 351
+    find_lex $P971, "$classinit"
+    find_lex $P972, "$past"
+    unless_null $P972, vivify_330
+    $P972 = root_new ['parrot';'Hash']
   vivify_330:
-    set $P971, $P970["attributes"]
-    unless_null $P971, vivify_331
-    new $P971, "Undef"
+    set $P973, $P972["attributes"]
+    unless_null $P973, vivify_331
+    new $P973, "Undef"
   vivify_331:
-    $P969."push"($P971)
-  if_966_end:
-.annotate "line", 350
-    get_global $P972, "@BLOCK"
-    unless_null $P972, vivify_332
-    new $P972, "ResizablePMCArray"
+    $P971."push"($P973)
+  if_968_end:
+.annotate "line", 353
+    get_global $P974, "@BLOCK"
+    unless_null $P974, vivify_332
+    $P974 = root_new ['parrot';'ResizablePMCArray']
   vivify_332:
-    set $P973, $P972[0]
-    unless_null $P973, vivify_333
-    new $P973, "Undef"
+    set $P975, $P974[0]
+    unless_null $P975, vivify_333
+    new $P975, "Undef"
   vivify_333:
-    $P974 = $P973."loadinit"()
-    find_lex $P975, "$classinit"
-    $P974."push"($P975)
-.annotate "line", 351
-    find_lex $P976, "$/"
-    find_lex $P977, "$past"
-    $P978 = $P976."!make"($P977)
-.annotate "line", 331
-    .return ($P978)
-  control_928:
+    $P976 = $P975."loadinit"()
+    find_lex $P977, "$classinit"
+    $P976."push"($P977)
+.annotate "line", 354
+    find_lex $P978, "$/"
+    find_lex $P979, "$past"
+    $P980 = $P978."!make"($P979)
+.annotate "line", 334
+    .return ($P980)
+  control_930:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P979, exception, "payload"
-    .return ($P979)
+    getattribute $P981, exception, "payload"
+    .return ($P981)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_def"  :subid("62_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_983
-.annotate "line", 354
-    new $P982, 'ExceptionHandler'
-    set_addr $P982, control_981
-    $P982."handle_types"(58)
-    push_eh $P982
+.sub "package_def"  :subid("62_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_985
+.annotate "line", 357
+    new $P984, 'ExceptionHandler'
+    set_addr $P984, control_983
+    $P984."handle_types"(58)
+    push_eh $P984
     .lex "self", self
-    .lex "$/", param_983
-.annotate "line", 355
-    new $P984, "Undef"
-    .lex "$past", $P984
-    find_lex $P987, "$/"
-    unless_null $P987, vivify_334
-    new $P987, "Hash"
+    .lex "$/", param_985
+.annotate "line", 358
+    new $P986, "Undef"
+    .lex "$past", $P986
+    find_lex $P989, "$/"
+    unless_null $P989, vivify_334
+    $P989 = root_new ['parrot';'Hash']
   vivify_334:
-    set $P988, $P987["block"]
-    unless_null $P988, vivify_335
-    new $P988, "Undef"
+    set $P990, $P989["block"]
+    unless_null $P990, vivify_335
+    new $P990, "Undef"
   vivify_335:
-    if $P988, if_986
-    find_lex $P992, "$/"
-    unless_null $P992, vivify_336
-    new $P992, "Hash"
+    if $P990, if_988
+    find_lex $P994, "$/"
+    unless_null $P994, vivify_336
+    $P994 = root_new ['parrot';'Hash']
   vivify_336:
-    set $P993, $P992["comp_unit"]
-    unless_null $P993, vivify_337
-    new $P993, "Undef"
+    set $P995, $P994["comp_unit"]
+    unless_null $P995, vivify_337
+    new $P995, "Undef"
   vivify_337:
-    $P994 = $P993."ast"()
-    set $P985, $P994
-    goto if_986_end
-  if_986:
-    find_lex $P989, "$/"
-    unless_null $P989, vivify_338
-    new $P989, "Hash"
+    $P996 = $P995."ast"()
+    set $P987, $P996
+    goto if_988_end
+  if_988:
+    find_lex $P991, "$/"
+    unless_null $P991, vivify_338
+    $P991 = root_new ['parrot';'Hash']
   vivify_338:
-    set $P990, $P989["block"]
-    unless_null $P990, vivify_339
-    new $P990, "Undef"
+    set $P992, $P991["block"]
+    unless_null $P992, vivify_339
+    new $P992, "Undef"
   vivify_339:
-    $P991 = $P990."ast"()
-    set $P985, $P991
-  if_986_end:
-    store_lex "$past", $P985
-.annotate "line", 356
-    find_lex $P995, "$past"
-    find_lex $P996, "$/"
-    unless_null $P996, vivify_340
-    new $P996, "Hash"
+    $P993 = $P992."ast"()
+    set $P987, $P993
+  if_988_end:
+    store_lex "$past", $P987
+.annotate "line", 359
+    find_lex $P997, "$past"
+    find_lex $P998, "$/"
+    unless_null $P998, vivify_340
+    $P998 = root_new ['parrot';'Hash']
   vivify_340:
-    set $P997, $P996["name"]
-    unless_null $P997, vivify_341
-    new $P997, "Hash"
+    set $P999, $P998["name"]
+    unless_null $P999, vivify_341
+    $P999 = root_new ['parrot';'Hash']
   vivify_341:
-    set $P998, $P997["identifier"]
-    unless_null $P998, vivify_342
-    new $P998, "Undef"
+    set $P1000, $P999["identifier"]
+    unless_null $P1000, vivify_342
+    new $P1000, "Undef"
   vivify_342:
-    $P995."namespace"($P998)
-.annotate "line", 357
-    find_lex $P999, "$past"
-    $P999."blocktype"("immediate")
-.annotate "line", 358
-    find_lex $P1000, "$/"
+    $P997."namespace"($P1000)
+.annotate "line", 360
     find_lex $P1001, "$past"
-    $P1002 = $P1000."!make"($P1001)
-.annotate "line", 354
-    .return ($P1002)
-  control_981:
+    $P1001."blocktype"("immediate")
+.annotate "line", 361
+    find_lex $P1002, "$/"
+    find_lex $P1003, "$past"
+    $P1004 = $P1002."!make"($P1003)
+.annotate "line", 357
+    .return ($P1004)
+  control_983:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1003, exception, "payload"
-    .return ($P1003)
+    getattribute $P1005, exception, "payload"
+    .return ($P1005)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<my>"  :subid("63_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1007
-.annotate "line", 361
-    new $P1006, 'ExceptionHandler'
-    set_addr $P1006, control_1005
-    $P1006."handle_types"(58)
-    push_eh $P1006
-    .lex "self", self
-    .lex "$/", param_1007
-    find_lex $P1008, "$/"
-    find_lex $P1009, "$/"
-    unless_null $P1009, vivify_343
-    new $P1009, "Hash"
+.sub "scope_declarator:sym<my>"  :subid("63_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1009
+.annotate "line", 364
+    new $P1008, 'ExceptionHandler'
+    set_addr $P1008, control_1007
+    $P1008."handle_types"(58)
+    push_eh $P1008
+    .lex "self", self
+    .lex "$/", param_1009
+    find_lex $P1010, "$/"
+    find_lex $P1011, "$/"
+    unless_null $P1011, vivify_343
+    $P1011 = root_new ['parrot';'Hash']
   vivify_343:
-    set $P1010, $P1009["scoped"]
-    unless_null $P1010, vivify_344
-    new $P1010, "Undef"
+    set $P1012, $P1011["scoped"]
+    unless_null $P1012, vivify_344
+    new $P1012, "Undef"
   vivify_344:
-    $P1011 = $P1010."ast"()
-    $P1012 = $P1008."!make"($P1011)
-    .return ($P1012)
-  control_1005:
+    $P1013 = $P1012."ast"()
+    $P1014 = $P1010."!make"($P1013)
+    .return ($P1014)
+  control_1007:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1013, exception, "payload"
-    .return ($P1013)
+    getattribute $P1015, exception, "payload"
+    .return ($P1015)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<our>"  :subid("64_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1017
-.annotate "line", 362
-    new $P1016, 'ExceptionHandler'
-    set_addr $P1016, control_1015
-    $P1016."handle_types"(58)
-    push_eh $P1016
-    .lex "self", self
-    .lex "$/", param_1017
-    find_lex $P1018, "$/"
-    find_lex $P1019, "$/"
-    unless_null $P1019, vivify_345
-    new $P1019, "Hash"
+.sub "scope_declarator:sym<our>"  :subid("64_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1019
+.annotate "line", 365
+    new $P1018, 'ExceptionHandler'
+    set_addr $P1018, control_1017
+    $P1018."handle_types"(58)
+    push_eh $P1018
+    .lex "self", self
+    .lex "$/", param_1019
+    find_lex $P1020, "$/"
+    find_lex $P1021, "$/"
+    unless_null $P1021, vivify_345
+    $P1021 = root_new ['parrot';'Hash']
   vivify_345:
-    set $P1020, $P1019["scoped"]
-    unless_null $P1020, vivify_346
-    new $P1020, "Undef"
+    set $P1022, $P1021["scoped"]
+    unless_null $P1022, vivify_346
+    new $P1022, "Undef"
   vivify_346:
-    $P1021 = $P1020."ast"()
-    $P1022 = $P1018."!make"($P1021)
-    .return ($P1022)
-  control_1015:
+    $P1023 = $P1022."ast"()
+    $P1024 = $P1020."!make"($P1023)
+    .return ($P1024)
+  control_1017:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1023, exception, "payload"
-    .return ($P1023)
+    getattribute $P1025, exception, "payload"
+    .return ($P1025)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<has>"  :subid("65_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1027
-.annotate "line", 363
-    new $P1026, 'ExceptionHandler'
-    set_addr $P1026, control_1025
-    $P1026."handle_types"(58)
-    push_eh $P1026
-    .lex "self", self
-    .lex "$/", param_1027
-    find_lex $P1028, "$/"
-    find_lex $P1029, "$/"
-    unless_null $P1029, vivify_347
-    new $P1029, "Hash"
+.sub "scope_declarator:sym<has>"  :subid("65_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1029
+.annotate "line", 366
+    new $P1028, 'ExceptionHandler'
+    set_addr $P1028, control_1027
+    $P1028."handle_types"(58)
+    push_eh $P1028
+    .lex "self", self
+    .lex "$/", param_1029
+    find_lex $P1030, "$/"
+    find_lex $P1031, "$/"
+    unless_null $P1031, vivify_347
+    $P1031 = root_new ['parrot';'Hash']
   vivify_347:
-    set $P1030, $P1029["scoped"]
-    unless_null $P1030, vivify_348
-    new $P1030, "Undef"
+    set $P1032, $P1031["scoped"]
+    unless_null $P1032, vivify_348
+    new $P1032, "Undef"
   vivify_348:
-    $P1031 = $P1030."ast"()
-    $P1032 = $P1028."!make"($P1031)
-    .return ($P1032)
-  control_1025:
+    $P1033 = $P1032."ast"()
+    $P1034 = $P1030."!make"($P1033)
+    .return ($P1034)
+  control_1027:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1033, exception, "payload"
-    .return ($P1033)
+    getattribute $P1035, exception, "payload"
+    .return ($P1035)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "scoped"  :subid("66_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1037
-.annotate "line", 365
-    new $P1036, 'ExceptionHandler'
-    set_addr $P1036, control_1035
-    $P1036."handle_types"(58)
-    push_eh $P1036
-    .lex "self", self
-    .lex "$/", param_1037
-.annotate "line", 366
-    find_lex $P1038, "$/"
-.annotate "line", 367
-    find_lex $P1041, "$/"
-    unless_null $P1041, vivify_349
-    new $P1041, "Hash"
+.sub "scoped"  :subid("66_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1039
+.annotate "line", 368
+    new $P1038, 'ExceptionHandler'
+    set_addr $P1038, control_1037
+    $P1038."handle_types"(58)
+    push_eh $P1038
+    .lex "self", self
+    .lex "$/", param_1039
+.annotate "line", 369
+    find_lex $P1040, "$/"
+.annotate "line", 370
+    find_lex $P1043, "$/"
+    unless_null $P1043, vivify_349
+    $P1043 = root_new ['parrot';'Hash']
   vivify_349:
-    set $P1042, $P1041["routine_declarator"]
-    unless_null $P1042, vivify_350
-    new $P1042, "Undef"
+    set $P1044, $P1043["routine_declarator"]
+    unless_null $P1044, vivify_350
+    new $P1044, "Undef"
   vivify_350:
-    if $P1042, if_1040
-.annotate "line", 368
-    find_lex $P1046, "$/"
-    unless_null $P1046, vivify_351
-    new $P1046, "Hash"
+    if $P1044, if_1042
+.annotate "line", 371
+    find_lex $P1048, "$/"
+    unless_null $P1048, vivify_351
+    $P1048 = root_new ['parrot';'Hash']
   vivify_351:
-    set $P1047, $P1046["variable_declarator"]
-    unless_null $P1047, vivify_352
-    new $P1047, "Undef"
+    set $P1049, $P1048["variable_declarator"]
+    unless_null $P1049, vivify_352
+    new $P1049, "Undef"
   vivify_352:
-    $P1048 = $P1047."ast"()
-    set $P1039, $P1048
-.annotate "line", 367
-    goto if_1040_end
-  if_1040:
-    find_lex $P1043, "$/"
-    unless_null $P1043, vivify_353
-    new $P1043, "Hash"
+    $P1050 = $P1049."ast"()
+    set $P1041, $P1050
+.annotate "line", 370
+    goto if_1042_end
+  if_1042:
+    find_lex $P1045, "$/"
+    unless_null $P1045, vivify_353
+    $P1045 = root_new ['parrot';'Hash']
   vivify_353:
-    set $P1044, $P1043["routine_declarator"]
-    unless_null $P1044, vivify_354
-    new $P1044, "Undef"
+    set $P1046, $P1045["routine_declarator"]
+    unless_null $P1046, vivify_354
+    new $P1046, "Undef"
   vivify_354:
-    $P1045 = $P1044."ast"()
-    set $P1039, $P1045
-  if_1040_end:
-    $P1049 = $P1038."!make"($P1039)
-.annotate "line", 365
-    .return ($P1049)
-  control_1035:
+    $P1047 = $P1046."ast"()
+    set $P1041, $P1047
+  if_1042_end:
+    $P1051 = $P1040."!make"($P1041)
+.annotate "line", 368
+    .return ($P1051)
+  control_1037:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1050, exception, "payload"
-    .return ($P1050)
+    getattribute $P1052, exception, "payload"
+    .return ($P1052)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable_declarator"  :subid("67_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1054
-.annotate "line", 371
-    .const 'Sub' $P1094 = "68_1261064035.64813" 
-    capture_lex $P1094
-    new $P1053, 'ExceptionHandler'
-    set_addr $P1053, control_1052
-    $P1053."handle_types"(58)
-    push_eh $P1053
-    .lex "self", self
-    .lex "$/", param_1054
-.annotate "line", 372
-    new $P1055, "Undef"
-    .lex "$past", $P1055
-.annotate "line", 373
-    new $P1056, "Undef"
-    .lex "$sigil", $P1056
+.sub "variable_declarator"  :subid("67_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1056
 .annotate "line", 374
-    new $P1057, "Undef"
-    .lex "$name", $P1057
+    .const 'Sub' $P1096 = "68_1267204714.47172" 
+    capture_lex $P1096
+    new $P1055, 'ExceptionHandler'
+    set_addr $P1055, control_1054
+    $P1055."handle_types"(58)
+    push_eh $P1055
+    .lex "self", self
+    .lex "$/", param_1056
 .annotate "line", 375
+    new $P1057, "Undef"
+    .lex "$past", $P1057
+.annotate "line", 376
     new $P1058, "Undef"
-    .lex "$BLOCK", $P1058
-.annotate "line", 372
-    find_lex $P1059, "$/"
-    unless_null $P1059, vivify_355
-    new $P1059, "Hash"
-  vivify_355:
-    set $P1060, $P1059["variable"]
-    unless_null $P1060, vivify_356
+    .lex "$sigil", $P1058
+.annotate "line", 377
+    new $P1059, "Undef"
+    .lex "$name", $P1059
+.annotate "line", 378
     new $P1060, "Undef"
+    .lex "$BLOCK", $P1060
+.annotate "line", 375
+    find_lex $P1061, "$/"
+    unless_null $P1061, vivify_355
+    $P1061 = root_new ['parrot';'Hash']
+  vivify_355:
+    set $P1062, $P1061["variable"]
+    unless_null $P1062, vivify_356
+    new $P1062, "Undef"
   vivify_356:
-    $P1061 = $P1060."ast"()
-    store_lex "$past", $P1061
-.annotate "line", 373
-    find_lex $P1062, "$/"
-    unless_null $P1062, vivify_357
-    new $P1062, "Hash"
+    $P1063 = $P1062."ast"()
+    store_lex "$past", $P1063
+.annotate "line", 376
+    find_lex $P1064, "$/"
+    unless_null $P1064, vivify_357
+    $P1064 = root_new ['parrot';'Hash']
   vivify_357:
-    set $P1063, $P1062["variable"]
-    unless_null $P1063, vivify_358
-    new $P1063, "Hash"
+    set $P1065, $P1064["variable"]
+    unless_null $P1065, vivify_358
+    $P1065 = root_new ['parrot';'Hash']
   vivify_358:
-    set $P1064, $P1063["sigil"]
-    unless_null $P1064, vivify_359
-    new $P1064, "Undef"
+    set $P1066, $P1065["sigil"]
+    unless_null $P1066, vivify_359
+    new $P1066, "Undef"
   vivify_359:
-    store_lex "$sigil", $P1064
-.annotate "line", 374
-    find_lex $P1065, "$past"
-    $P1066 = $P1065."name"()
-    store_lex "$name", $P1066
-.annotate "line", 375
-    get_global $P1067, "@BLOCK"
-    unless_null $P1067, vivify_360
-    new $P1067, "ResizablePMCArray"
+    store_lex "$sigil", $P1066
+.annotate "line", 377
+    find_lex $P1067, "$past"
+    $P1068 = $P1067."name"()
+    store_lex "$name", $P1068
+.annotate "line", 378
+    get_global $P1069, "@BLOCK"
+    unless_null $P1069, vivify_360
+    $P1069 = root_new ['parrot';'ResizablePMCArray']
   vivify_360:
-    set $P1068, $P1067[0]
-    unless_null $P1068, vivify_361
-    new $P1068, "Undef"
+    set $P1070, $P1069[0]
+    unless_null $P1070, vivify_361
+    new $P1070, "Undef"
   vivify_361:
-    store_lex "$BLOCK", $P1068
-.annotate "line", 376
-    find_lex $P1070, "$BLOCK"
-    find_lex $P1071, "$name"
-    $P1072 = $P1070."symbol"($P1071)
-    unless $P1072, if_1069_end
-.annotate "line", 377
-    find_lex $P1073, "$/"
-    $P1074 = $P1073."CURSOR"()
-    find_lex $P1075, "$name"
-    $P1074."panic"("Redeclaration of symbol ", $P1075)
-  if_1069_end:
+    store_lex "$BLOCK", $P1070
 .annotate "line", 379
-    find_dynamic_lex $P1077, "$*SCOPE"
-    unless_null $P1077, vivify_362
-    get_hll_global $P1077, "$SCOPE"
-    unless_null $P1077, vivify_363
+    find_lex $P1072, "$BLOCK"
+    find_lex $P1073, "$name"
+    $P1074 = $P1072."symbol"($P1073)
+    unless $P1074, if_1071_end
+.annotate "line", 380
+    find_lex $P1075, "$/"
+    $P1076 = $P1075."CURSOR"()
+    find_lex $P1077, "$name"
+    $P1076."panic"("Redeclaration of symbol ", $P1077)
+  if_1071_end:
+.annotate "line", 382
+    find_dynamic_lex $P1079, "$*SCOPE"
+    unless_null $P1079, vivify_362
+    get_hll_global $P1079, "$SCOPE"
+    unless_null $P1079, vivify_363
     die "Contextual $*SCOPE not found"
   vivify_363:
   vivify_362:
-    set $S1078, $P1077
-    iseq $I1079, $S1078, "has"
-    if $I1079, if_1076
-.annotate "line", 388
-    .const 'Sub' $P1094 = "68_1261064035.64813" 
-    capture_lex $P1094
-    $P1094()
-    goto if_1076_end
-  if_1076:
-.annotate "line", 380
-    find_lex $P1080, "$BLOCK"
-    find_lex $P1081, "$name"
-    $P1080."symbol"($P1081, "attribute" :named("scope"))
-.annotate "line", 381
-    find_lex $P1083, "$BLOCK"
-    unless_null $P1083, vivify_368
-    new $P1083, "Hash"
+    set $S1080, $P1079
+    iseq $I1081, $S1080, "has"
+    if $I1081, if_1078
+.annotate "line", 391
+    .const 'Sub' $P1096 = "68_1267204714.47172" 
+    capture_lex $P1096
+    $P1096()
+    goto if_1078_end
+  if_1078:
+.annotate "line", 383
+    find_lex $P1082, "$BLOCK"
+    find_lex $P1083, "$name"
+    $P1082."symbol"($P1083, "attribute" :named("scope"))
+.annotate "line", 384
+    find_lex $P1085, "$BLOCK"
+    unless_null $P1085, vivify_368
+    $P1085 = root_new ['parrot';'Hash']
   vivify_368:
-    set $P1084, $P1083["attributes"]
-    unless_null $P1084, vivify_369
-    new $P1084, "Undef"
+    set $P1086, $P1085["attributes"]
+    unless_null $P1086, vivify_369
+    new $P1086, "Undef"
   vivify_369:
-    if $P1084, unless_1082_end
-.annotate "line", 383
-    get_hll_global $P1085, ["PAST"], "Op"
-    $P1086 = $P1085."new"("list" :named("pasttype"), "attr" :named("named"))
-    find_lex $P1087, "$BLOCK"
-    unless_null $P1087, vivify_370
-    new $P1087, "Hash"
-    store_lex "$BLOCK", $P1087
+    if $P1086, unless_1084_end
+.annotate "line", 386
+    get_hll_global $P1087, ["PAST"], "Op"
+    $P1088 = $P1087."new"("list" :named("pasttype"), "attr" :named("named"))
+    find_lex $P1089, "$BLOCK"
+    unless_null $P1089, vivify_370
+    $P1089 = root_new ['parrot';'Hash']
+    store_lex "$BLOCK", $P1089
   vivify_370:
-    set $P1087["attributes"], $P1086
-  unless_1082_end:
-.annotate "line", 385
-    find_lex $P1088, "$BLOCK"
-    unless_null $P1088, vivify_371
-    new $P1088, "Hash"
+    set $P1089["attributes"], $P1088
+  unless_1084_end:
+.annotate "line", 388
+    find_lex $P1090, "$BLOCK"
+    unless_null $P1090, vivify_371
+    $P1090 = root_new ['parrot';'Hash']
   vivify_371:
-    set $P1089, $P1088["attributes"]
-    unless_null $P1089, vivify_372
-    new $P1089, "Undef"
+    set $P1091, $P1090["attributes"]
+    unless_null $P1091, vivify_372
+    new $P1091, "Undef"
   vivify_372:
-    find_lex $P1090, "$name"
-    $P1089."push"($P1090)
-.annotate "line", 386
-    get_hll_global $P1091, ["PAST"], "Stmts"
-    $P1092 = $P1091."new"()
-    store_lex "$past", $P1092
-  if_1076_end:
-.annotate "line", 396
-    find_lex $P1118, "$/"
-    find_lex $P1119, "$past"
-    $P1120 = $P1118."!make"($P1119)
-.annotate "line", 371
-    .return ($P1120)
-  control_1052:
+    find_lex $P1092, "$name"
+    $P1091."push"($P1092)
+.annotate "line", 389
+    get_hll_global $P1093, ["PAST"], "Stmts"
+    $P1094 = $P1093."new"()
+    store_lex "$past", $P1094
+  if_1078_end:
+.annotate "line", 399
+    find_lex $P1120, "$/"
+    find_lex $P1121, "$past"
+    $P1122 = $P1120."!make"($P1121)
+.annotate "line", 374
+    .return ($P1122)
+  control_1054:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1121, exception, "payload"
-    .return ($P1121)
+    getattribute $P1123, exception, "payload"
+    .return ($P1123)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1093"  :anon :subid("68_1261064035.64813") :outer("67_1261064035.64813")
-.annotate "line", 389
-    new $P1095, "Undef"
-    .lex "$scope", $P1095
-.annotate "line", 390
-    new $P1096, "Undef"
-    .lex "$decl", $P1096
-.annotate "line", 389
-    find_dynamic_lex $P1099, "$*SCOPE"
-    unless_null $P1099, vivify_364
-    get_hll_global $P1099, "$SCOPE"
-    unless_null $P1099, vivify_365
+.sub "_block1095"  :anon :subid("68_1267204714.47172") :outer("67_1267204714.47172")
+.annotate "line", 392
+    new $P1097, "Undef"
+    .lex "$scope", $P1097
+.annotate "line", 393
+    new $P1098, "Undef"
+    .lex "$decl", $P1098
+.annotate "line", 392
+    find_dynamic_lex $P1101, "$*SCOPE"
+    unless_null $P1101, vivify_364
+    get_hll_global $P1101, "$SCOPE"
+    unless_null $P1101, vivify_365
     die "Contextual $*SCOPE not found"
   vivify_365:
   vivify_364:
-    set $S1100, $P1099
-    iseq $I1101, $S1100, "our"
-    if $I1101, if_1098
-    new $P1103, "String"
-    assign $P1103, "lexical"
-    set $P1097, $P1103
-    goto if_1098_end
-  if_1098:
-    new $P1102, "String"
-    assign $P1102, "package"
-    set $P1097, $P1102
-  if_1098_end:
-    store_lex "$scope", $P1097
-.annotate "line", 390
-    get_hll_global $P1104, ["PAST"], "Var"
-    find_lex $P1105, "$name"
-    find_lex $P1106, "$scope"
-.annotate "line", 391
-    find_lex $P1107, "$sigil"
-    $P1108 = "sigiltype"($P1107)
-    find_lex $P1109, "$/"
-    $P1110 = $P1104."new"($P1105 :named("name"), $P1106 :named("scope"), 1 :named("isdecl"), 1 :named("lvalue"), $P1108 :named("viviself"), $P1109 :named("node"))
-.annotate "line", 390
-    store_lex "$decl", $P1110
+    set $S1102, $P1101
+    iseq $I1103, $S1102, "our"
+    if $I1103, if_1100
+    new $P1105, "String"
+    assign $P1105, "lexical"
+    set $P1099, $P1105
+    goto if_1100_end
+  if_1100:
+    new $P1104, "String"
+    assign $P1104, "package"
+    set $P1099, $P1104
+  if_1100_end:
+    store_lex "$scope", $P1099
 .annotate "line", 393
-    find_lex $P1111, "$BLOCK"
-    find_lex $P1112, "$name"
-    find_lex $P1113, "$scope"
-    $P1111."symbol"($P1112, $P1113 :named("scope"))
+    get_hll_global $P1106, ["PAST"], "Var"
+    find_lex $P1107, "$name"
+    find_lex $P1108, "$scope"
 .annotate "line", 394
-    find_lex $P1114, "$BLOCK"
-    unless_null $P1114, vivify_366
-    new $P1114, "ResizablePMCArray"
+    find_lex $P1109, "$sigil"
+    $P1110 = "vivitype"($P1109)
+    find_lex $P1111, "$/"
+    $P1112 = $P1106."new"($P1107 :named("name"), $P1108 :named("scope"), 1 :named("isdecl"), 1 :named("lvalue"), $P1110 :named("viviself"), $P1111 :named("node"))
+.annotate "line", 393
+    store_lex "$decl", $P1112
+.annotate "line", 396
+    find_lex $P1113, "$BLOCK"
+    find_lex $P1114, "$name"
+    find_lex $P1115, "$scope"
+    $P1113."symbol"($P1114, $P1115 :named("scope"))
+.annotate "line", 397
+    find_lex $P1116, "$BLOCK"
+    unless_null $P1116, vivify_366
+    $P1116 = root_new ['parrot';'ResizablePMCArray']
   vivify_366:
-    set $P1115, $P1114[0]
-    unless_null $P1115, vivify_367
-    new $P1115, "Undef"
+    set $P1117, $P1116[0]
+    unless_null $P1117, vivify_367
+    new $P1117, "Undef"
   vivify_367:
-    find_lex $P1116, "$decl"
-    $P1117 = $P1115."push"($P1116)
-.annotate "line", 388
-    .return ($P1117)
+    find_lex $P1118, "$decl"
+    $P1119 = $P1117."push"($P1118)
+.annotate "line", 391
+    .return ($P1119)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<sub>"  :subid("69_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1125
-.annotate "line", 399
-    new $P1124, 'ExceptionHandler'
-    set_addr $P1124, control_1123
-    $P1124."handle_types"(58)
-    push_eh $P1124
-    .lex "self", self
-    .lex "$/", param_1125
-    find_lex $P1126, "$/"
-    find_lex $P1127, "$/"
-    unless_null $P1127, vivify_373
-    new $P1127, "Hash"
+.sub "routine_declarator:sym<sub>"  :subid("69_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1127
+.annotate "line", 402
+    new $P1126, 'ExceptionHandler'
+    set_addr $P1126, control_1125
+    $P1126."handle_types"(58)
+    push_eh $P1126
+    .lex "self", self
+    .lex "$/", param_1127
+    find_lex $P1128, "$/"
+    find_lex $P1129, "$/"
+    unless_null $P1129, vivify_373
+    $P1129 = root_new ['parrot';'Hash']
   vivify_373:
-    set $P1128, $P1127["routine_def"]
-    unless_null $P1128, vivify_374
-    new $P1128, "Undef"
+    set $P1130, $P1129["routine_def"]
+    unless_null $P1130, vivify_374
+    new $P1130, "Undef"
   vivify_374:
-    $P1129 = $P1128."ast"()
-    $P1130 = $P1126."!make"($P1129)
-    .return ($P1130)
-  control_1123:
+    $P1131 = $P1130."ast"()
+    $P1132 = $P1128."!make"($P1131)
+    .return ($P1132)
+  control_1125:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1131, exception, "payload"
-    .return ($P1131)
+    getattribute $P1133, exception, "payload"
+    .return ($P1133)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<method>"  :subid("70_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1135
-.annotate "line", 400
-    new $P1134, 'ExceptionHandler'
-    set_addr $P1134, control_1133
-    $P1134."handle_types"(58)
-    push_eh $P1134
-    .lex "self", self
-    .lex "$/", param_1135
-    find_lex $P1136, "$/"
-    find_lex $P1137, "$/"
-    unless_null $P1137, vivify_375
-    new $P1137, "Hash"
+.sub "routine_declarator:sym<method>"  :subid("70_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1137
+.annotate "line", 403
+    new $P1136, 'ExceptionHandler'
+    set_addr $P1136, control_1135
+    $P1136."handle_types"(58)
+    push_eh $P1136
+    .lex "self", self
+    .lex "$/", param_1137
+    find_lex $P1138, "$/"
+    find_lex $P1139, "$/"
+    unless_null $P1139, vivify_375
+    $P1139 = root_new ['parrot';'Hash']
   vivify_375:
-    set $P1138, $P1137["method_def"]
-    unless_null $P1138, vivify_376
-    new $P1138, "Undef"
+    set $P1140, $P1139["method_def"]
+    unless_null $P1140, vivify_376
+    new $P1140, "Undef"
   vivify_376:
-    $P1139 = $P1138."ast"()
-    $P1140 = $P1136."!make"($P1139)
-    .return ($P1140)
-  control_1133:
+    $P1141 = $P1140."ast"()
+    $P1142 = $P1138."!make"($P1141)
+    .return ($P1142)
+  control_1135:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1141, exception, "payload"
-    .return ($P1141)
+    getattribute $P1143, exception, "payload"
+    .return ($P1143)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_def"  :subid("71_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1145
-.annotate "line", 402
-    .const 'Sub' $P1156 = "72_1261064035.64813" 
-    capture_lex $P1156
-    new $P1144, 'ExceptionHandler'
-    set_addr $P1144, control_1143
-    $P1144."handle_types"(58)
-    push_eh $P1144
+.sub "routine_def"  :subid("71_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1147
+.annotate "line", 405
+    .const 'Sub' $P1158 = "72_1267204714.47172" 
+    capture_lex $P1158
+    new $P1146, 'ExceptionHandler'
+    set_addr $P1146, control_1145
+    $P1146."handle_types"(58)
+    push_eh $P1146
     .lex "self", self
-    .lex "$/", param_1145
-.annotate "line", 403
-    new $P1146, "Undef"
-    .lex "$past", $P1146
-    find_lex $P1147, "$/"
-    unless_null $P1147, vivify_377
-    new $P1147, "Hash"
-  vivify_377:
-    set $P1148, $P1147["blockoid"]
-    unless_null $P1148, vivify_378
+    .lex "$/", param_1147
+.annotate "line", 406
     new $P1148, "Undef"
+    .lex "$past", $P1148
+    find_lex $P1149, "$/"
+    unless_null $P1149, vivify_377
+    $P1149 = root_new ['parrot';'Hash']
+  vivify_377:
+    set $P1150, $P1149["blockoid"]
+    unless_null $P1150, vivify_378
+    new $P1150, "Undef"
   vivify_378:
-    $P1149 = $P1148."ast"()
-    store_lex "$past", $P1149
-.annotate "line", 404
-    find_lex $P1150, "$past"
-    $P1150."blocktype"("declaration")
-.annotate "line", 405
-    find_lex $P1151, "$past"
-    $P1151."control"("return_pir")
-.annotate "line", 406
-    find_lex $P1153, "$/"
-    unless_null $P1153, vivify_379
-    new $P1153, "Hash"
+    $P1151 = $P1150."ast"()
+    store_lex "$past", $P1151
+.annotate "line", 407
+    find_lex $P1152, "$past"
+    $P1152."blocktype"("declaration")
+.annotate "line", 408
+    find_lex $P1153, "$past"
+    $P1153."control"("return_pir")
+.annotate "line", 409
+    find_lex $P1155, "$/"
+    unless_null $P1155, vivify_379
+    $P1155 = root_new ['parrot';'Hash']
   vivify_379:
-    set $P1154, $P1153["deflongname"]
-    unless_null $P1154, vivify_380
-    new $P1154, "Undef"
+    set $P1156, $P1155["deflongname"]
+    unless_null $P1156, vivify_380
+    new $P1156, "Undef"
   vivify_380:
-    unless $P1154, if_1152_end
-    .const 'Sub' $P1156 = "72_1261064035.64813" 
-    capture_lex $P1156
-    $P1156()
-  if_1152_end:
-.annotate "line", 416
-    find_lex $P1188, "$/"
-    find_lex $P1189, "$past"
-    $P1190 = $P1188."!make"($P1189)
-.annotate "line", 402
-    .return ($P1190)
-  control_1143:
+    unless $P1156, if_1154_end
+    .const 'Sub' $P1158 = "72_1267204714.47172" 
+    capture_lex $P1158
+    $P1158()
+  if_1154_end:
+.annotate "line", 419
+    find_lex $P1190, "$/"
+    find_lex $P1191, "$past"
+    $P1192 = $P1190."!make"($P1191)
+.annotate "line", 405
+    .return ($P1192)
+  control_1145:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1191, exception, "payload"
-    .return ($P1191)
+    getattribute $P1193, exception, "payload"
+    .return ($P1193)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1155"  :anon :subid("72_1261064035.64813") :outer("71_1261064035.64813")
-.annotate "line", 407
-    new $P1157, "Undef"
-    .lex "$name", $P1157
-    find_lex $P1158, "$/"
-    unless_null $P1158, vivify_381
-    new $P1158, "Hash"
+.sub "_block1157"  :anon :subid("72_1267204714.47172") :outer("71_1267204714.47172")
+.annotate "line", 410
+    new $P1159, "Undef"
+    .lex "$name", $P1159
+    find_lex $P1160, "$/"
+    unless_null $P1160, vivify_381
+    $P1160 = root_new ['parrot';'Hash']
   vivify_381:
-    set $P1159, $P1158["sigil"]
-    unless_null $P1159, vivify_382
-    new $P1159, "ResizablePMCArray"
+    set $P1161, $P1160["sigil"]
+    unless_null $P1161, vivify_382
+    $P1161 = root_new ['parrot';'ResizablePMCArray']
   vivify_382:
-    set $P1160, $P1159[0]
-    unless_null $P1160, vivify_383
-    new $P1160, "Undef"
+    set $P1162, $P1161[0]
+    unless_null $P1162, vivify_383
+    new $P1162, "Undef"
   vivify_383:
-    set $S1161, $P1160
-    new $P1162, 'String'
-    set $P1162, $S1161
-    find_lex $P1163, "$/"
-    unless_null $P1163, vivify_384
-    new $P1163, "Hash"
+    set $S1163, $P1162
+    new $P1164, 'String'
+    set $P1164, $S1163
+    find_lex $P1165, "$/"
+    unless_null $P1165, vivify_384
+    $P1165 = root_new ['parrot';'Hash']
   vivify_384:
-    set $P1164, $P1163["deflongname"]
-    unless_null $P1164, vivify_385
-    new $P1164, "ResizablePMCArray"
+    set $P1166, $P1165["deflongname"]
+    unless_null $P1166, vivify_385
+    $P1166 = root_new ['parrot';'ResizablePMCArray']
   vivify_385:
-    set $P1165, $P1164[0]
-    unless_null $P1165, vivify_386
-    new $P1165, "Undef"
+    set $P1167, $P1166[0]
+    unless_null $P1167, vivify_386
+    new $P1167, "Undef"
   vivify_386:
-    $S1166 = $P1165."ast"()
-    concat $P1167, $P1162, $S1166
-    store_lex "$name", $P1167
-.annotate "line", 408
-    find_lex $P1168, "$past"
-    find_lex $P1169, "$name"
-    $P1168."name"($P1169)
-.annotate "line", 409
-    find_dynamic_lex $P1172, "$*SCOPE"
-    unless_null $P1172, vivify_387
-    get_hll_global $P1172, "$SCOPE"
-    unless_null $P1172, vivify_388
+    $S1168 = $P1167."ast"()
+    concat $P1169, $P1164, $S1168
+    store_lex "$name", $P1169
+.annotate "line", 411
+    find_lex $P1170, "$past"
+    find_lex $P1171, "$name"
+    $P1170."name"($P1171)
+.annotate "line", 412
+    find_dynamic_lex $P1174, "$*SCOPE"
+    unless_null $P1174, vivify_387
+    get_hll_global $P1174, "$SCOPE"
+    unless_null $P1174, vivify_388
     die "Contextual $*SCOPE not found"
   vivify_388:
   vivify_387:
-    set $S1173, $P1172
-    isne $I1174, $S1173, "our"
-    if $I1174, if_1171
-    new $P1170, 'Integer'
-    set $P1170, $I1174
-    goto if_1171_end
-  if_1171:
-.annotate "line", 410
-    get_global $P1175, "@BLOCK"
-    unless_null $P1175, vivify_389
-    new $P1175, "ResizablePMCArray"
+    set $S1175, $P1174
+    isne $I1176, $S1175, "our"
+    if $I1176, if_1173
+    new $P1172, 'Integer'
+    set $P1172, $I1176
+    goto if_1173_end
+  if_1173:
+.annotate "line", 413
+    get_global $P1177, "@BLOCK"
+    unless_null $P1177, vivify_389
+    $P1177 = root_new ['parrot';'ResizablePMCArray']
   vivify_389:
-    set $P1176, $P1175[0]
-    unless_null $P1176, vivify_390
-    new $P1176, "ResizablePMCArray"
+    set $P1178, $P1177[0]
+    unless_null $P1178, vivify_390
+    $P1178 = root_new ['parrot';'ResizablePMCArray']
   vivify_390:
-    set $P1177, $P1176[0]
-    unless_null $P1177, vivify_391
-    new $P1177, "Undef"
+    set $P1179, $P1178[0]
+    unless_null $P1179, vivify_391
+    new $P1179, "Undef"
   vivify_391:
-    get_hll_global $P1178, ["PAST"], "Var"
-    find_lex $P1179, "$name"
-    find_lex $P1180, "$past"
-    $P1181 = $P1178."new"($P1179 :named("name"), 1 :named("isdecl"), $P1180 :named("viviself"), "lexical" :named("scope"))
-    $P1177."push"($P1181)
-.annotate "line", 412
-    get_global $P1182, "@BLOCK"
-    unless_null $P1182, vivify_392
-    new $P1182, "ResizablePMCArray"
+    get_hll_global $P1180, ["PAST"], "Var"
+    find_lex $P1181, "$name"
+    find_lex $P1182, "$past"
+    $P1183 = $P1180."new"($P1181 :named("name"), 1 :named("isdecl"), $P1182 :named("viviself"), "lexical" :named("scope"))
+    $P1179."push"($P1183)
+.annotate "line", 415
+    get_global $P1184, "@BLOCK"
+    unless_null $P1184, vivify_392
+    $P1184 = root_new ['parrot';'ResizablePMCArray']
   vivify_392:
-    set $P1183, $P1182[0]
-    unless_null $P1183, vivify_393
-    new $P1183, "Undef"
+    set $P1185, $P1184[0]
+    unless_null $P1185, vivify_393
+    new $P1185, "Undef"
   vivify_393:
-    find_lex $P1184, "$name"
-    $P1183."symbol"($P1184, "lexical" :named("scope"))
-.annotate "line", 413
-    get_hll_global $P1185, ["PAST"], "Var"
     find_lex $P1186, "$name"
-    $P1187 = $P1185."new"($P1186 :named("name"))
-    store_lex "$past", $P1187
+    $P1185."symbol"($P1186, "lexical" :named("scope"))
+.annotate "line", 416
+    get_hll_global $P1187, ["PAST"], "Var"
+    find_lex $P1188, "$name"
+    $P1189 = $P1187."new"($P1188 :named("name"))
+    store_lex "$past", $P1189
+.annotate "line", 412
+    set $P1172, $P1189
+  if_1173_end:
 .annotate "line", 409
-    set $P1170, $P1187
-  if_1171_end:
-.annotate "line", 406
-    .return ($P1170)
+    .return ($P1172)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "method_def"  :subid("73_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1195
-.annotate "line", 420
-    .const 'Sub' $P1211 = "74_1261064035.64813" 
-    capture_lex $P1211
-    new $P1194, 'ExceptionHandler'
-    set_addr $P1194, control_1193
-    $P1194."handle_types"(58)
-    push_eh $P1194
+.sub "method_def"  :subid("73_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1197
+.annotate "line", 423
+    .const 'Sub' $P1213 = "74_1267204714.47172" 
+    capture_lex $P1213
+    new $P1196, 'ExceptionHandler'
+    set_addr $P1196, control_1195
+    $P1196."handle_types"(58)
+    push_eh $P1196
     .lex "self", self
-    .lex "$/", param_1195
-.annotate "line", 421
-    new $P1196, "Undef"
-    .lex "$past", $P1196
-    find_lex $P1197, "$/"
-    unless_null $P1197, vivify_394
-    new $P1197, "Hash"
-  vivify_394:
-    set $P1198, $P1197["blockoid"]
-    unless_null $P1198, vivify_395
+    .lex "$/", param_1197
+.annotate "line", 424
     new $P1198, "Undef"
+    .lex "$past", $P1198
+    find_lex $P1199, "$/"
+    unless_null $P1199, vivify_394
+    $P1199 = root_new ['parrot';'Hash']
+  vivify_394:
+    set $P1200, $P1199["blockoid"]
+    unless_null $P1200, vivify_395
+    new $P1200, "Undef"
   vivify_395:
-    $P1199 = $P1198."ast"()
-    store_lex "$past", $P1199
-.annotate "line", 422
-    find_lex $P1200, "$past"
-    $P1200."blocktype"("method")
-.annotate "line", 423
-    find_lex $P1201, "$past"
-    $P1201."control"("return_pir")
-.annotate "line", 424
+    $P1201 = $P1200."ast"()
+    store_lex "$past", $P1201
+.annotate "line", 425
     find_lex $P1202, "$past"
-    unless_null $P1202, vivify_396
-    new $P1202, "ResizablePMCArray"
+    $P1202."blocktype"("method")
+.annotate "line", 426
+    find_lex $P1203, "$past"
+    $P1203."control"("return_pir")
+.annotate "line", 427
+    find_lex $P1204, "$past"
+    unless_null $P1204, vivify_396
+    $P1204 = root_new ['parrot';'ResizablePMCArray']
   vivify_396:
-    set $P1203, $P1202[0]
-    unless_null $P1203, vivify_397
-    new $P1203, "Undef"
+    set $P1205, $P1204[0]
+    unless_null $P1205, vivify_397
+    new $P1205, "Undef"
   vivify_397:
-    get_hll_global $P1204, ["PAST"], "Op"
-    $P1205 = $P1204."new"("    .lex \"self\", self" :named("inline"))
-    $P1203."unshift"($P1205)
-.annotate "line", 425
-    find_lex $P1206, "$past"
-    $P1206."symbol"("self", "lexical" :named("scope"))
-.annotate "line", 426
-    find_lex $P1208, "$/"
-    unless_null $P1208, vivify_398
-    new $P1208, "Hash"
+    get_hll_global $P1206, ["PAST"], "Op"
+    $P1207 = $P1206."new"("    .lex \"self\", self" :named("inline"))
+    $P1205."unshift"($P1207)
+.annotate "line", 428
+    find_lex $P1208, "$past"
+    $P1208."symbol"("self", "lexical" :named("scope"))
+.annotate "line", 429
+    find_lex $P1210, "$/"
+    unless_null $P1210, vivify_398
+    $P1210 = root_new ['parrot';'Hash']
   vivify_398:
-    set $P1209, $P1208["deflongname"]
-    unless_null $P1209, vivify_399
-    new $P1209, "Undef"
+    set $P1211, $P1210["deflongname"]
+    unless_null $P1211, vivify_399
+    new $P1211, "Undef"
   vivify_399:
-    unless $P1209, if_1207_end
-    .const 'Sub' $P1211 = "74_1261064035.64813" 
-    capture_lex $P1211
-    $P1211()
-  if_1207_end:
-.annotate "line", 430
-    find_lex $P1222, "$/"
-    find_lex $P1223, "$past"
-    $P1224 = $P1222."!make"($P1223)
-.annotate "line", 420
-    .return ($P1224)
-  control_1193:
+    unless $P1211, if_1209_end
+    .const 'Sub' $P1213 = "74_1267204714.47172" 
+    capture_lex $P1213
+    $P1213()
+  if_1209_end:
+.annotate "line", 433
+    find_lex $P1224, "$/"
+    find_lex $P1225, "$past"
+    $P1226 = $P1224."!make"($P1225)
+.annotate "line", 423
+    .return ($P1226)
+  control_1195:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1225, exception, "payload"
-    .return ($P1225)
+    getattribute $P1227, exception, "payload"
+    .return ($P1227)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1210"  :anon :subid("74_1261064035.64813") :outer("73_1261064035.64813")
-.annotate "line", 427
-    new $P1212, "Undef"
-    .lex "$name", $P1212
-    find_lex $P1213, "$/"
-    unless_null $P1213, vivify_400
-    new $P1213, "Hash"
+.sub "_block1212"  :anon :subid("74_1267204714.47172") :outer("73_1267204714.47172")
+.annotate "line", 430
+    new $P1214, "Undef"
+    .lex "$name", $P1214
+    find_lex $P1215, "$/"
+    unless_null $P1215, vivify_400
+    $P1215 = root_new ['parrot';'Hash']
   vivify_400:
-    set $P1214, $P1213["deflongname"]
-    unless_null $P1214, vivify_401
-    new $P1214, "ResizablePMCArray"
+    set $P1216, $P1215["deflongname"]
+    unless_null $P1216, vivify_401
+    $P1216 = root_new ['parrot';'ResizablePMCArray']
   vivify_401:
-    set $P1215, $P1214[0]
-    unless_null $P1215, vivify_402
-    new $P1215, "Undef"
+    set $P1217, $P1216[0]
+    unless_null $P1217, vivify_402
+    new $P1217, "Undef"
   vivify_402:
-    $P1216 = $P1215."ast"()
-    set $S1217, $P1216
-    new $P1218, 'String'
-    set $P1218, $S1217
-    store_lex "$name", $P1218
-.annotate "line", 428
-    find_lex $P1219, "$past"
-    find_lex $P1220, "$name"
-    $P1221 = $P1219."name"($P1220)
-.annotate "line", 426
-    .return ($P1221)
+    $P1218 = $P1217."ast"()
+    set $S1219, $P1218
+    new $P1220, 'String'
+    set $P1220, $S1219
+    store_lex "$name", $P1220
+.annotate "line", 431
+    find_lex $P1221, "$past"
+    find_lex $P1222, "$name"
+    $P1223 = $P1221."name"($P1222)
+.annotate "line", 429
+    .return ($P1223)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "signature"  :subid("75_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1229
-.annotate "line", 434
-    .const 'Sub' $P1240 = "76_1261064035.64813" 
-    capture_lex $P1240
-    new $P1228, 'ExceptionHandler'
-    set_addr $P1228, control_1227
-    $P1228."handle_types"(58)
-    push_eh $P1228
-    .lex "self", self
-    .lex "$/", param_1229
-.annotate "line", 435
-    new $P1230, "Undef"
-    .lex "$BLOCKINIT", $P1230
-    get_global $P1231, "@BLOCK"
-    unless_null $P1231, vivify_403
-    new $P1231, "ResizablePMCArray"
+.sub "signature"  :subid("75_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1231
+.annotate "line", 437
+    .const 'Sub' $P1242 = "76_1267204714.47172" 
+    capture_lex $P1242
+    new $P1230, 'ExceptionHandler'
+    set_addr $P1230, control_1229
+    $P1230."handle_types"(58)
+    push_eh $P1230
+    .lex "self", self
+    .lex "$/", param_1231
+.annotate "line", 438
+    new $P1232, "Undef"
+    .lex "$BLOCKINIT", $P1232
+    get_global $P1233, "@BLOCK"
+    unless_null $P1233, vivify_403
+    $P1233 = root_new ['parrot';'ResizablePMCArray']
   vivify_403:
-    set $P1232, $P1231[0]
-    unless_null $P1232, vivify_404
-    new $P1232, "ResizablePMCArray"
+    set $P1234, $P1233[0]
+    unless_null $P1234, vivify_404
+    $P1234 = root_new ['parrot';'ResizablePMCArray']
   vivify_404:
-    set $P1233, $P1232[0]
-    unless_null $P1233, vivify_405
-    new $P1233, "Undef"
+    set $P1235, $P1234[0]
+    unless_null $P1235, vivify_405
+    new $P1235, "Undef"
   vivify_405:
-    store_lex "$BLOCKINIT", $P1233
-.annotate "line", 436
-    find_lex $P1235, "$/"
-    unless_null $P1235, vivify_406
-    new $P1235, "Hash"
+    store_lex "$BLOCKINIT", $P1235
+.annotate "line", 439
+    find_lex $P1237, "$/"
+    unless_null $P1237, vivify_406
+    $P1237 = root_new ['parrot';'Hash']
   vivify_406:
-    set $P1236, $P1235["parameter"]
-    unless_null $P1236, vivify_407
-    new $P1236, "Undef"
+    set $P1238, $P1237["parameter"]
+    unless_null $P1238, vivify_407
+    new $P1238, "Undef"
   vivify_407:
-    defined $I1237, $P1236
-    unless $I1237, for_undef_408
-    iter $P1234, $P1236
-    new $P1247, 'ExceptionHandler'
-    set_addr $P1247, loop1246_handler
-    $P1247."handle_types"(65, 67, 66)
-    push_eh $P1247
-  loop1246_test:
-    unless $P1234, loop1246_done
-    shift $P1238, $P1234
-  loop1246_redo:
-    .const 'Sub' $P1240 = "76_1261064035.64813" 
-    capture_lex $P1240
-    $P1240($P1238)
-  loop1246_next:
-    goto loop1246_test
-  loop1246_handler:
+    defined $I1239, $P1238
+    unless $I1239, for_undef_408
+    iter $P1236, $P1238
+    new $P1249, 'ExceptionHandler'
+    set_addr $P1249, loop1248_handler
+    $P1249."handle_types"(65, 67, 66)
+    push_eh $P1249
+  loop1248_test:
+    unless $P1236, loop1248_done
+    shift $P1240, $P1236
+  loop1248_redo:
+    .const 'Sub' $P1242 = "76_1267204714.47172" 
+    capture_lex $P1242
+    $P1242($P1240)
+  loop1248_next:
+    goto loop1248_test
+  loop1248_handler:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1248, exception, 'type'
-    eq $P1248, 65, loop1246_next
-    eq $P1248, 67, loop1246_redo
-  loop1246_done:
+    getattribute $P1250, exception, 'type'
+    eq $P1250, 65, loop1248_next
+    eq $P1250, 67, loop1248_redo
+  loop1248_done:
     pop_eh 
   for_undef_408:
-.annotate "line", 434
-    .return ($P1234)
-  control_1227:
+.annotate "line", 437
+    .return ($P1236)
+  control_1229:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1249, exception, "payload"
-    .return ($P1249)
+    getattribute $P1251, exception, "payload"
+    .return ($P1251)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1239"  :anon :subid("76_1261064035.64813") :outer("75_1261064035.64813")
-    .param pmc param_1241
-.annotate "line", 436
-    .lex "$_", param_1241
-    find_lex $P1242, "$BLOCKINIT"
-    find_lex $P1243, "$_"
-    $P1244 = $P1243."ast"()
-    $P1245 = $P1242."push"($P1244)
-    .return ($P1245)
+.sub "_block1241"  :anon :subid("76_1267204714.47172") :outer("75_1267204714.47172")
+    .param pmc param_1243
+.annotate "line", 439
+    .lex "$_", param_1243
+    find_lex $P1244, "$BLOCKINIT"
+    find_lex $P1245, "$_"
+    $P1246 = $P1245."ast"()
+    $P1247 = $P1244."push"($P1246)
+    .return ($P1247)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "parameter"  :subid("77_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1253
-.annotate "line", 439
-    new $P1252, 'ExceptionHandler'
-    set_addr $P1252, control_1251
-    $P1252."handle_types"(58)
-    push_eh $P1252
+.sub "parameter"  :subid("77_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1255
+.annotate "line", 442
+    new $P1254, 'ExceptionHandler'
+    set_addr $P1254, control_1253
+    $P1254."handle_types"(58)
+    push_eh $P1254
     .lex "self", self
-    .lex "$/", param_1253
-.annotate "line", 440
-    new $P1254, "Undef"
-    .lex "$quant", $P1254
-.annotate "line", 441
-    new $P1255, "Undef"
-    .lex "$past", $P1255
-.annotate "line", 440
-    find_lex $P1256, "$/"
-    unless_null $P1256, vivify_409
-    new $P1256, "Hash"
-  vivify_409:
-    set $P1257, $P1256["quant"]
-    unless_null $P1257, vivify_410
+    .lex "$/", param_1255
+.annotate "line", 443
+    new $P1256, "Undef"
+    .lex "$quant", $P1256
+.annotate "line", 444
     new $P1257, "Undef"
+    .lex "$past", $P1257
+.annotate "line", 443
+    find_lex $P1258, "$/"
+    unless_null $P1258, vivify_409
+    $P1258 = root_new ['parrot';'Hash']
+  vivify_409:
+    set $P1259, $P1258["quant"]
+    unless_null $P1259, vivify_410
+    new $P1259, "Undef"
   vivify_410:
-    store_lex "$quant", $P1257
-    find_lex $P1258, "$past"
-.annotate "line", 442
-    find_lex $P1260, "$/"
-    unless_null $P1260, vivify_411
-    new $P1260, "Hash"
+    store_lex "$quant", $P1259
+    find_lex $P1260, "$past"
+.annotate "line", 445
+    find_lex $P1262, "$/"
+    unless_null $P1262, vivify_411
+    $P1262 = root_new ['parrot';'Hash']
   vivify_411:
-    set $P1261, $P1260["named_param"]
-    unless_null $P1261, vivify_412
-    new $P1261, "Undef"
+    set $P1263, $P1262["named_param"]
+    unless_null $P1263, vivify_412
+    new $P1263, "Undef"
   vivify_412:
-    if $P1261, if_1259
-.annotate "line", 449
-    find_lex $P1275, "$/"
-    unless_null $P1275, vivify_413
-    new $P1275, "Hash"
+    if $P1263, if_1261
+.annotate "line", 452
+    find_lex $P1277, "$/"
+    unless_null $P1277, vivify_413
+    $P1277 = root_new ['parrot';'Hash']
   vivify_413:
-    set $P1276, $P1275["param_var"]
-    unless_null $P1276, vivify_414
-    new $P1276, "Undef"
+    set $P1278, $P1277["param_var"]
+    unless_null $P1278, vivify_414
+    new $P1278, "Undef"
   vivify_414:
-    $P1277 = $P1276."ast"()
-    store_lex "$past", $P1277
-.annotate "line", 450
-    find_lex $P1279, "$quant"
-    set $S1280, $P1279
-    iseq $I1281, $S1280, "*"
-    if $I1281, if_1278
-.annotate "line", 454
-    find_lex $P1290, "$quant"
-    set $S1291, $P1290
-    iseq $I1292, $S1291, "?"
-    unless $I1292, if_1289_end
-.annotate "line", 455
-    find_lex $P1293, "$past"
-    find_lex $P1294, "$/"
-    unless_null $P1294, vivify_415
-    new $P1294, "Hash"
+    $P1279 = $P1278."ast"()
+    store_lex "$past", $P1279
+.annotate "line", 453
+    find_lex $P1281, "$quant"
+    set $S1282, $P1281
+    iseq $I1283, $S1282, "*"
+    if $I1283, if_1280
+.annotate "line", 457
+    find_lex $P1292, "$quant"
+    set $S1293, $P1292
+    iseq $I1294, $S1293, "?"
+    unless $I1294, if_1291_end
+.annotate "line", 458
+    find_lex $P1295, "$past"
+    find_lex $P1296, "$/"
+    unless_null $P1296, vivify_415
+    $P1296 = root_new ['parrot';'Hash']
   vivify_415:
-    set $P1295, $P1294["param_var"]
-    unless_null $P1295, vivify_416
-    new $P1295, "Hash"
+    set $P1297, $P1296["param_var"]
+    unless_null $P1297, vivify_416
+    $P1297 = root_new ['parrot';'Hash']
   vivify_416:
-    set $P1296, $P1295["sigil"]
-    unless_null $P1296, vivify_417
-    new $P1296, "Undef"
+    set $P1298, $P1297["sigil"]
+    unless_null $P1298, vivify_417
+    new $P1298, "Undef"
   vivify_417:
-    $P1297 = "sigiltype"($P1296)
-    $P1293."viviself"($P1297)
-  if_1289_end:
+    $P1299 = "vivitype"($P1298)
+    $P1295."viviself"($P1299)
+  if_1291_end:
+.annotate "line", 457
+    goto if_1280_end
+  if_1280:
 .annotate "line", 454
-    goto if_1278_end
-  if_1278:
-.annotate "line", 451
-    find_lex $P1282, "$past"
-    $P1282."slurpy"(1)
-.annotate "line", 452
-    find_lex $P1283, "$past"
-    find_lex $P1284, "$/"
-    unless_null $P1284, vivify_418
-    new $P1284, "Hash"
+    find_lex $P1284, "$past"
+    $P1284."slurpy"(1)
+.annotate "line", 455
+    find_lex $P1285, "$past"
+    find_lex $P1286, "$/"
+    unless_null $P1286, vivify_418
+    $P1286 = root_new ['parrot';'Hash']
   vivify_418:
-    set $P1285, $P1284["param_var"]
-    unless_null $P1285, vivify_419
-    new $P1285, "Hash"
+    set $P1287, $P1286["param_var"]
+    unless_null $P1287, vivify_419
+    $P1287 = root_new ['parrot';'Hash']
   vivify_419:
-    set $P1286, $P1285["sigil"]
-    unless_null $P1286, vivify_420
-    new $P1286, "Undef"
+    set $P1288, $P1287["sigil"]
+    unless_null $P1288, vivify_420
+    new $P1288, "Undef"
   vivify_420:
-    set $S1287, $P1286
-    iseq $I1288, $S1287, "%"
-    $P1283."named"($I1288)
-  if_1278_end:
-.annotate "line", 448
-    goto if_1259_end
-  if_1259:
-.annotate "line", 443
-    find_lex $P1262, "$/"
-    unless_null $P1262, vivify_421
-    new $P1262, "Hash"
+    set $S1289, $P1288
+    iseq $I1290, $S1289, "%"
+    $P1285."named"($I1290)
+  if_1280_end:
+.annotate "line", 451
+    goto if_1261_end
+  if_1261:
+.annotate "line", 446
+    find_lex $P1264, "$/"
+    unless_null $P1264, vivify_421
+    $P1264 = root_new ['parrot';'Hash']
   vivify_421:
-    set $P1263, $P1262["named_param"]
-    unless_null $P1263, vivify_422
-    new $P1263, "Undef"
+    set $P1265, $P1264["named_param"]
+    unless_null $P1265, vivify_422
+    new $P1265, "Undef"
   vivify_422:
-    $P1264 = $P1263."ast"()
-    store_lex "$past", $P1264
-.annotate "line", 444
-    find_lex $P1266, "$quant"
-    set $S1267, $P1266
-    isne $I1268, $S1267, "!"
-    unless $I1268, if_1265_end
-.annotate "line", 445
-    find_lex $P1269, "$past"
-    find_lex $P1270, "$/"
-    unless_null $P1270, vivify_423
-    new $P1270, "Hash"
+    $P1266 = $P1265."ast"()
+    store_lex "$past", $P1266
+.annotate "line", 447
+    find_lex $P1268, "$quant"
+    set $S1269, $P1268
+    isne $I1270, $S1269, "!"
+    unless $I1270, if_1267_end
+.annotate "line", 448
+    find_lex $P1271, "$past"
+    find_lex $P1272, "$/"
+    unless_null $P1272, vivify_423
+    $P1272 = root_new ['parrot';'Hash']
   vivify_423:
-    set $P1271, $P1270["named_param"]
-    unless_null $P1271, vivify_424
-    new $P1271, "Hash"
+    set $P1273, $P1272["named_param"]
+    unless_null $P1273, vivify_424
+    $P1273 = root_new ['parrot';'Hash']
   vivify_424:
-    set $P1272, $P1271["param_var"]
-    unless_null $P1272, vivify_425
-    new $P1272, "Hash"
+    set $P1274, $P1273["param_var"]
+    unless_null $P1274, vivify_425
+    $P1274 = root_new ['parrot';'Hash']
   vivify_425:
-    set $P1273, $P1272["sigil"]
-    unless_null $P1273, vivify_426
-    new $P1273, "Undef"
+    set $P1275, $P1274["sigil"]
+    unless_null $P1275, vivify_426
+    new $P1275, "Undef"
   vivify_426:
-    $P1274 = "sigiltype"($P1273)
-    $P1269."viviself"($P1274)
-  if_1265_end:
-  if_1259_end:
-.annotate "line", 458
-    find_lex $P1299, "$/"
-    unless_null $P1299, vivify_427
-    new $P1299, "Hash"
+    $P1276 = "vivitype"($P1275)
+    $P1271."viviself"($P1276)
+  if_1267_end:
+  if_1261_end:
+.annotate "line", 461
+    find_lex $P1301, "$/"
+    unless_null $P1301, vivify_427
+    $P1301 = root_new ['parrot';'Hash']
   vivify_427:
-    set $P1300, $P1299["default_value"]
-    unless_null $P1300, vivify_428
-    new $P1300, "Undef"
+    set $P1302, $P1301["default_value"]
+    unless_null $P1302, vivify_428
+    new $P1302, "Undef"
   vivify_428:
-    unless $P1300, if_1298_end
-.annotate "line", 459
-    find_lex $P1302, "$quant"
-    set $S1303, $P1302
-    iseq $I1304, $S1303, "*"
-    unless $I1304, if_1301_end
-.annotate "line", 460
-    find_lex $P1305, "$/"
-    $P1306 = $P1305."CURSOR"()
-    $P1306."panic"("Can't put default on slurpy parameter")
-  if_1301_end:
+    unless $P1302, if_1300_end
 .annotate "line", 462
-    find_lex $P1308, "$quant"
-    set $S1309, $P1308
-    iseq $I1310, $S1309, "!"
-    unless $I1310, if_1307_end
+    find_lex $P1304, "$quant"
+    set $S1305, $P1304
+    iseq $I1306, $S1305, "*"
+    unless $I1306, if_1303_end
 .annotate "line", 463
-    find_lex $P1311, "$/"
-    $P1312 = $P1311."CURSOR"()
-    $P1312."panic"("Can't put default on required parameter")
-  if_1307_end:
+    find_lex $P1307, "$/"
+    $P1308 = $P1307."CURSOR"()
+    $P1308."panic"("Can't put default on slurpy parameter")
+  if_1303_end:
 .annotate "line", 465
-    find_lex $P1313, "$past"
-    find_lex $P1314, "$/"
-    unless_null $P1314, vivify_429
-    new $P1314, "Hash"
+    find_lex $P1310, "$quant"
+    set $S1311, $P1310
+    iseq $I1312, $S1311, "!"
+    unless $I1312, if_1309_end
+.annotate "line", 466
+    find_lex $P1313, "$/"
+    $P1314 = $P1313."CURSOR"()
+    $P1314."panic"("Can't put default on required parameter")
+  if_1309_end:
+.annotate "line", 468
+    find_lex $P1315, "$past"
+    find_lex $P1316, "$/"
+    unless_null $P1316, vivify_429
+    $P1316 = root_new ['parrot';'Hash']
   vivify_429:
-    set $P1315, $P1314["default_value"]
-    unless_null $P1315, vivify_430
-    new $P1315, "ResizablePMCArray"
+    set $P1317, $P1316["default_value"]
+    unless_null $P1317, vivify_430
+    $P1317 = root_new ['parrot';'ResizablePMCArray']
   vivify_430:
-    set $P1316, $P1315[0]
-    unless_null $P1316, vivify_431
-    new $P1316, "Hash"
+    set $P1318, $P1317[0]
+    unless_null $P1318, vivify_431
+    $P1318 = root_new ['parrot';'Hash']
   vivify_431:
-    set $P1317, $P1316["EXPR"]
-    unless_null $P1317, vivify_432
-    new $P1317, "Undef"
+    set $P1319, $P1318["EXPR"]
+    unless_null $P1319, vivify_432
+    new $P1319, "Undef"
   vivify_432:
-    $P1318 = $P1317."ast"()
-    $P1313."viviself"($P1318)
-  if_1298_end:
-.annotate "line", 467
-    find_lex $P1320, "$past"
-    $P1321 = $P1320."viviself"()
-    if $P1321, unless_1319_end
-    get_global $P1322, "@BLOCK"
-    unless_null $P1322, vivify_433
-    new $P1322, "ResizablePMCArray"
-  vivify_433:
-    set $P1323, $P1322[0]
-    unless_null $P1323, vivify_434
-    new $P1323, "Undef"
-  vivify_434:
+    $P1320 = $P1319."ast"()
+    $P1315."viviself"($P1320)
+  if_1300_end:
+.annotate "line", 470
+    find_lex $P1322, "$past"
+    $P1323 = $P1322."viviself"()
+    if $P1323, unless_1321_end
     get_global $P1324, "@BLOCK"
-    unless_null $P1324, vivify_435
-    new $P1324, "ResizablePMCArray"
-  vivify_435:
+    unless_null $P1324, vivify_433
+    $P1324 = root_new ['parrot';'ResizablePMCArray']
+  vivify_433:
     set $P1325, $P1324[0]
-    unless_null $P1325, vivify_436
+    unless_null $P1325, vivify_434
     new $P1325, "Undef"
+  vivify_434:
+    get_global $P1326, "@BLOCK"
+    unless_null $P1326, vivify_435
+    $P1326 = root_new ['parrot';'ResizablePMCArray']
+  vivify_435:
+    set $P1327, $P1326[0]
+    unless_null $P1327, vivify_436
+    new $P1327, "Undef"
   vivify_436:
-    $P1326 = $P1325."arity"()
-    set $N1327, $P1326
-    new $P1328, 'Float'
-    set $P1328, $N1327
-    add $P1329, $P1328, 1
-    $P1323."arity"($P1329)
-  unless_1319_end:
-.annotate "line", 468
-    find_lex $P1330, "$/"
-    find_lex $P1331, "$past"
-    $P1332 = $P1330."!make"($P1331)
-.annotate "line", 439
-    .return ($P1332)
-  control_1251:
+    $P1328 = $P1327."arity"()
+    set $N1329, $P1328
+    new $P1330, 'Float'
+    set $P1330, $N1329
+    add $P1331, $P1330, 1
+    $P1325."arity"($P1331)
+  unless_1321_end:
+.annotate "line", 471
+    find_lex $P1332, "$/"
+    find_lex $P1333, "$past"
+    $P1334 = $P1332."!make"($P1333)
+.annotate "line", 442
+    .return ($P1334)
+  control_1253:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1333, exception, "payload"
-    .return ($P1333)
+    getattribute $P1335, exception, "payload"
+    .return ($P1335)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "param_var"  :subid("78_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1337
-.annotate "line", 471
-    new $P1336, 'ExceptionHandler'
-    set_addr $P1336, control_1335
-    $P1336."handle_types"(58)
-    push_eh $P1336
+.sub "param_var"  :subid("78_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1339
+.annotate "line", 474
+    new $P1338, 'ExceptionHandler'
+    set_addr $P1338, control_1337
+    $P1338."handle_types"(58)
+    push_eh $P1338
     .lex "self", self
-    .lex "$/", param_1337
-.annotate "line", 472
-    new $P1338, "Undef"
-    .lex "$name", $P1338
-.annotate "line", 473
-    new $P1339, "Undef"
-    .lex "$past", $P1339
-.annotate "line", 472
-    find_lex $P1340, "$/"
-    set $S1341, $P1340
-    new $P1342, 'String'
-    set $P1342, $S1341
-    store_lex "$name", $P1342
-.annotate "line", 473
-    get_hll_global $P1343, ["PAST"], "Var"
-    find_lex $P1344, "$name"
-    find_lex $P1345, "$/"
-    $P1346 = $P1343."new"($P1344 :named("name"), "parameter" :named("scope"), 1 :named("isdecl"), $P1345 :named("node"))
-    store_lex "$past", $P1346
+    .lex "$/", param_1339
+.annotate "line", 475
+    new $P1340, "Undef"
+    .lex "$name", $P1340
+.annotate "line", 476
+    new $P1341, "Undef"
+    .lex "$past", $P1341
 .annotate "line", 475
-    get_global $P1347, "@BLOCK"
-    unless_null $P1347, vivify_437
-    new $P1347, "ResizablePMCArray"
+    find_lex $P1342, "$/"
+    set $S1343, $P1342
+    new $P1344, 'String'
+    set $P1344, $S1343
+    store_lex "$name", $P1344
+.annotate "line", 476
+    get_hll_global $P1345, ["PAST"], "Var"
+    find_lex $P1346, "$name"
+    find_lex $P1347, "$/"
+    $P1348 = $P1345."new"($P1346 :named("name"), "parameter" :named("scope"), 1 :named("isdecl"), $P1347 :named("node"))
+    store_lex "$past", $P1348
+.annotate "line", 478
+    get_global $P1349, "@BLOCK"
+    unless_null $P1349, vivify_437
+    $P1349 = root_new ['parrot';'ResizablePMCArray']
   vivify_437:
-    set $P1348, $P1347[0]
-    unless_null $P1348, vivify_438
-    new $P1348, "Undef"
+    set $P1350, $P1349[0]
+    unless_null $P1350, vivify_438
+    new $P1350, "Undef"
   vivify_438:
-    find_lex $P1349, "$name"
-    $P1348."symbol"($P1349, "lexical" :named("scope"))
-.annotate "line", 476
-    find_lex $P1350, "$/"
-    find_lex $P1351, "$past"
-    $P1352 = $P1350."!make"($P1351)
-.annotate "line", 471
-    .return ($P1352)
-  control_1335:
+    find_lex $P1351, "$name"
+    $P1350."symbol"($P1351, "lexical" :named("scope"))
+.annotate "line", 479
+    find_lex $P1352, "$/"
+    find_lex $P1353, "$past"
+    $P1354 = $P1352."!make"($P1353)
+.annotate "line", 474
+    .return ($P1354)
+  control_1337:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1353, exception, "payload"
-    .return ($P1353)
+    getattribute $P1355, exception, "payload"
+    .return ($P1355)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "named_param"  :subid("79_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1357
-.annotate "line", 479
-    new $P1356, 'ExceptionHandler'
-    set_addr $P1356, control_1355
-    $P1356."handle_types"(58)
-    push_eh $P1356
-    .lex "self", self
-    .lex "$/", param_1357
-.annotate "line", 480
-    new $P1358, "Undef"
-    .lex "$past", $P1358
-    find_lex $P1359, "$/"
-    unless_null $P1359, vivify_439
-    new $P1359, "Hash"
-  vivify_439:
-    set $P1360, $P1359["param_var"]
-    unless_null $P1360, vivify_440
+.sub "named_param"  :subid("79_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1359
+.annotate "line", 482
+    new $P1358, 'ExceptionHandler'
+    set_addr $P1358, control_1357
+    $P1358."handle_types"(58)
+    push_eh $P1358
+    .lex "self", self
+    .lex "$/", param_1359
+.annotate "line", 483
     new $P1360, "Undef"
+    .lex "$past", $P1360
+    find_lex $P1361, "$/"
+    unless_null $P1361, vivify_439
+    $P1361 = root_new ['parrot';'Hash']
+  vivify_439:
+    set $P1362, $P1361["param_var"]
+    unless_null $P1362, vivify_440
+    new $P1362, "Undef"
   vivify_440:
-    $P1361 = $P1360."ast"()
-    store_lex "$past", $P1361
-.annotate "line", 481
-    find_lex $P1362, "$past"
-    find_lex $P1363, "$/"
-    unless_null $P1363, vivify_441
-    new $P1363, "Hash"
+    $P1363 = $P1362."ast"()
+    store_lex "$past", $P1363
+.annotate "line", 484
+    find_lex $P1364, "$past"
+    find_lex $P1365, "$/"
+    unless_null $P1365, vivify_441
+    $P1365 = root_new ['parrot';'Hash']
   vivify_441:
-    set $P1364, $P1363["param_var"]
-    unless_null $P1364, vivify_442
-    new $P1364, "Hash"
+    set $P1366, $P1365["param_var"]
+    unless_null $P1366, vivify_442
+    $P1366 = root_new ['parrot';'Hash']
   vivify_442:
-    set $P1365, $P1364["name"]
-    unless_null $P1365, vivify_443
-    new $P1365, "Undef"
+    set $P1367, $P1366["name"]
+    unless_null $P1367, vivify_443
+    new $P1367, "Undef"
   vivify_443:
-    set $S1366, $P1365
-    $P1362."named"($S1366)
+    set $S1368, $P1367
+    $P1364."named"($S1368)
+.annotate "line", 485
+    find_lex $P1369, "$/"
+    find_lex $P1370, "$past"
+    $P1371 = $P1369."!make"($P1370)
 .annotate "line", 482
-    find_lex $P1367, "$/"
-    find_lex $P1368, "$past"
-    $P1369 = $P1367."!make"($P1368)
-.annotate "line", 479
-    .return ($P1369)
-  control_1355:
+    .return ($P1371)
+  control_1357:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1370, exception, "payload"
-    .return ($P1370)
+    getattribute $P1372, exception, "payload"
+    .return ($P1372)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "regex_declarator"  :subid("80_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1374
-    .param pmc param_1375 :optional
-    .param int has_param_1375 :opt_flag
-.annotate "line", 485
-    .const 'Sub' $P1445 = "82_1261064035.64813" 
-    capture_lex $P1445
-    .const 'Sub' $P1417 = "81_1261064035.64813" 
-    capture_lex $P1417
-    new $P1373, 'ExceptionHandler'
-    set_addr $P1373, control_1372
-    $P1373."handle_types"(58)
-    push_eh $P1373
-    .lex "self", self
-    .lex "$/", param_1374
-    if has_param_1375, optparam_444
-    new $P1376, "Undef"
-    set param_1375, $P1376
+.sub "regex_declarator"  :subid("80_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1376
+    .param pmc param_1377 :optional
+    .param int has_param_1377 :opt_flag
+.annotate "line", 488
+    .const 'Sub' $P1447 = "82_1267204714.47172" 
+    capture_lex $P1447
+    .const 'Sub' $P1419 = "81_1267204714.47172" 
+    capture_lex $P1419
+    new $P1375, 'ExceptionHandler'
+    set_addr $P1375, control_1374
+    $P1375."handle_types"(58)
+    push_eh $P1375
+    .lex "self", self
+    .lex "$/", param_1376
+    if has_param_1377, optparam_444
+    new $P1378, "Undef"
+    set param_1377, $P1378
   optparam_444:
-    .lex "$key", param_1375
-.annotate "line", 486
-    new $P1377, "ResizablePMCArray"
-    .lex "@MODIFIERS", $P1377
+    .lex "$key", param_1377
+.annotate "line", 489
+    $P1379 = root_new ['parrot';'ResizablePMCArray']
+    .lex "@MODIFIERS", $P1379
+.annotate "line", 492
+    new $P1380, "Undef"
+    .lex "$name", $P1380
+.annotate "line", 493
+    new $P1381, "Undef"
+    .lex "$past", $P1381
 .annotate "line", 489
-    new $P1378, "Undef"
-    .lex "$name", $P1378
-.annotate "line", 490
-    new $P1379, "Undef"
-    .lex "$past", $P1379
-.annotate "line", 486
 
-        $P1380 = get_hll_global ['Regex';'P6Regex';'Actions'], '@MODIFIERS'
+        $P1382 = get_hll_global ['Regex';'P6Regex';'Actions'], '@MODIFIERS'
     
-    store_lex "@MODIFIERS", $P1380
-.annotate "line", 489
-    find_lex $P1381, "$/"
-    unless_null $P1381, vivify_445
-    new $P1381, "Hash"
+    store_lex "@MODIFIERS", $P1382
+.annotate "line", 492
+    find_lex $P1383, "$/"
+    unless_null $P1383, vivify_445
+    $P1383 = root_new ['parrot';'Hash']
   vivify_445:
-    set $P1382, $P1381["deflongname"]
-    unless_null $P1382, vivify_446
-    new $P1382, "Undef"
+    set $P1384, $P1383["deflongname"]
+    unless_null $P1384, vivify_446
+    new $P1384, "Undef"
   vivify_446:
-    $P1383 = $P1382."ast"()
-    set $S1384, $P1383
-    new $P1385, 'String'
-    set $P1385, $S1384
-    store_lex "$name", $P1385
-    find_lex $P1386, "$past"
-.annotate "line", 491
-    find_lex $P1388, "$/"
-    unless_null $P1388, vivify_447
-    new $P1388, "Hash"
+    $P1385 = $P1384."ast"()
+    set $S1386, $P1385
+    new $P1387, 'String'
+    set $P1387, $S1386
+    store_lex "$name", $P1387
+    find_lex $P1388, "$past"
+.annotate "line", 494
+    find_lex $P1390, "$/"
+    unless_null $P1390, vivify_447
+    $P1390 = root_new ['parrot';'Hash']
   vivify_447:
-    set $P1389, $P1388["proto"]
-    unless_null $P1389, vivify_448
-    new $P1389, "Undef"
+    set $P1391, $P1390["proto"]
+    unless_null $P1391, vivify_448
+    new $P1391, "Undef"
   vivify_448:
-    if $P1389, if_1387
-.annotate "line", 518
-    find_lex $P1413, "$key"
-    set $S1414, $P1413
-    iseq $I1415, $S1414, "open"
-    if $I1415, if_1412
-.annotate "line", 531
-    .const 'Sub' $P1445 = "82_1261064035.64813" 
-    capture_lex $P1445
-    $P1445()
-    goto if_1412_end
-  if_1412:
-.annotate "line", 518
-    .const 'Sub' $P1417 = "81_1261064035.64813" 
-    capture_lex $P1417
-    $P1417()
-  if_1412_end:
-    goto if_1387_end
-  if_1387:
-.annotate "line", 493
-    get_hll_global $P1390, ["PAST"], "Stmts"
-.annotate "line", 494
-    get_hll_global $P1391, ["PAST"], "Block"
-    find_lex $P1392, "$name"
-.annotate "line", 495
-    get_hll_global $P1393, ["PAST"], "Op"
+    if $P1391, if_1389
+.annotate "line", 521
+    find_lex $P1415, "$key"
+    set $S1416, $P1415
+    iseq $I1417, $S1416, "open"
+    if $I1417, if_1414
+.annotate "line", 534
+    .const 'Sub' $P1447 = "82_1267204714.47172" 
+    capture_lex $P1447
+    $P1447()
+    goto if_1414_end
+  if_1414:
+.annotate "line", 521
+    .const 'Sub' $P1419 = "81_1267204714.47172" 
+    capture_lex $P1419
+    $P1419()
+  if_1414_end:
+    goto if_1389_end
+  if_1389:
 .annotate "line", 496
-    get_hll_global $P1394, ["PAST"], "Var"
-    $P1395 = $P1394."new"("self" :named("name"), "register" :named("scope"))
-    find_lex $P1396, "$name"
-    $P1397 = $P1393."new"($P1395, $P1396, "!protoregex" :named("name"), "callmethod" :named("pasttype"))
-.annotate "line", 495
-    find_lex $P1398, "$/"
-    $P1399 = $P1391."new"($P1397, $P1392 :named("name"), "method" :named("blocktype"), 0 :named("lexical"), $P1398 :named("node"))
-.annotate "line", 505
-    get_hll_global $P1400, ["PAST"], "Block"
-    new $P1401, "String"
-    assign $P1401, "!PREFIX__"
-    find_lex $P1402, "$name"
-    concat $P1403, $P1401, $P1402
-.annotate "line", 506
-    get_hll_global $P1404, ["PAST"], "Op"
-.annotate "line", 507
-    get_hll_global $P1405, ["PAST"], "Var"
-    $P1406 = $P1405."new"("self" :named("name"), "register" :named("scope"))
-    find_lex $P1407, "$name"
-    $P1408 = $P1404."new"($P1406, $P1407, "!PREFIX__!protoregex" :named("name"), "callmethod" :named("pasttype"))
-.annotate "line", 506
-    find_lex $P1409, "$/"
-    $P1410 = $P1400."new"($P1408, $P1403 :named("name"), "method" :named("blocktype"), 0 :named("lexical"), $P1409 :named("node"))
-.annotate "line", 505
-    $P1411 = $P1390."new"($P1399, $P1410)
-.annotate "line", 493
-    store_lex "$past", $P1411
-  if_1387_end:
-.annotate "line", 545
-    find_lex $P1466, "$/"
-    find_lex $P1467, "$past"
-    $P1468 = $P1466."!make"($P1467)
-.annotate "line", 485
-    .return ($P1468)
-  control_1372:
+    get_hll_global $P1392, ["PAST"], "Stmts"
+.annotate "line", 497
+    get_hll_global $P1393, ["PAST"], "Block"
+    find_lex $P1394, "$name"
+.annotate "line", 498
+    get_hll_global $P1395, ["PAST"], "Op"
+.annotate "line", 499
+    get_hll_global $P1396, ["PAST"], "Var"
+    $P1397 = $P1396."new"("self" :named("name"), "register" :named("scope"))
+    find_lex $P1398, "$name"
+    $P1399 = $P1395."new"($P1397, $P1398, "!protoregex" :named("name"), "callmethod" :named("pasttype"))
+.annotate "line", 498
+    find_lex $P1400, "$/"
+    $P1401 = $P1393."new"($P1399, $P1394 :named("name"), "method" :named("blocktype"), 0 :named("lexical"), $P1400 :named("node"))
+.annotate "line", 508
+    get_hll_global $P1402, ["PAST"], "Block"
+    new $P1403, "String"
+    assign $P1403, "!PREFIX__"
+    find_lex $P1404, "$name"
+    concat $P1405, $P1403, $P1404
+.annotate "line", 509
+    get_hll_global $P1406, ["PAST"], "Op"
+.annotate "line", 510
+    get_hll_global $P1407, ["PAST"], "Var"
+    $P1408 = $P1407."new"("self" :named("name"), "register" :named("scope"))
+    find_lex $P1409, "$name"
+    $P1410 = $P1406."new"($P1408, $P1409, "!PREFIX__!protoregex" :named("name"), "callmethod" :named("pasttype"))
+.annotate "line", 509
+    find_lex $P1411, "$/"
+    $P1412 = $P1402."new"($P1410, $P1405 :named("name"), "method" :named("blocktype"), 0 :named("lexical"), $P1411 :named("node"))
+.annotate "line", 508
+    $P1413 = $P1392."new"($P1401, $P1412)
+.annotate "line", 496
+    store_lex "$past", $P1413
+  if_1389_end:
+.annotate "line", 548
+    find_lex $P1468, "$/"
+    find_lex $P1469, "$past"
+    $P1470 = $P1468."!make"($P1469)
+.annotate "line", 488
+    .return ($P1470)
+  control_1374:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1469, exception, "payload"
-    .return ($P1469)
+    getattribute $P1471, exception, "payload"
+    .return ($P1471)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1444"  :anon :subid("82_1261064035.64813") :outer("80_1261064035.64813")
-.annotate "line", 532
-    new $P1446, "Undef"
-    .lex "$regex", $P1446
-.annotate "line", 533
-    get_hll_global $P1447, ["Regex";"P6Regex";"Actions"], "buildsub"
-    find_lex $P1448, "$/"
-    unless_null $P1448, vivify_449
-    new $P1448, "Hash"
+.sub "_block1446"  :anon :subid("82_1267204714.47172") :outer("80_1267204714.47172")
+.annotate "line", 535
+    new $P1448, "Undef"
+    .lex "$regex", $P1448
+.annotate "line", 536
+    get_hll_global $P1449, ["Regex";"P6Regex";"Actions"], "buildsub"
+    find_lex $P1450, "$/"
+    unless_null $P1450, vivify_449
+    $P1450 = root_new ['parrot';'Hash']
   vivify_449:
-    set $P1449, $P1448["p6regex"]
-    unless_null $P1449, vivify_450
-    new $P1449, "Undef"
+    set $P1451, $P1450["p6regex"]
+    unless_null $P1451, vivify_450
+    new $P1451, "Undef"
   vivify_450:
-    $P1450 = $P1449."ast"()
-    get_global $P1451, "@BLOCK"
-    $P1452 = $P1451."shift"()
-    $P1453 = $P1447($P1450, $P1452)
-    store_lex "$regex", $P1453
-.annotate "line", 534
-    find_lex $P1454, "$regex"
-    find_lex $P1455, "$name"
-    $P1454."name"($P1455)
-.annotate "line", 536
-    get_hll_global $P1456, ["PAST"], "Op"
-.annotate "line", 538
-    get_hll_global $P1457, ["PAST"], "Var"
-    new $P1458, "ResizablePMCArray"
-    push $P1458, "Regex"
-    $P1459 = $P1457."new"("Method" :named("name"), $P1458 :named("namespace"), "package" :named("scope"))
-    find_lex $P1460, "$regex"
-    $P1461 = $P1456."new"($P1459, $P1460, "callmethod" :named("pasttype"), "new" :named("name"))
-.annotate "line", 536
-    store_lex "$past", $P1461
-.annotate "line", 542
+    $P1452 = $P1451."ast"()
+    get_global $P1453, "@BLOCK"
+    $P1454 = $P1453."shift"()
+    $P1455 = $P1449($P1452, $P1454)
+    store_lex "$regex", $P1455
+.annotate "line", 537
+    find_lex $P1456, "$regex"
+    find_lex $P1457, "$name"
+    $P1456."name"($P1457)
+.annotate "line", 539
+    get_hll_global $P1458, ["PAST"], "Op"
+.annotate "line", 541
+    get_hll_global $P1459, ["PAST"], "Var"
+    new $P1460, "ResizablePMCArray"
+    push $P1460, "Regex"
+    $P1461 = $P1459."new"("Method" :named("name"), $P1460 :named("namespace"), "package" :named("scope"))
     find_lex $P1462, "$regex"
-    find_lex $P1463, "$past"
-    unless_null $P1463, vivify_451
-    new $P1463, "Hash"
+    $P1463 = $P1458."new"($P1461, $P1462, "callmethod" :named("pasttype"), "new" :named("name"))
+.annotate "line", 539
     store_lex "$past", $P1463
+.annotate "line", 545
+    find_lex $P1464, "$regex"
+    find_lex $P1465, "$past"
+    unless_null $P1465, vivify_451
+    $P1465 = root_new ['parrot';'Hash']
+    store_lex "$past", $P1465
   vivify_451:
-    set $P1463["sink"], $P1462
-.annotate "line", 543
-    find_lex $P1464, "@MODIFIERS"
-    $P1465 = $P1464."shift"()
-.annotate "line", 531
-    .return ($P1465)
+    set $P1465["sink"], $P1464
+.annotate "line", 546
+    find_lex $P1466, "@MODIFIERS"
+    $P1467 = $P1466."shift"()
+.annotate "line", 534
+    .return ($P1467)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1416"  :anon :subid("81_1261064035.64813") :outer("80_1261064035.64813")
-.annotate "line", 519
-    new $P1418, "Hash"
-    .lex "%h", $P1418
-.annotate "line", 518
-    find_lex $P1419, "%h"
-.annotate "line", 520
-    find_lex $P1421, "$/"
-    unless_null $P1421, vivify_452
-    new $P1421, "Hash"
+.sub "_block1418"  :anon :subid("81_1267204714.47172") :outer("80_1267204714.47172")
+.annotate "line", 522
+    $P1420 = root_new ['parrot';'Hash']
+    .lex "%h", $P1420
+.annotate "line", 521
+    find_lex $P1421, "%h"
+.annotate "line", 523
+    find_lex $P1423, "$/"
+    unless_null $P1423, vivify_452
+    $P1423 = root_new ['parrot';'Hash']
   vivify_452:
-    set $P1422, $P1421["sym"]
-    unless_null $P1422, vivify_453
-    new $P1422, "Undef"
+    set $P1424, $P1423["sym"]
+    unless_null $P1424, vivify_453
+    new $P1424, "Undef"
   vivify_453:
-    set $S1423, $P1422
-    iseq $I1424, $S1423, "token"
-    unless $I1424, if_1420_end
-    new $P1425, "Integer"
-    assign $P1425, 1
-    find_lex $P1426, "%h"
-    unless_null $P1426, vivify_454
-    new $P1426, "Hash"
-    store_lex "%h", $P1426
+    set $S1425, $P1424
+    iseq $I1426, $S1425, "token"
+    unless $I1426, if_1422_end
+    new $P1427, "Integer"
+    assign $P1427, 1
+    find_lex $P1428, "%h"
+    unless_null $P1428, vivify_454
+    $P1428 = root_new ['parrot';'Hash']
+    store_lex "%h", $P1428
   vivify_454:
-    set $P1426["r"], $P1425
-  if_1420_end:
-.annotate "line", 521
-    find_lex $P1428, "$/"
-    unless_null $P1428, vivify_455
-    new $P1428, "Hash"
+    set $P1428["r"], $P1427
+  if_1422_end:
+.annotate "line", 524
+    find_lex $P1430, "$/"
+    unless_null $P1430, vivify_455
+    $P1430 = root_new ['parrot';'Hash']
   vivify_455:
-    set $P1429, $P1428["sym"]
-    unless_null $P1429, vivify_456
-    new $P1429, "Undef"
+    set $P1431, $P1430["sym"]
+    unless_null $P1431, vivify_456
+    new $P1431, "Undef"
   vivify_456:
-    set $S1430, $P1429
-    iseq $I1431, $S1430, "rule"
-    unless $I1431, if_1427_end
-    new $P1432, "Integer"
-    assign $P1432, 1
-    find_lex $P1433, "%h"
-    unless_null $P1433, vivify_457
-    new $P1433, "Hash"
-    store_lex "%h", $P1433
-  vivify_457:
-    set $P1433["r"], $P1432
+    set $S1432, $P1431
+    iseq $I1433, $S1432, "rule"
+    unless $I1433, if_1429_end
     new $P1434, "Integer"
     assign $P1434, 1
     find_lex $P1435, "%h"
-    unless_null $P1435, vivify_458
-    new $P1435, "Hash"
+    unless_null $P1435, vivify_457
+    $P1435 = root_new ['parrot';'Hash']
     store_lex "%h", $P1435
-  vivify_458:
-    set $P1435["s"], $P1434
-  if_1427_end:
-.annotate "line", 522
-    find_lex $P1436, "@MODIFIERS"
+  vivify_457:
+    set $P1435["r"], $P1434
+    new $P1436, "Integer"
+    assign $P1436, 1
     find_lex $P1437, "%h"
-    $P1436."unshift"($P1437)
-.annotate "line", 523
+    unless_null $P1437, vivify_458
+    $P1437 = root_new ['parrot';'Hash']
+    store_lex "%h", $P1437
+  vivify_458:
+    set $P1437["s"], $P1436
+  if_1429_end:
+.annotate "line", 525
+    find_lex $P1438, "@MODIFIERS"
+    find_lex $P1439, "%h"
+    $P1438."unshift"($P1439)
+.annotate "line", 526
 
             $P0 = find_lex '$name'
             set_hll_global ['Regex';'P6Regex';'Actions'], '$REGEXNAME', $P0
         
-.annotate "line", 527
-    get_global $P1438, "@BLOCK"
-    unless_null $P1438, vivify_459
-    new $P1438, "ResizablePMCArray"
-  vivify_459:
-    set $P1439, $P1438[0]
-    unless_null $P1439, vivify_460
-    new $P1439, "Undef"
-  vivify_460:
-    $P1439."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
-.annotate "line", 528
+.annotate "line", 530
     get_global $P1440, "@BLOCK"
-    unless_null $P1440, vivify_461
-    new $P1440, "ResizablePMCArray"
-  vivify_461:
+    unless_null $P1440, vivify_459
+    $P1440 = root_new ['parrot';'ResizablePMCArray']
+  vivify_459:
     set $P1441, $P1440[0]
-    unless_null $P1441, vivify_462
+    unless_null $P1441, vivify_460
     new $P1441, "Undef"
+  vivify_460:
+    $P1441."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
+.annotate "line", 531
+    get_global $P1442, "@BLOCK"
+    unless_null $P1442, vivify_461
+    $P1442 = root_new ['parrot';'ResizablePMCArray']
+  vivify_461:
+    set $P1443, $P1442[0]
+    unless_null $P1443, vivify_462
+    new $P1443, "Undef"
   vivify_462:
-    $P1441."symbol"("$/", "lexical" :named("scope"))
-.annotate "line", 529
-    new $P1442, "Exception"
-    set $P1442['type'], 58
-    new $P1443, "Integer"
-    assign $P1443, 0
-    setattribute $P1442, 'payload', $P1443
-    throw $P1442
-.annotate "line", 518
+    $P1443."symbol"("$/", "lexical" :named("scope"))
+.annotate "line", 532
+    new $P1444, "Exception"
+    set $P1444['type'], 58
+    new $P1445, "Integer"
+    assign $P1445, 0
+    setattribute $P1444, 'payload', $P1445
+    throw $P1444
+.annotate "line", 521
     .return ()
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "dotty"  :subid("83_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1473
-.annotate "line", 549
-    new $P1472, 'ExceptionHandler'
-    set_addr $P1472, control_1471
-    $P1472."handle_types"(58)
-    push_eh $P1472
+.sub "dotty"  :subid("83_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1475
+.annotate "line", 552
+    new $P1474, 'ExceptionHandler'
+    set_addr $P1474, control_1473
+    $P1474."handle_types"(58)
+    push_eh $P1474
     .lex "self", self
-    .lex "$/", param_1473
-.annotate "line", 550
-    new $P1474, "Undef"
-    .lex "$past", $P1474
-    find_lex $P1477, "$/"
-    unless_null $P1477, vivify_463
-    new $P1477, "Hash"
+    .lex "$/", param_1475
+.annotate "line", 553
+    new $P1476, "Undef"
+    .lex "$past", $P1476
+    find_lex $P1479, "$/"
+    unless_null $P1479, vivify_463
+    $P1479 = root_new ['parrot';'Hash']
   vivify_463:
-    set $P1478, $P1477["args"]
-    unless_null $P1478, vivify_464
-    new $P1478, "Undef"
+    set $P1480, $P1479["args"]
+    unless_null $P1480, vivify_464
+    new $P1480, "Undef"
   vivify_464:
-    if $P1478, if_1476
-    get_hll_global $P1483, ["PAST"], "Op"
-    find_lex $P1484, "$/"
-    $P1485 = $P1483."new"($P1484 :named("node"))
-    set $P1475, $P1485
-    goto if_1476_end
-  if_1476:
-    find_lex $P1479, "$/"
-    unless_null $P1479, vivify_465
-    new $P1479, "Hash"
+    if $P1480, if_1478
+    get_hll_global $P1485, ["PAST"], "Op"
+    find_lex $P1486, "$/"
+    $P1487 = $P1485."new"($P1486 :named("node"))
+    set $P1477, $P1487
+    goto if_1478_end
+  if_1478:
+    find_lex $P1481, "$/"
+    unless_null $P1481, vivify_465
+    $P1481 = root_new ['parrot';'Hash']
   vivify_465:
-    set $P1480, $P1479["args"]
-    unless_null $P1480, vivify_466
-    new $P1480, "ResizablePMCArray"
+    set $P1482, $P1481["args"]
+    unless_null $P1482, vivify_466
+    $P1482 = root_new ['parrot';'ResizablePMCArray']
   vivify_466:
-    set $P1481, $P1480[0]
-    unless_null $P1481, vivify_467
-    new $P1481, "Undef"
+    set $P1483, $P1482[0]
+    unless_null $P1483, vivify_467
+    new $P1483, "Undef"
   vivify_467:
-    $P1482 = $P1481."ast"()
-    set $P1475, $P1482
-  if_1476_end:
-    store_lex "$past", $P1475
-.annotate "line", 551
-    find_lex $P1486, "$past"
-    find_lex $P1489, "$/"
-    unless_null $P1489, vivify_468
-    new $P1489, "Hash"
+    $P1484 = $P1483."ast"()
+    set $P1477, $P1484
+  if_1478_end:
+    store_lex "$past", $P1477
+.annotate "line", 554
+    find_lex $P1488, "$past"
+    find_lex $P1491, "$/"
+    unless_null $P1491, vivify_468
+    $P1491 = root_new ['parrot';'Hash']
   vivify_468:
-    set $P1490, $P1489["quote"]
-    unless_null $P1490, vivify_469
-    new $P1490, "Undef"
+    set $P1492, $P1491["quote"]
+    unless_null $P1492, vivify_469
+    new $P1492, "Undef"
   vivify_469:
-    if $P1490, if_1488
-    find_lex $P1494, "$/"
-    unless_null $P1494, vivify_470
-    new $P1494, "Hash"
+    if $P1492, if_1490
+    find_lex $P1496, "$/"
+    unless_null $P1496, vivify_470
+    $P1496 = root_new ['parrot';'Hash']
   vivify_470:
-    set $P1495, $P1494["longname"]
-    unless_null $P1495, vivify_471
-    new $P1495, "Undef"
+    set $P1497, $P1496["longname"]
+    unless_null $P1497, vivify_471
+    new $P1497, "Undef"
   vivify_471:
-    set $S1496, $P1495
-    new $P1487, 'String'
-    set $P1487, $S1496
-    goto if_1488_end
-  if_1488:
-    find_lex $P1491, "$/"
-    unless_null $P1491, vivify_472
-    new $P1491, "Hash"
+    set $S1498, $P1497
+    new $P1489, 'String'
+    set $P1489, $S1498
+    goto if_1490_end
+  if_1490:
+    find_lex $P1493, "$/"
+    unless_null $P1493, vivify_472
+    $P1493 = root_new ['parrot';'Hash']
   vivify_472:
-    set $P1492, $P1491["quote"]
-    unless_null $P1492, vivify_473
-    new $P1492, "Undef"
+    set $P1494, $P1493["quote"]
+    unless_null $P1494, vivify_473
+    new $P1494, "Undef"
   vivify_473:
-    $P1493 = $P1492."ast"()
-    set $P1487, $P1493
-  if_1488_end:
-    $P1486."name"($P1487)
-.annotate "line", 552
-    find_lex $P1497, "$past"
-    $P1497."pasttype"("callmethod")
-.annotate "line", 553
-    find_lex $P1498, "$/"
+    $P1495 = $P1494."ast"()
+    set $P1489, $P1495
+  if_1490_end:
+    $P1488."name"($P1489)
+.annotate "line", 555
     find_lex $P1499, "$past"
-    $P1500 = $P1498."!make"($P1499)
-.annotate "line", 549
-    .return ($P1500)
-  control_1471:
+    $P1499."pasttype"("callmethod")
+.annotate "line", 556
+    find_lex $P1500, "$/"
+    find_lex $P1501, "$past"
+    $P1502 = $P1500."!make"($P1501)
+.annotate "line", 552
+    .return ($P1502)
+  control_1473:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1501, exception, "payload"
-    .return ($P1501)
+    getattribute $P1503, exception, "payload"
+    .return ($P1503)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<self>"  :subid("84_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1505
-.annotate "line", 558
-    new $P1504, 'ExceptionHandler'
-    set_addr $P1504, control_1503
-    $P1504."handle_types"(58)
-    push_eh $P1504
+.sub "term:sym<self>"  :subid("84_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1507
+.annotate "line", 561
+    new $P1506, 'ExceptionHandler'
+    set_addr $P1506, control_1505
+    $P1506."handle_types"(58)
+    push_eh $P1506
     .lex "self", self
-    .lex "$/", param_1505
-.annotate "line", 559
-    find_lex $P1506, "$/"
-    get_hll_global $P1507, ["PAST"], "Var"
-    $P1508 = $P1507."new"("self" :named("name"))
-    $P1509 = $P1506."!make"($P1508)
-.annotate "line", 558
-    .return ($P1509)
-  control_1503:
+    .lex "$/", param_1507
+.annotate "line", 562
+    find_lex $P1508, "$/"
+    get_hll_global $P1509, ["PAST"], "Var"
+    $P1510 = $P1509."new"("self" :named("name"))
+    $P1511 = $P1508."!make"($P1510)
+.annotate "line", 561
+    .return ($P1511)
+  control_1505:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1510, exception, "payload"
-    .return ($P1510)
+    getattribute $P1512, exception, "payload"
+    .return ($P1512)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<identifier>"  :subid("85_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1514
-.annotate "line", 562
-    new $P1513, 'ExceptionHandler'
-    set_addr $P1513, control_1512
-    $P1513."handle_types"(58)
-    push_eh $P1513
-    .lex "self", self
-    .lex "$/", param_1514
-.annotate "line", 563
-    new $P1515, "Undef"
-    .lex "$past", $P1515
-    find_lex $P1516, "$/"
-    unless_null $P1516, vivify_474
-    new $P1516, "Hash"
-  vivify_474:
-    set $P1517, $P1516["args"]
-    unless_null $P1517, vivify_475
+.sub "term:sym<identifier>"  :subid("85_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1516
+.annotate "line", 565
+    new $P1515, 'ExceptionHandler'
+    set_addr $P1515, control_1514
+    $P1515."handle_types"(58)
+    push_eh $P1515
+    .lex "self", self
+    .lex "$/", param_1516
+.annotate "line", 566
     new $P1517, "Undef"
+    .lex "$past", $P1517
+    find_lex $P1518, "$/"
+    unless_null $P1518, vivify_474
+    $P1518 = root_new ['parrot';'Hash']
+  vivify_474:
+    set $P1519, $P1518["args"]
+    unless_null $P1519, vivify_475
+    new $P1519, "Undef"
   vivify_475:
-    $P1518 = $P1517."ast"()
-    store_lex "$past", $P1518
-.annotate "line", 564
-    find_lex $P1519, "$past"
-    find_lex $P1520, "$/"
-    unless_null $P1520, vivify_476
-    new $P1520, "Hash"
+    $P1520 = $P1519."ast"()
+    store_lex "$past", $P1520
+.annotate "line", 567
+    find_lex $P1521, "$past"
+    find_lex $P1522, "$/"
+    unless_null $P1522, vivify_476
+    $P1522 = root_new ['parrot';'Hash']
   vivify_476:
-    set $P1521, $P1520["identifier"]
-    unless_null $P1521, vivify_477
-    new $P1521, "Undef"
+    set $P1523, $P1522["identifier"]
+    unless_null $P1523, vivify_477
+    new $P1523, "Undef"
   vivify_477:
-    set $S1522, $P1521
-    $P1519."name"($S1522)
+    set $S1524, $P1523
+    $P1521."name"($S1524)
+.annotate "line", 568
+    find_lex $P1525, "$/"
+    find_lex $P1526, "$past"
+    $P1527 = $P1525."!make"($P1526)
 .annotate "line", 565
-    find_lex $P1523, "$/"
-    find_lex $P1524, "$past"
-    $P1525 = $P1523."!make"($P1524)
-.annotate "line", 562
-    .return ($P1525)
-  control_1512:
+    .return ($P1527)
+  control_1514:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1526, exception, "payload"
-    .return ($P1526)
+    getattribute $P1528, exception, "payload"
+    .return ($P1528)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<name>"  :subid("86_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1530
-.annotate "line", 568
-    new $P1529, 'ExceptionHandler'
-    set_addr $P1529, control_1528
-    $P1529."handle_types"(58)
-    push_eh $P1529
-    .lex "self", self
-    .lex "$/", param_1530
-.annotate "line", 569
-    new $P1531, "ResizablePMCArray"
-    .lex "@ns", $P1531
-.annotate "line", 570
-    new $P1532, "Undef"
-    .lex "$name", $P1532
+.sub "term:sym<name>"  :subid("86_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1532
+.annotate "line", 571
+    new $P1531, 'ExceptionHandler'
+    set_addr $P1531, control_1530
+    $P1531."handle_types"(58)
+    push_eh $P1531
+    .lex "self", self
+    .lex "$/", param_1532
 .annotate "line", 572
-    new $P1533, "Undef"
-    .lex "$var", $P1533
-.annotate "line", 574
+    $P1533 = root_new ['parrot';'ResizablePMCArray']
+    .lex "@ns", $P1533
+.annotate "line", 573
     new $P1534, "Undef"
-    .lex "$past", $P1534
-.annotate "line", 569
-    find_lex $P1535, "$/"
-    unless_null $P1535, vivify_478
-    new $P1535, "Hash"
+    .lex "$name", $P1534
+.annotate "line", 575
+    new $P1535, "Undef"
+    .lex "$var", $P1535
+.annotate "line", 577
+    new $P1536, "Undef"
+    .lex "$past", $P1536
+.annotate "line", 572
+    find_lex $P1537, "$/"
+    unless_null $P1537, vivify_478
+    $P1537 = root_new ['parrot';'Hash']
   vivify_478:
-    set $P1536, $P1535["name"]
-    unless_null $P1536, vivify_479
-    new $P1536, "Hash"
+    set $P1538, $P1537["name"]
+    unless_null $P1538, vivify_479
+    $P1538 = root_new ['parrot';'Hash']
   vivify_479:
-    set $P1537, $P1536["identifier"]
-    unless_null $P1537, vivify_480
-    new $P1537, "Undef"
+    set $P1539, $P1538["identifier"]
+    unless_null $P1539, vivify_480
+    new $P1539, "Undef"
   vivify_480:
-    clone $P1538, $P1537
-    store_lex "@ns", $P1538
-.annotate "line", 570
-    find_lex $P1539, "@ns"
-    $P1540 = $P1539."pop"()
-    store_lex "$name", $P1540
-.annotate "line", 571
-    find_lex $P1544, "@ns"
-    if $P1544, if_1543
-    set $P1542, $P1544
-    goto if_1543_end
-  if_1543:
-    find_lex $P1545, "@ns"
-    unless_null $P1545, vivify_481
-    new $P1545, "ResizablePMCArray"
+    clone $P1540, $P1539
+    store_lex "@ns", $P1540
+.annotate "line", 573
+    find_lex $P1541, "@ns"
+    $P1542 = $P1541."pop"()
+    store_lex "$name", $P1542
+.annotate "line", 574
+    find_lex $P1546, "@ns"
+    if $P1546, if_1545
+    set $P1544, $P1546
+    goto if_1545_end
+  if_1545:
+    find_lex $P1547, "@ns"
+    unless_null $P1547, vivify_481
+    $P1547 = root_new ['parrot';'ResizablePMCArray']
   vivify_481:
-    set $P1546, $P1545[0]
-    unless_null $P1546, vivify_482
-    new $P1546, "Undef"
+    set $P1548, $P1547[0]
+    unless_null $P1548, vivify_482
+    new $P1548, "Undef"
   vivify_482:
-    set $S1547, $P1546
-    iseq $I1548, $S1547, "GLOBAL"
-    new $P1542, 'Integer'
-    set $P1542, $I1548
+    set $S1549, $P1548
+    iseq $I1550, $S1549, "GLOBAL"
+    new $P1544, 'Integer'
+    set $P1544, $I1550
+  if_1545_end:
+    unless $P1544, if_1543_end
+    find_lex $P1551, "@ns"
+    $P1551."shift"()
   if_1543_end:
-    unless $P1542, if_1541_end
-    find_lex $P1549, "@ns"
-    $P1549."shift"()
-  if_1541_end:
-.annotate "line", 573
-    get_hll_global $P1550, ["PAST"], "Var"
-    find_lex $P1551, "$name"
-    set $S1552, $P1551
-    find_lex $P1553, "@ns"
-    $P1554 = $P1550."new"($S1552 :named("name"), $P1553 :named("namespace"), "package" :named("scope"))
-    store_lex "$var", $P1554
-.annotate "line", 574
-    find_lex $P1555, "$var"
-    store_lex "$past", $P1555
-.annotate "line", 575
-    find_lex $P1557, "$/"
-    unless_null $P1557, vivify_483
-    new $P1557, "Hash"
-  vivify_483:
-    set $P1558, $P1557["args"]
-    unless_null $P1558, vivify_484
-    new $P1558, "Undef"
-  vivify_484:
-    unless $P1558, if_1556_end
 .annotate "line", 576
+    get_hll_global $P1552, ["PAST"], "Var"
+    find_lex $P1553, "$name"
+    set $S1554, $P1553
+    find_lex $P1555, "@ns"
+    $P1556 = $P1552."new"($S1554 :named("name"), $P1555 :named("namespace"), "package" :named("scope"))
+    store_lex "$var", $P1556
+.annotate "line", 577
+    find_lex $P1557, "$var"
+    store_lex "$past", $P1557
+.annotate "line", 578
     find_lex $P1559, "$/"
-    unless_null $P1559, vivify_485
-    new $P1559, "Hash"
-  vivify_485:
+    unless_null $P1559, vivify_483
+    $P1559 = root_new ['parrot';'Hash']
+  vivify_483:
     set $P1560, $P1559["args"]
-    unless_null $P1560, vivify_486
-    new $P1560, "ResizablePMCArray"
+    unless_null $P1560, vivify_484
+    new $P1560, "Undef"
+  vivify_484:
+    unless $P1560, if_1558_end
+.annotate "line", 579
+    find_lex $P1561, "$/"
+    unless_null $P1561, vivify_485
+    $P1561 = root_new ['parrot';'Hash']
+  vivify_485:
+    set $P1562, $P1561["args"]
+    unless_null $P1562, vivify_486
+    $P1562 = root_new ['parrot';'ResizablePMCArray']
   vivify_486:
-    set $P1561, $P1560[0]
-    unless_null $P1561, vivify_487
-    new $P1561, "Undef"
+    set $P1563, $P1562[0]
+    unless_null $P1563, vivify_487
+    new $P1563, "Undef"
   vivify_487:
-    $P1562 = $P1561."ast"()
-    store_lex "$past", $P1562
-.annotate "line", 577
-    find_lex $P1563, "$past"
-    find_lex $P1564, "$var"
-    $P1563."unshift"($P1564)
-  if_1556_end:
-.annotate "line", 579
-    find_lex $P1565, "$/"
-    find_lex $P1566, "$past"
-    $P1567 = $P1565."!make"($P1566)
-.annotate "line", 568
-    .return ($P1567)
-  control_1528:
+    $P1564 = $P1563."ast"()
+    store_lex "$past", $P1564
+.annotate "line", 580
+    find_lex $P1565, "$past"
+    find_lex $P1566, "$var"
+    $P1565."unshift"($P1566)
+  if_1558_end:
+.annotate "line", 582
+    find_lex $P1567, "$/"
+    find_lex $P1568, "$past"
+    $P1569 = $P1567."!make"($P1568)
+.annotate "line", 571
+    .return ($P1569)
+  control_1530:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1568, exception, "payload"
-    .return ($P1568)
+    getattribute $P1570, exception, "payload"
+    .return ($P1570)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<pir::op>"  :subid("87_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1572
-.annotate "line", 582
-    new $P1571, 'ExceptionHandler'
-    set_addr $P1571, control_1570
-    $P1571."handle_types"(58)
-    push_eh $P1571
-    .lex "self", self
-    .lex "$/", param_1572
-.annotate "line", 583
-    new $P1573, "Undef"
-    .lex "$past", $P1573
-.annotate "line", 584
-    new $P1574, "Undef"
-    .lex "$pirop", $P1574
-.annotate "line", 583
-    find_lex $P1577, "$/"
-    unless_null $P1577, vivify_488
-    new $P1577, "Hash"
+.sub "term:sym<pir::op>"  :subid("87_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1574
+.annotate "line", 585
+    new $P1573, 'ExceptionHandler'
+    set_addr $P1573, control_1572
+    $P1573."handle_types"(58)
+    push_eh $P1573
+    .lex "self", self
+    .lex "$/", param_1574
+.annotate "line", 586
+    new $P1575, "Undef"
+    .lex "$past", $P1575
+.annotate "line", 587
+    new $P1576, "Undef"
+    .lex "$pirop", $P1576
+.annotate "line", 586
+    find_lex $P1579, "$/"
+    unless_null $P1579, vivify_488
+    $P1579 = root_new ['parrot';'Hash']
   vivify_488:
-    set $P1578, $P1577["args"]
-    unless_null $P1578, vivify_489
-    new $P1578, "Undef"
+    set $P1580, $P1579["args"]
+    unless_null $P1580, vivify_489
+    new $P1580, "Undef"
   vivify_489:
-    if $P1578, if_1576
-    get_hll_global $P1583, ["PAST"], "Op"
-    find_lex $P1584, "$/"
-    $P1585 = $P1583."new"($P1584 :named("node"))
-    set $P1575, $P1585
-    goto if_1576_end
-  if_1576:
-    find_lex $P1579, "$/"
-    unless_null $P1579, vivify_490
-    new $P1579, "Hash"
+    if $P1580, if_1578
+    get_hll_global $P1585, ["PAST"], "Op"
+    find_lex $P1586, "$/"
+    $P1587 = $P1585."new"($P1586 :named("node"))
+    set $P1577, $P1587
+    goto if_1578_end
+  if_1578:
+    find_lex $P1581, "$/"
+    unless_null $P1581, vivify_490
+    $P1581 = root_new ['parrot';'Hash']
   vivify_490:
-    set $P1580, $P1579["args"]
-    unless_null $P1580, vivify_491
-    new $P1580, "ResizablePMCArray"
+    set $P1582, $P1581["args"]
+    unless_null $P1582, vivify_491
+    $P1582 = root_new ['parrot';'ResizablePMCArray']
   vivify_491:
-    set $P1581, $P1580[0]
-    unless_null $P1581, vivify_492
-    new $P1581, "Undef"
+    set $P1583, $P1582[0]
+    unless_null $P1583, vivify_492
+    new $P1583, "Undef"
   vivify_492:
-    $P1582 = $P1581."ast"()
-    set $P1575, $P1582
-  if_1576_end:
-    store_lex "$past", $P1575
-.annotate "line", 584
-    find_lex $P1586, "$/"
-    unless_null $P1586, vivify_493
-    new $P1586, "Hash"
+    $P1584 = $P1583."ast"()
+    set $P1577, $P1584
+  if_1578_end:
+    store_lex "$past", $P1577
+.annotate "line", 587
+    find_lex $P1588, "$/"
+    unless_null $P1588, vivify_493
+    $P1588 = root_new ['parrot';'Hash']
   vivify_493:
-    set $P1587, $P1586["op"]
-    unless_null $P1587, vivify_494
-    new $P1587, "Undef"
+    set $P1589, $P1588["op"]
+    unless_null $P1589, vivify_494
+    new $P1589, "Undef"
   vivify_494:
-    set $S1588, $P1587
-    new $P1589, 'String'
-    set $P1589, $S1588
-    store_lex "$pirop", $P1589
-.annotate "line", 585
+    set $S1590, $P1589
+    new $P1591, 'String'
+    set $P1591, $S1590
+    store_lex "$pirop", $P1591
+.annotate "line", 588
 
         $P0 = find_lex '$pirop'
         $S0 = $P0
         $P0 = split '__', $S0
         $S0 = join ' ', $P0
-        $P1590 = box $S0
+        $P1592 = box $S0
     
-    store_lex "$pirop", $P1590
-.annotate "line", 592
-    find_lex $P1591, "$past"
-    find_lex $P1592, "$pirop"
-    $P1591."pirop"($P1592)
-.annotate "line", 593
+    store_lex "$pirop", $P1592
+.annotate "line", 595
     find_lex $P1593, "$past"
-    $P1593."pasttype"("pirop")
-.annotate "line", 594
-    find_lex $P1594, "$/"
+    find_lex $P1594, "$pirop"
+    $P1593."pirop"($P1594)
+.annotate "line", 596
     find_lex $P1595, "$past"
-    $P1596 = $P1594."!make"($P1595)
-.annotate "line", 582
-    .return ($P1596)
-  control_1570:
+    $P1595."pasttype"("pirop")
+.annotate "line", 597
+    find_lex $P1596, "$/"
+    find_lex $P1597, "$past"
+    $P1598 = $P1596."!make"($P1597)
+.annotate "line", 585
+    .return ($P1598)
+  control_1572:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1597, exception, "payload"
-    .return ($P1597)
+    getattribute $P1599, exception, "payload"
+    .return ($P1599)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "args"  :subid("88_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1601
-.annotate "line", 597
-    new $P1600, 'ExceptionHandler'
-    set_addr $P1600, control_1599
-    $P1600."handle_types"(58)
-    push_eh $P1600
-    .lex "self", self
-    .lex "$/", param_1601
-    find_lex $P1602, "$/"
-    find_lex $P1603, "$/"
-    unless_null $P1603, vivify_495
-    new $P1603, "Hash"
+.sub "args"  :subid("88_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1603
+.annotate "line", 600
+    new $P1602, 'ExceptionHandler'
+    set_addr $P1602, control_1601
+    $P1602."handle_types"(58)
+    push_eh $P1602
+    .lex "self", self
+    .lex "$/", param_1603
+    find_lex $P1604, "$/"
+    find_lex $P1605, "$/"
+    unless_null $P1605, vivify_495
+    $P1605 = root_new ['parrot';'Hash']
   vivify_495:
-    set $P1604, $P1603["arglist"]
-    unless_null $P1604, vivify_496
-    new $P1604, "Undef"
+    set $P1606, $P1605["arglist"]
+    unless_null $P1606, vivify_496
+    new $P1606, "Undef"
   vivify_496:
-    $P1605 = $P1604."ast"()
-    $P1606 = $P1602."!make"($P1605)
-    .return ($P1606)
-  control_1599:
+    $P1607 = $P1606."ast"()
+    $P1608 = $P1604."!make"($P1607)
+    .return ($P1608)
+  control_1601:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1607, exception, "payload"
-    .return ($P1607)
+    getattribute $P1609, exception, "payload"
+    .return ($P1609)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "arglist"  :subid("89_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1611
-.annotate "line", 599
-    .const 'Sub' $P1622 = "90_1261064035.64813" 
-    capture_lex $P1622
-    new $P1610, 'ExceptionHandler'
-    set_addr $P1610, control_1609
-    $P1610."handle_types"(58)
-    push_eh $P1610
+.sub "arglist"  :subid("89_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1613
+.annotate "line", 602
+    .const 'Sub' $P1624 = "90_1267204714.47172" 
+    capture_lex $P1624
+    new $P1612, 'ExceptionHandler'
+    set_addr $P1612, control_1611
+    $P1612."handle_types"(58)
+    push_eh $P1612
     .lex "self", self
-    .lex "$/", param_1611
-.annotate "line", 600
-    new $P1612, "Undef"
-    .lex "$past", $P1612
-.annotate "line", 608
-    new $P1613, "Undef"
-    .lex "$i", $P1613
-.annotate "line", 609
+    .lex "$/", param_1613
+.annotate "line", 603
     new $P1614, "Undef"
-    .lex "$n", $P1614
-.annotate "line", 600
-    get_hll_global $P1615, ["PAST"], "Op"
-    find_lex $P1616, "$/"
-    $P1617 = $P1615."new"("call" :named("pasttype"), $P1616 :named("node"))
-    store_lex "$past", $P1617
-.annotate "line", 601
-    find_lex $P1619, "$/"
-    unless_null $P1619, vivify_497
-    new $P1619, "Hash"
+    .lex "$past", $P1614
+.annotate "line", 611
+    new $P1615, "Undef"
+    .lex "$i", $P1615
+.annotate "line", 612
+    new $P1616, "Undef"
+    .lex "$n", $P1616
+.annotate "line", 603
+    get_hll_global $P1617, ["PAST"], "Op"
+    find_lex $P1618, "$/"
+    $P1619 = $P1617."new"("call" :named("pasttype"), $P1618 :named("node"))
+    store_lex "$past", $P1619
+.annotate "line", 604
+    find_lex $P1621, "$/"
+    unless_null $P1621, vivify_497
+    $P1621 = root_new ['parrot';'Hash']
   vivify_497:
-    set $P1620, $P1619["EXPR"]
-    unless_null $P1620, vivify_498
-    new $P1620, "Undef"
+    set $P1622, $P1621["EXPR"]
+    unless_null $P1622, vivify_498
+    new $P1622, "Undef"
   vivify_498:
-    unless $P1620, if_1618_end
-    .const 'Sub' $P1622 = "90_1261064035.64813" 
-    capture_lex $P1622
-    $P1622()
-  if_1618_end:
-.annotate "line", 608
-    new $P1654, "Integer"
-    assign $P1654, 0
-    store_lex "$i", $P1654
-.annotate "line", 609
-    find_lex $P1655, "$past"
-    $P1656 = $P1655."list"()
-    set $N1657, $P1656
-    new $P1658, 'Float'
-    set $P1658, $N1657
-    store_lex "$n", $P1658
-.annotate "line", 610
-    new $P1686, 'ExceptionHandler'
-    set_addr $P1686, loop1685_handler
-    $P1686."handle_types"(65, 67, 66)
-    push_eh $P1686
-  loop1685_test:
-    find_lex $P1659, "$i"
-    set $N1660, $P1659
-    find_lex $P1661, "$n"
-    set $N1662, $P1661
-    islt $I1663, $N1660, $N1662
-    unless $I1663, loop1685_done
-  loop1685_redo:
+    unless $P1622, if_1620_end
+    .const 'Sub' $P1624 = "90_1267204714.47172" 
+    capture_lex $P1624
+    $P1624()
+  if_1620_end:
 .annotate "line", 611
-    find_lex $P1665, "$i"
-    set $I1666, $P1665
-    find_lex $P1667, "$past"
-    unless_null $P1667, vivify_502
-    new $P1667, "ResizablePMCArray"
+    new $P1656, "Integer"
+    assign $P1656, 0
+    store_lex "$i", $P1656
+.annotate "line", 612
+    find_lex $P1657, "$past"
+    $P1658 = $P1657."list"()
+    set $N1659, $P1658
+    new $P1660, 'Float'
+    set $P1660, $N1659
+    store_lex "$n", $P1660
+.annotate "line", 613
+    new $P1688, 'ExceptionHandler'
+    set_addr $P1688, loop1687_handler
+    $P1688."handle_types"(65, 67, 66)
+    push_eh $P1688
+  loop1687_test:
+    find_lex $P1661, "$i"
+    set $N1662, $P1661
+    find_lex $P1663, "$n"
+    set $N1664, $P1663
+    islt $I1665, $N1662, $N1664
+    unless $I1665, loop1687_done
+  loop1687_redo:
+.annotate "line", 614
+    find_lex $P1667, "$i"
+    set $I1668, $P1667
+    find_lex $P1669, "$past"
+    unless_null $P1669, vivify_502
+    $P1669 = root_new ['parrot';'ResizablePMCArray']
   vivify_502:
-    set $P1668, $P1667[$I1666]
-    unless_null $P1668, vivify_503
-    new $P1668, "Undef"
+    set $P1670, $P1669[$I1668]
+    unless_null $P1670, vivify_503
+    new $P1670, "Undef"
   vivify_503:
-    $S1669 = $P1668."name"()
-    iseq $I1670, $S1669, "&prefix:<|>"
-    unless $I1670, if_1664_end
-.annotate "line", 612
-    find_lex $P1671, "$i"
-    set $I1672, $P1671
-    find_lex $P1673, "$past"
-    unless_null $P1673, vivify_504
-    new $P1673, "ResizablePMCArray"
+    $S1671 = $P1670."name"()
+    iseq $I1672, $S1671, "&prefix:<|>"
+    unless $I1672, if_1666_end
+.annotate "line", 615
+    find_lex $P1673, "$i"
+    set $I1674, $P1673
+    find_lex $P1675, "$past"
+    unless_null $P1675, vivify_504
+    $P1675 = root_new ['parrot';'ResizablePMCArray']
   vivify_504:
-    set $P1674, $P1673[$I1672]
-    unless_null $P1674, vivify_505
-    new $P1674, "ResizablePMCArray"
+    set $P1676, $P1675[$I1674]
+    unless_null $P1676, vivify_505
+    $P1676 = root_new ['parrot';'ResizablePMCArray']
   vivify_505:
-    set $P1675, $P1674[0]
-    unless_null $P1675, vivify_506
-    new $P1675, "Undef"
+    set $P1677, $P1676[0]
+    unless_null $P1677, vivify_506
+    new $P1677, "Undef"
   vivify_506:
-    find_lex $P1676, "$i"
-    set $I1677, $P1676
-    find_lex $P1678, "$past"
-    unless_null $P1678, vivify_507
-    new $P1678, "ResizablePMCArray"
-    store_lex "$past", $P1678
+    find_lex $P1678, "$i"
+    set $I1679, $P1678
+    find_lex $P1680, "$past"
+    unless_null $P1680, vivify_507
+    $P1680 = root_new ['parrot';'ResizablePMCArray']
+    store_lex "$past", $P1680
   vivify_507:
-    set $P1678[$I1677], $P1675
-.annotate "line", 613
-    find_lex $P1679, "$i"
-    set $I1680, $P1679
-    find_lex $P1681, "$past"
-    unless_null $P1681, vivify_508
-    new $P1681, "ResizablePMCArray"
+    set $P1680[$I1679], $P1677
+.annotate "line", 616
+    find_lex $P1681, "$i"
+    set $I1682, $P1681
+    find_lex $P1683, "$past"
+    unless_null $P1683, vivify_508
+    $P1683 = root_new ['parrot';'ResizablePMCArray']
   vivify_508:
-    set $P1682, $P1681[$I1680]
-    unless_null $P1682, vivify_509
-    new $P1682, "Undef"
+    set $P1684, $P1683[$I1682]
+    unless_null $P1684, vivify_509
+    new $P1684, "Undef"
   vivify_509:
-    $P1682."flat"(1)
-  if_1664_end:
-.annotate "line", 611
-    find_lex $P1683, "$i"
-    clone $P1684, $P1683
-    inc $P1683
-  loop1685_next:
-.annotate "line", 610
-    goto loop1685_test
-  loop1685_handler:
+    $P1684."flat"(1)
+  if_1666_end:
+.annotate "line", 614
+    find_lex $P1685, "$i"
+    clone $P1686, $P1685
+    inc $P1685
+  loop1687_next:
+.annotate "line", 613
+    goto loop1687_test
+  loop1687_handler:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1687, exception, 'type'
-    eq $P1687, 65, loop1685_next
-    eq $P1687, 67, loop1685_redo
-  loop1685_done:
+    getattribute $P1689, exception, 'type'
+    eq $P1689, 65, loop1687_next
+    eq $P1689, 67, loop1687_redo
+  loop1687_done:
     pop_eh 
-.annotate "line", 617
-    find_lex $P1688, "$/"
-    find_lex $P1689, "$past"
-    $P1690 = $P1688."!make"($P1689)
-.annotate "line", 599
-    .return ($P1690)
-  control_1609:
+.annotate "line", 620
+    find_lex $P1690, "$/"
+    find_lex $P1691, "$past"
+    $P1692 = $P1690."!make"($P1691)
+.annotate "line", 602
+    .return ($P1692)
+  control_1611:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1691, exception, "payload"
-    .return ($P1691)
+    getattribute $P1693, exception, "payload"
+    .return ($P1693)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1621"  :anon :subid("90_1261064035.64813") :outer("89_1261064035.64813")
-.annotate "line", 601
-    .const 'Sub' $P1643 = "91_1261064035.64813" 
-    capture_lex $P1643
-.annotate "line", 602
-    new $P1623, "Undef"
-    .lex "$expr", $P1623
-    find_lex $P1624, "$/"
-    unless_null $P1624, vivify_499
-    new $P1624, "Hash"
-  vivify_499:
-    set $P1625, $P1624["EXPR"]
-    unless_null $P1625, vivify_500
+.sub "_block1623"  :anon :subid("90_1267204714.47172") :outer("89_1267204714.47172")
+.annotate "line", 604
+    .const 'Sub' $P1645 = "91_1267204714.47172" 
+    capture_lex $P1645
+.annotate "line", 605
     new $P1625, "Undef"
+    .lex "$expr", $P1625
+    find_lex $P1626, "$/"
+    unless_null $P1626, vivify_499
+    $P1626 = root_new ['parrot';'Hash']
+  vivify_499:
+    set $P1627, $P1626["EXPR"]
+    unless_null $P1627, vivify_500
+    new $P1627, "Undef"
   vivify_500:
-    $P1626 = $P1625."ast"()
-    store_lex "$expr", $P1626
-.annotate "line", 603
-    find_lex $P1631, "$expr"
-    $S1632 = $P1631."name"()
-    iseq $I1633, $S1632, "&infix:<,>"
-    if $I1633, if_1630
-    new $P1629, 'Integer'
-    set $P1629, $I1633
+    $P1628 = $P1627."ast"()
+    store_lex "$expr", $P1628
+.annotate "line", 606
+    find_lex $P1633, "$expr"
+    $S1634 = $P1633."name"()
+    iseq $I1635, $S1634, "&infix:<,>"
+    if $I1635, if_1632
+    new $P1631, 'Integer'
+    set $P1631, $I1635
+    goto if_1632_end
+  if_1632:
+    find_lex $P1636, "$expr"
+    $P1637 = $P1636."named"()
+    isfalse $I1638, $P1637
+    new $P1631, 'Integer'
+    set $P1631, $I1638
+  if_1632_end:
+    if $P1631, if_1630
+.annotate "line", 609
+    find_lex $P1653, "$past"
+    find_lex $P1654, "$expr"
+    $P1655 = $P1653."push"($P1654)
+    set $P1629, $P1655
+.annotate "line", 606
     goto if_1630_end
   if_1630:
-    find_lex $P1634, "$expr"
-    $P1635 = $P1634."named"()
-    isfalse $I1636, $P1635
-    new $P1629, 'Integer'
-    set $P1629, $I1636
-  if_1630_end:
-    if $P1629, if_1628
-.annotate "line", 606
-    find_lex $P1651, "$past"
-    find_lex $P1652, "$expr"
-    $P1653 = $P1651."push"($P1652)
-    set $P1627, $P1653
-.annotate "line", 603
-    goto if_1628_end
-  if_1628:
-.annotate "line", 604
-    find_lex $P1638, "$expr"
-    $P1639 = $P1638."list"()
-    defined $I1640, $P1639
-    unless $I1640, for_undef_501
-    iter $P1637, $P1639
-    new $P1649, 'ExceptionHandler'
-    set_addr $P1649, loop1648_handler
-    $P1649."handle_types"(65, 67, 66)
-    push_eh $P1649
-  loop1648_test:
-    unless $P1637, loop1648_done
-    shift $P1641, $P1637
-  loop1648_redo:
-    .const 'Sub' $P1643 = "91_1261064035.64813" 
-    capture_lex $P1643
-    $P1643($P1641)
-  loop1648_next:
-    goto loop1648_test
-  loop1648_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P1650, exception, 'type'
-    eq $P1650, 65, loop1648_next
-    eq $P1650, 67, loop1648_redo
-  loop1648_done:
+.annotate "line", 607
+    find_lex $P1640, "$expr"
+    $P1641 = $P1640."list"()
+    defined $I1642, $P1641
+    unless $I1642, for_undef_501
+    iter $P1639, $P1641
+    new $P1651, 'ExceptionHandler'
+    set_addr $P1651, loop1650_handler
+    $P1651."handle_types"(65, 67, 66)
+    push_eh $P1651
+  loop1650_test:
+    unless $P1639, loop1650_done
+    shift $P1643, $P1639
+  loop1650_redo:
+    .const 'Sub' $P1645 = "91_1267204714.47172" 
+    capture_lex $P1645
+    $P1645($P1643)
+  loop1650_next:
+    goto loop1650_test
+  loop1650_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1652, exception, 'type'
+    eq $P1652, 65, loop1650_next
+    eq $P1652, 67, loop1650_redo
+  loop1650_done:
     pop_eh 
   for_undef_501:
-.annotate "line", 603
-    set $P1627, $P1637
-  if_1628_end:
-.annotate "line", 601
-    .return ($P1627)
+.annotate "line", 606
+    set $P1629, $P1639
+  if_1630_end:
+.annotate "line", 604
+    .return ($P1629)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1642"  :anon :subid("91_1261064035.64813") :outer("90_1261064035.64813")
-    .param pmc param_1644
-.annotate "line", 604
-    .lex "$_", param_1644
-    find_lex $P1645, "$past"
-    find_lex $P1646, "$_"
-    $P1647 = $P1645."push"($P1646)
-    .return ($P1647)
+.sub "_block1644"  :anon :subid("91_1267204714.47172") :outer("90_1267204714.47172")
+    .param pmc param_1646
+.annotate "line", 607
+    .lex "$_", param_1646
+    find_lex $P1647, "$past"
+    find_lex $P1648, "$_"
+    $P1649 = $P1647."push"($P1648)
+    .return ($P1649)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<value>"  :subid("92_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1695
-.annotate "line", 621
-    new $P1694, 'ExceptionHandler'
-    set_addr $P1694, control_1693
-    $P1694."handle_types"(58)
-    push_eh $P1694
-    .lex "self", self
-    .lex "$/", param_1695
-    find_lex $P1696, "$/"
-    find_lex $P1697, "$/"
-    unless_null $P1697, vivify_510
-    new $P1697, "Hash"
+.sub "term:sym<value>"  :subid("92_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1697
+.annotate "line", 624
+    new $P1696, 'ExceptionHandler'
+    set_addr $P1696, control_1695
+    $P1696."handle_types"(58)
+    push_eh $P1696
+    .lex "self", self
+    .lex "$/", param_1697
+    find_lex $P1698, "$/"
+    find_lex $P1699, "$/"
+    unless_null $P1699, vivify_510
+    $P1699 = root_new ['parrot';'Hash']
   vivify_510:
-    set $P1698, $P1697["value"]
-    unless_null $P1698, vivify_511
-    new $P1698, "Undef"
+    set $P1700, $P1699["value"]
+    unless_null $P1700, vivify_511
+    new $P1700, "Undef"
   vivify_511:
-    $P1699 = $P1698."ast"()
-    $P1700 = $P1696."!make"($P1699)
-    .return ($P1700)
-  control_1693:
+    $P1701 = $P1700."ast"()
+    $P1702 = $P1698."!make"($P1701)
+    .return ($P1702)
+  control_1695:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1701, exception, "payload"
-    .return ($P1701)
+    getattribute $P1703, exception, "payload"
+    .return ($P1703)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<( )>"  :subid("93_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1705
-.annotate "line", 623
-    new $P1704, 'ExceptionHandler'
-    set_addr $P1704, control_1703
-    $P1704."handle_types"(58)
-    push_eh $P1704
-    .lex "self", self
-    .lex "$/", param_1705
-.annotate "line", 624
-    find_lex $P1706, "$/"
-.annotate "line", 625
-    find_lex $P1709, "$/"
-    unless_null $P1709, vivify_512
-    new $P1709, "Hash"
-  vivify_512:
-    set $P1710, $P1709["EXPR"]
-    unless_null $P1710, vivify_513
-    new $P1710, "Undef"
-  vivify_513:
-    if $P1710, if_1708
+.sub "circumfix:sym<( )>"  :subid("93_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1707
 .annotate "line", 626
-    get_hll_global $P1715, ["PAST"], "Op"
-    find_lex $P1716, "$/"
-    $P1717 = $P1715."new"("list" :named("pasttype"), $P1716 :named("node"))
-    set $P1707, $P1717
-.annotate "line", 625
-    goto if_1708_end
-  if_1708:
+    new $P1706, 'ExceptionHandler'
+    set_addr $P1706, control_1705
+    $P1706."handle_types"(58)
+    push_eh $P1706
+    .lex "self", self
+    .lex "$/", param_1707
+.annotate "line", 627
+    find_lex $P1708, "$/"
+.annotate "line", 628
     find_lex $P1711, "$/"
-    unless_null $P1711, vivify_514
-    new $P1711, "Hash"
-  vivify_514:
+    unless_null $P1711, vivify_512
+    $P1711 = root_new ['parrot';'Hash']
+  vivify_512:
     set $P1712, $P1711["EXPR"]
-    unless_null $P1712, vivify_515
-    new $P1712, "ResizablePMCArray"
+    unless_null $P1712, vivify_513
+    new $P1712, "Undef"
+  vivify_513:
+    if $P1712, if_1710
+.annotate "line", 629
+    get_hll_global $P1717, ["PAST"], "Op"
+    find_lex $P1718, "$/"
+    $P1719 = $P1717."new"("list" :named("pasttype"), $P1718 :named("node"))
+    set $P1709, $P1719
+.annotate "line", 628
+    goto if_1710_end
+  if_1710:
+    find_lex $P1713, "$/"
+    unless_null $P1713, vivify_514
+    $P1713 = root_new ['parrot';'Hash']
+  vivify_514:
+    set $P1714, $P1713["EXPR"]
+    unless_null $P1714, vivify_515
+    $P1714 = root_new ['parrot';'ResizablePMCArray']
   vivify_515:
-    set $P1713, $P1712[0]
-    unless_null $P1713, vivify_516
-    new $P1713, "Undef"
+    set $P1715, $P1714[0]
+    unless_null $P1715, vivify_516
+    new $P1715, "Undef"
   vivify_516:
-    $P1714 = $P1713."ast"()
-    set $P1707, $P1714
-  if_1708_end:
-    $P1718 = $P1706."!make"($P1707)
-.annotate "line", 623
-    .return ($P1718)
-  control_1703:
+    $P1716 = $P1715."ast"()
+    set $P1709, $P1716
+  if_1710_end:
+    $P1720 = $P1708."!make"($P1709)
+.annotate "line", 626
+    .return ($P1720)
+  control_1705:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1719, exception, "payload"
-    .return ($P1719)
+    getattribute $P1721, exception, "payload"
+    .return ($P1721)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<[ ]>"  :subid("94_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1723
-.annotate "line", 629
-    new $P1722, 'ExceptionHandler'
-    set_addr $P1722, control_1721
-    $P1722."handle_types"(58)
-    push_eh $P1722
-    .lex "self", self
-    .lex "$/", param_1723
-.annotate "line", 630
-    new $P1724, "Undef"
-    .lex "$past", $P1724
-.annotate "line", 629
-    find_lex $P1725, "$past"
-.annotate "line", 631
-    find_lex $P1727, "$/"
-    unless_null $P1727, vivify_517
-    new $P1727, "Hash"
-  vivify_517:
-    set $P1728, $P1727["EXPR"]
-    unless_null $P1728, vivify_518
-    new $P1728, "Undef"
-  vivify_518:
-    if $P1728, if_1726
-.annotate "line", 638
-    get_hll_global $P1740, ["PAST"], "Op"
-    $P1741 = $P1740."new"("list" :named("pasttype"))
-    store_lex "$past", $P1741
-.annotate "line", 637
-    goto if_1726_end
-  if_1726:
+.sub "circumfix:sym<[ ]>"  :subid("94_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1725
 .annotate "line", 632
+    new $P1724, 'ExceptionHandler'
+    set_addr $P1724, control_1723
+    $P1724."handle_types"(58)
+    push_eh $P1724
+    .lex "self", self
+    .lex "$/", param_1725
+.annotate "line", 633
+    new $P1726, "Undef"
+    .lex "$past", $P1726
+.annotate "line", 632
+    find_lex $P1727, "$past"
+.annotate "line", 634
     find_lex $P1729, "$/"
-    unless_null $P1729, vivify_519
-    new $P1729, "Hash"
-  vivify_519:
+    unless_null $P1729, vivify_517
+    $P1729 = root_new ['parrot';'Hash']
+  vivify_517:
     set $P1730, $P1729["EXPR"]
-    unless_null $P1730, vivify_520
-    new $P1730, "ResizablePMCArray"
+    unless_null $P1730, vivify_518
+    new $P1730, "Undef"
+  vivify_518:
+    if $P1730, if_1728
+.annotate "line", 641
+    get_hll_global $P1742, ["PAST"], "Op"
+    $P1743 = $P1742."new"("list" :named("pasttype"))
+    store_lex "$past", $P1743
+.annotate "line", 640
+    goto if_1728_end
+  if_1728:
+.annotate "line", 635
+    find_lex $P1731, "$/"
+    unless_null $P1731, vivify_519
+    $P1731 = root_new ['parrot';'Hash']
+  vivify_519:
+    set $P1732, $P1731["EXPR"]
+    unless_null $P1732, vivify_520
+    $P1732 = root_new ['parrot';'ResizablePMCArray']
   vivify_520:
-    set $P1731, $P1730[0]
-    unless_null $P1731, vivify_521
-    new $P1731, "Undef"
+    set $P1733, $P1732[0]
+    unless_null $P1733, vivify_521
+    new $P1733, "Undef"
   vivify_521:
-    $P1732 = $P1731."ast"()
-    store_lex "$past", $P1732
-.annotate "line", 633
-    find_lex $P1734, "$past"
-    $S1735 = $P1734."name"()
-    isne $I1736, $S1735, "&infix:<,>"
-    unless $I1736, if_1733_end
-.annotate "line", 634
-    get_hll_global $P1737, ["PAST"], "Op"
-    find_lex $P1738, "$past"
-    $P1739 = $P1737."new"($P1738, "list" :named("pasttype"))
-    store_lex "$past", $P1739
-  if_1733_end:
-  if_1726_end:
-.annotate "line", 640
-    find_lex $P1742, "$past"
-    $P1742."name"("&circumfix:<[ ]>")
-.annotate "line", 641
-    find_lex $P1743, "$/"
+    $P1734 = $P1733."ast"()
+    store_lex "$past", $P1734
+.annotate "line", 636
+    find_lex $P1736, "$past"
+    $S1737 = $P1736."name"()
+    isne $I1738, $S1737, "&infix:<,>"
+    unless $I1738, if_1735_end
+.annotate "line", 637
+    get_hll_global $P1739, ["PAST"], "Op"
+    find_lex $P1740, "$past"
+    $P1741 = $P1739."new"($P1740, "list" :named("pasttype"))
+    store_lex "$past", $P1741
+  if_1735_end:
+  if_1728_end:
+.annotate "line", 643
     find_lex $P1744, "$past"
-    $P1745 = $P1743."!make"($P1744)
-.annotate "line", 629
-    .return ($P1745)
-  control_1721:
+    $P1744."name"("&circumfix:<[ ]>")
+.annotate "line", 644
+    find_lex $P1745, "$/"
+    find_lex $P1746, "$past"
+    $P1747 = $P1745."!make"($P1746)
+.annotate "line", 632
+    .return ($P1747)
+  control_1723:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1746, exception, "payload"
-    .return ($P1746)
+    getattribute $P1748, exception, "payload"
+    .return ($P1748)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<ang>"  :subid("95_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1750
-.annotate "line", 644
-    new $P1749, 'ExceptionHandler'
-    set_addr $P1749, control_1748
-    $P1749."handle_types"(58)
-    push_eh $P1749
-    .lex "self", self
-    .lex "$/", param_1750
-    find_lex $P1751, "$/"
-    find_lex $P1752, "$/"
-    unless_null $P1752, vivify_522
-    new $P1752, "Hash"
+.sub "circumfix:sym<ang>"  :subid("95_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1752
+.annotate "line", 647
+    new $P1751, 'ExceptionHandler'
+    set_addr $P1751, control_1750
+    $P1751."handle_types"(58)
+    push_eh $P1751
+    .lex "self", self
+    .lex "$/", param_1752
+    find_lex $P1753, "$/"
+    find_lex $P1754, "$/"
+    unless_null $P1754, vivify_522
+    $P1754 = root_new ['parrot';'Hash']
   vivify_522:
-    set $P1753, $P1752["quote_EXPR"]
-    unless_null $P1753, vivify_523
-    new $P1753, "Undef"
+    set $P1755, $P1754["quote_EXPR"]
+    unless_null $P1755, vivify_523
+    new $P1755, "Undef"
   vivify_523:
-    $P1754 = $P1753."ast"()
-    $P1755 = $P1751."!make"($P1754)
-    .return ($P1755)
-  control_1748:
+    $P1756 = $P1755."ast"()
+    $P1757 = $P1753."!make"($P1756)
+    .return ($P1757)
+  control_1750:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1756, exception, "payload"
-    .return ($P1756)
+    getattribute $P1758, exception, "payload"
+    .return ($P1758)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("96_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1760
-.annotate "line", 645
-    new $P1759, 'ExceptionHandler'
-    set_addr $P1759, control_1758
-    $P1759."handle_types"(58)
-    push_eh $P1759
-    .lex "self", self
-    .lex "$/", param_1760
-    find_lex $P1761, "$/"
-    find_lex $P1762, "$/"
-    unless_null $P1762, vivify_524
-    new $P1762, "Hash"
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("96_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1762
+.annotate "line", 648
+    new $P1761, 'ExceptionHandler'
+    set_addr $P1761, control_1760
+    $P1761."handle_types"(58)
+    push_eh $P1761
+    .lex "self", self
+    .lex "$/", param_1762
+    find_lex $P1763, "$/"
+    find_lex $P1764, "$/"
+    unless_null $P1764, vivify_524
+    $P1764 = root_new ['parrot';'Hash']
   vivify_524:
-    set $P1763, $P1762["quote_EXPR"]
-    unless_null $P1763, vivify_525
-    new $P1763, "Undef"
+    set $P1765, $P1764["quote_EXPR"]
+    unless_null $P1765, vivify_525
+    new $P1765, "Undef"
   vivify_525:
-    $P1764 = $P1763."ast"()
-    $P1765 = $P1761."!make"($P1764)
-    .return ($P1765)
-  control_1758:
+    $P1766 = $P1765."ast"()
+    $P1767 = $P1763."!make"($P1766)
+    .return ($P1767)
+  control_1760:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1766, exception, "payload"
-    .return ($P1766)
+    getattribute $P1768, exception, "payload"
+    .return ($P1768)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<{ }>"  :subid("97_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1770
-.annotate "line", 647
-    new $P1769, 'ExceptionHandler'
-    set_addr $P1769, control_1768
-    $P1769."handle_types"(58)
-    push_eh $P1769
-    .lex "self", self
-    .lex "$/", param_1770
-.annotate "line", 648
-    find_lex $P1771, "$/"
-    find_lex $P1774, "$/"
-    unless_null $P1774, vivify_526
-    new $P1774, "Hash"
+.sub "circumfix:sym<{ }>"  :subid("97_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1772
+.annotate "line", 650
+    new $P1771, 'ExceptionHandler'
+    set_addr $P1771, control_1770
+    $P1771."handle_types"(58)
+    push_eh $P1771
+    .lex "self", self
+    .lex "$/", param_1772
+.annotate "line", 651
+    find_lex $P1773, "$/"
+    find_lex $P1776, "$/"
+    unless_null $P1776, vivify_526
+    $P1776 = root_new ['parrot';'Hash']
   vivify_526:
-    set $P1775, $P1774["pblock"]
-    unless_null $P1775, vivify_527
-    new $P1775, "Hash"
+    set $P1777, $P1776["pblock"]
+    unless_null $P1777, vivify_527
+    $P1777 = root_new ['parrot';'Hash']
   vivify_527:
-    set $P1776, $P1775["blockoid"]
-    unless_null $P1776, vivify_528
-    new $P1776, "Hash"
+    set $P1778, $P1777["blockoid"]
+    unless_null $P1778, vivify_528
+    $P1778 = root_new ['parrot';'Hash']
   vivify_528:
-    set $P1777, $P1776["statementlist"]
-    unless_null $P1777, vivify_529
-    new $P1777, "Hash"
+    set $P1779, $P1778["statementlist"]
+    unless_null $P1779, vivify_529
+    $P1779 = root_new ['parrot';'Hash']
   vivify_529:
-    set $P1778, $P1777["statement"]
-    unless_null $P1778, vivify_530
-    new $P1778, "Undef"
+    set $P1780, $P1779["statement"]
+    unless_null $P1780, vivify_530
+    new $P1780, "Undef"
   vivify_530:
-    set $N1779, $P1778
-    isgt $I1780, $N1779, 0.0
-    if $I1780, if_1773
-.annotate "line", 650
-    get_hll_global $P1784, ["PAST"], "Op"
-    find_lex $P1785, "$/"
-    $P1786 = $P1784."new"("    %r = new [\"Hash\"]" :named("inline"), $P1785 :named("node"))
-    set $P1772, $P1786
-.annotate "line", 648
-    goto if_1773_end
-  if_1773:
-.annotate "line", 649
-    find_lex $P1781, "$/"
-    unless_null $P1781, vivify_531
-    new $P1781, "Hash"
+    set $N1781, $P1780
+    isgt $I1782, $N1781, 0.0
+    if $I1782, if_1775
+.annotate "line", 653
+    $P1786 = "vivitype"("%")
+    set $P1774, $P1786
+.annotate "line", 651
+    goto if_1775_end
+  if_1775:
+.annotate "line", 652
+    find_lex $P1783, "$/"
+    unless_null $P1783, vivify_531
+    $P1783 = root_new ['parrot';'Hash']
   vivify_531:
-    set $P1782, $P1781["pblock"]
-    unless_null $P1782, vivify_532
-    new $P1782, "Undef"
+    set $P1784, $P1783["pblock"]
+    unless_null $P1784, vivify_532
+    new $P1784, "Undef"
   vivify_532:
-    $P1783 = $P1782."ast"()
-    set $P1772, $P1783
-  if_1773_end:
-    $P1787 = $P1771."!make"($P1772)
-.annotate "line", 647
+    $P1785 = $P1784."ast"()
+    set $P1774, $P1785
+  if_1775_end:
+    $P1787 = $P1773."!make"($P1774)
+.annotate "line", 650
     .return ($P1787)
-  control_1768:
+  control_1770:
     .local pmc exception 
     .get_results (exception) 
     getattribute $P1788, exception, "payload"
@@ -21134,21 +21177,21 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<sigil>"  :subid("98_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "circumfix:sym<sigil>"  :subid("98_1267204714.47172") :method :outer("11_1267204714.47172")
     .param pmc param_1792
-.annotate "line", 653
+.annotate "line", 656
     new $P1791, 'ExceptionHandler'
     set_addr $P1791, control_1790
     $P1791."handle_types"(58)
     push_eh $P1791
     .lex "self", self
     .lex "$/", param_1792
-.annotate "line", 654
+.annotate "line", 657
     new $P1793, "Undef"
     .lex "$name", $P1793
     find_lex $P1796, "$/"
     unless_null $P1796, vivify_533
-    new $P1796, "Hash"
+    $P1796 = root_new ['parrot';'Hash']
   vivify_533:
     set $P1797, $P1796["sigil"]
     unless_null $P1797, vivify_534
@@ -21157,10 +21200,10 @@
     set $S1798, $P1797
     iseq $I1799, $S1798, "@"
     if $I1799, if_1795
-.annotate "line", 655
+.annotate "line", 658
     find_lex $P1803, "$/"
     unless_null $P1803, vivify_535
-    new $P1803, "Hash"
+    $P1803 = root_new ['parrot';'Hash']
   vivify_535:
     set $P1804, $P1803["sigil"]
     unless_null $P1804, vivify_536
@@ -21179,7 +21222,7 @@
     set $P1801, $P1807
   if_1802_end:
     set $P1794, $P1801
-.annotate "line", 654
+.annotate "line", 657
     goto if_1795_end
   if_1795:
     new $P1800, "String"
@@ -21187,13 +21230,13 @@
     set $P1794, $P1800
   if_1795_end:
     store_lex "$name", $P1794
-.annotate "line", 657
+.annotate "line", 660
     find_lex $P1809, "$/"
     get_hll_global $P1810, ["PAST"], "Op"
     find_lex $P1811, "$name"
     find_lex $P1812, "$/"
     unless_null $P1812, vivify_537
-    new $P1812, "Hash"
+    $P1812 = root_new ['parrot';'Hash']
   vivify_537:
     set $P1813, $P1812["semilist"]
     unless_null $P1813, vivify_538
@@ -21202,7 +21245,7 @@
     $P1814 = $P1813."ast"()
     $P1815 = $P1810."new"($P1814, "callmethod" :named("pasttype"), $P1811 :named("name"))
     $P1816 = $P1809."!make"($P1815)
-.annotate "line", 653
+.annotate "line", 656
     .return ($P1816)
   control_1790:
     .local pmc exception 
@@ -21213,9 +21256,9 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "semilist"  :subid("99_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "semilist"  :subid("99_1267204714.47172") :method :outer("11_1267204714.47172")
     .param pmc param_1821
-.annotate "line", 660
+.annotate "line", 663
     new $P1820, 'ExceptionHandler'
     set_addr $P1820, control_1819
     $P1820."handle_types"(58)
@@ -21225,7 +21268,7 @@
     find_lex $P1822, "$/"
     find_lex $P1823, "$/"
     unless_null $P1823, vivify_539
-    new $P1823, "Hash"
+    $P1823 = root_new ['parrot';'Hash']
   vivify_539:
     set $P1824, $P1823["statement"]
     unless_null $P1824, vivify_540
@@ -21243,964 +21286,973 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<[ ]>"  :subid("100_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "postcircumfix:sym<[ ]>"  :subid("100_1267204714.47172") :method :outer("11_1267204714.47172")
     .param pmc param_1831
-.annotate "line", 662
+.annotate "line", 665
     new $P1830, 'ExceptionHandler'
     set_addr $P1830, control_1829
     $P1830."handle_types"(58)
     push_eh $P1830
     .lex "self", self
     .lex "$/", param_1831
-.annotate "line", 663
+.annotate "line", 666
     find_lex $P1832, "$/"
     get_hll_global $P1833, ["PAST"], "Var"
     find_lex $P1834, "$/"
     unless_null $P1834, vivify_541
-    new $P1834, "Hash"
+    $P1834 = root_new ['parrot';'Hash']
   vivify_541:
     set $P1835, $P1834["EXPR"]
     unless_null $P1835, vivify_542
     new $P1835, "Undef"
   vivify_542:
     $P1836 = $P1835."ast"()
-    $P1837 = $P1833."new"($P1836, "keyed_int" :named("scope"), "Undef" :named("viviself"), "ResizablePMCArray" :named("vivibase"))
-    $P1838 = $P1832."!make"($P1837)
-.annotate "line", 662
-    .return ($P1838)
+.annotate "line", 668
+    $P1837 = "vivitype"("@")
+    $P1838 = $P1833."new"($P1836, "keyed_int" :named("scope"), "Undef" :named("viviself"), $P1837 :named("vivibase"))
+.annotate "line", 666
+    $P1839 = $P1832."!make"($P1838)
+.annotate "line", 665
+    .return ($P1839)
   control_1829:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1839, exception, "payload"
-    .return ($P1839)
+    getattribute $P1840, exception, "payload"
+    .return ($P1840)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<{ }>"  :subid("101_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1843
-.annotate "line", 668
-    new $P1842, 'ExceptionHandler'
-    set_addr $P1842, control_1841
-    $P1842."handle_types"(58)
-    push_eh $P1842
-    .lex "self", self
-    .lex "$/", param_1843
-.annotate "line", 669
-    find_lex $P1844, "$/"
-    get_hll_global $P1845, ["PAST"], "Var"
-    find_lex $P1846, "$/"
-    unless_null $P1846, vivify_543
-    new $P1846, "Hash"
+.sub "postcircumfix:sym<{ }>"  :subid("101_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1844
+.annotate "line", 671
+    new $P1843, 'ExceptionHandler'
+    set_addr $P1843, control_1842
+    $P1843."handle_types"(58)
+    push_eh $P1843
+    .lex "self", self
+    .lex "$/", param_1844
+.annotate "line", 672
+    find_lex $P1845, "$/"
+    get_hll_global $P1846, ["PAST"], "Var"
+    find_lex $P1847, "$/"
+    unless_null $P1847, vivify_543
+    $P1847 = root_new ['parrot';'Hash']
   vivify_543:
-    set $P1847, $P1846["EXPR"]
-    unless_null $P1847, vivify_544
-    new $P1847, "Undef"
+    set $P1848, $P1847["EXPR"]
+    unless_null $P1848, vivify_544
+    new $P1848, "Undef"
   vivify_544:
-    $P1848 = $P1847."ast"()
-    $P1849 = $P1845."new"($P1848, "keyed" :named("scope"), "Undef" :named("viviself"), "Hash" :named("vivibase"))
-    $P1850 = $P1844."!make"($P1849)
-.annotate "line", 668
-    .return ($P1850)
-  control_1841:
+    $P1849 = $P1848."ast"()
+.annotate "line", 674
+    $P1850 = "vivitype"("%")
+    $P1851 = $P1846."new"($P1849, "keyed" :named("scope"), "Undef" :named("viviself"), $P1850 :named("vivibase"))
+.annotate "line", 672
+    $P1852 = $P1845."!make"($P1851)
+.annotate "line", 671
+    .return ($P1852)
+  control_1842:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1851, exception, "payload"
-    .return ($P1851)
+    getattribute $P1853, exception, "payload"
+    .return ($P1853)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<ang>"  :subid("102_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1855
-.annotate "line", 674
-    new $P1854, 'ExceptionHandler'
-    set_addr $P1854, control_1853
-    $P1854."handle_types"(58)
-    push_eh $P1854
-    .lex "self", self
-    .lex "$/", param_1855
-.annotate "line", 675
-    find_lex $P1856, "$/"
-    get_hll_global $P1857, ["PAST"], "Var"
+.sub "postcircumfix:sym<ang>"  :subid("102_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1857
+.annotate "line", 677
+    new $P1856, 'ExceptionHandler'
+    set_addr $P1856, control_1855
+    $P1856."handle_types"(58)
+    push_eh $P1856
+    .lex "self", self
+    .lex "$/", param_1857
+.annotate "line", 678
     find_lex $P1858, "$/"
-    unless_null $P1858, vivify_545
-    new $P1858, "Hash"
+    get_hll_global $P1859, ["PAST"], "Var"
+    find_lex $P1860, "$/"
+    unless_null $P1860, vivify_545
+    $P1860 = root_new ['parrot';'Hash']
   vivify_545:
-    set $P1859, $P1858["quote_EXPR"]
-    unless_null $P1859, vivify_546
-    new $P1859, "Undef"
+    set $P1861, $P1860["quote_EXPR"]
+    unless_null $P1861, vivify_546
+    new $P1861, "Undef"
   vivify_546:
-    $P1860 = $P1859."ast"()
-    $P1861 = $P1857."new"($P1860, "keyed" :named("scope"), "Undef" :named("viviself"), "Hash" :named("vivibase"))
-    $P1862 = $P1856."!make"($P1861)
-.annotate "line", 674
-    .return ($P1862)
-  control_1853:
+    $P1862 = $P1861."ast"()
+.annotate "line", 680
+    $P1863 = "vivitype"("%")
+    $P1864 = $P1859."new"($P1862, "keyed" :named("scope"), "Undef" :named("viviself"), $P1863 :named("vivibase"))
+.annotate "line", 678
+    $P1865 = $P1858."!make"($P1864)
+.annotate "line", 677
+    .return ($P1865)
+  control_1855:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1863, exception, "payload"
-    .return ($P1863)
+    getattribute $P1866, exception, "payload"
+    .return ($P1866)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<( )>"  :subid("103_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1867
-.annotate "line", 680
-    new $P1866, 'ExceptionHandler'
-    set_addr $P1866, control_1865
-    $P1866."handle_types"(58)
-    push_eh $P1866
-    .lex "self", self
-    .lex "$/", param_1867
-.annotate "line", 681
-    find_lex $P1868, "$/"
-    find_lex $P1869, "$/"
-    unless_null $P1869, vivify_547
-    new $P1869, "Hash"
+.sub "postcircumfix:sym<( )>"  :subid("103_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1870
+.annotate "line", 683
+    new $P1869, 'ExceptionHandler'
+    set_addr $P1869, control_1868
+    $P1869."handle_types"(58)
+    push_eh $P1869
+    .lex "self", self
+    .lex "$/", param_1870
+.annotate "line", 684
+    find_lex $P1871, "$/"
+    find_lex $P1872, "$/"
+    unless_null $P1872, vivify_547
+    $P1872 = root_new ['parrot';'Hash']
   vivify_547:
-    set $P1870, $P1869["arglist"]
-    unless_null $P1870, vivify_548
-    new $P1870, "Undef"
+    set $P1873, $P1872["arglist"]
+    unless_null $P1873, vivify_548
+    new $P1873, "Undef"
   vivify_548:
-    $P1871 = $P1870."ast"()
-    $P1872 = $P1868."!make"($P1871)
-.annotate "line", 680
-    .return ($P1872)
-  control_1865:
+    $P1874 = $P1873."ast"()
+    $P1875 = $P1871."!make"($P1874)
+.annotate "line", 683
+    .return ($P1875)
+  control_1868:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1873, exception, "payload"
-    .return ($P1873)
+    getattribute $P1876, exception, "payload"
+    .return ($P1876)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "value"  :subid("104_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1877
-.annotate "line", 684
-    new $P1876, 'ExceptionHandler'
-    set_addr $P1876, control_1875
-    $P1876."handle_types"(58)
-    push_eh $P1876
-    .lex "self", self
-    .lex "$/", param_1877
-.annotate "line", 685
-    find_lex $P1878, "$/"
+.sub "value"  :subid("104_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1880
+.annotate "line", 687
+    new $P1879, 'ExceptionHandler'
+    set_addr $P1879, control_1878
+    $P1879."handle_types"(58)
+    push_eh $P1879
+    .lex "self", self
+    .lex "$/", param_1880
+.annotate "line", 688
     find_lex $P1881, "$/"
-    unless_null $P1881, vivify_549
-    new $P1881, "Hash"
+    find_lex $P1884, "$/"
+    unless_null $P1884, vivify_549
+    $P1884 = root_new ['parrot';'Hash']
   vivify_549:
-    set $P1882, $P1881["quote"]
-    unless_null $P1882, vivify_550
-    new $P1882, "Undef"
+    set $P1885, $P1884["quote"]
+    unless_null $P1885, vivify_550
+    new $P1885, "Undef"
   vivify_550:
-    if $P1882, if_1880
-    find_lex $P1886, "$/"
-    unless_null $P1886, vivify_551
-    new $P1886, "Hash"
+    if $P1885, if_1883
+    find_lex $P1889, "$/"
+    unless_null $P1889, vivify_551
+    $P1889 = root_new ['parrot';'Hash']
   vivify_551:
-    set $P1887, $P1886["number"]
-    unless_null $P1887, vivify_552
-    new $P1887, "Undef"
+    set $P1890, $P1889["number"]
+    unless_null $P1890, vivify_552
+    new $P1890, "Undef"
   vivify_552:
-    $P1888 = $P1887."ast"()
-    set $P1879, $P1888
-    goto if_1880_end
-  if_1880:
-    find_lex $P1883, "$/"
-    unless_null $P1883, vivify_553
-    new $P1883, "Hash"
+    $P1891 = $P1890."ast"()
+    set $P1882, $P1891
+    goto if_1883_end
+  if_1883:
+    find_lex $P1886, "$/"
+    unless_null $P1886, vivify_553
+    $P1886 = root_new ['parrot';'Hash']
   vivify_553:
-    set $P1884, $P1883["quote"]
-    unless_null $P1884, vivify_554
-    new $P1884, "Undef"
+    set $P1887, $P1886["quote"]
+    unless_null $P1887, vivify_554
+    new $P1887, "Undef"
   vivify_554:
-    $P1885 = $P1884."ast"()
-    set $P1879, $P1885
-  if_1880_end:
-    $P1889 = $P1878."!make"($P1879)
-.annotate "line", 684
-    .return ($P1889)
-  control_1875:
+    $P1888 = $P1887."ast"()
+    set $P1882, $P1888
+  if_1883_end:
+    $P1892 = $P1881."!make"($P1882)
+.annotate "line", 687
+    .return ($P1892)
+  control_1878:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1890, exception, "payload"
-    .return ($P1890)
+    getattribute $P1893, exception, "payload"
+    .return ($P1893)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "number"  :subid("105_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1894
-.annotate "line", 688
-    new $P1893, 'ExceptionHandler'
-    set_addr $P1893, control_1892
-    $P1893."handle_types"(58)
-    push_eh $P1893
-    .lex "self", self
-    .lex "$/", param_1894
-.annotate "line", 689
-    new $P1895, "Undef"
-    .lex "$value", $P1895
-    find_lex $P1898, "$/"
-    unless_null $P1898, vivify_555
-    new $P1898, "Hash"
+.sub "number"  :subid("105_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1897
+.annotate "line", 691
+    new $P1896, 'ExceptionHandler'
+    set_addr $P1896, control_1895
+    $P1896."handle_types"(58)
+    push_eh $P1896
+    .lex "self", self
+    .lex "$/", param_1897
+.annotate "line", 692
+    new $P1898, "Undef"
+    .lex "$value", $P1898
+    find_lex $P1901, "$/"
+    unless_null $P1901, vivify_555
+    $P1901 = root_new ['parrot';'Hash']
   vivify_555:
-    set $P1899, $P1898["dec_number"]
-    unless_null $P1899, vivify_556
-    new $P1899, "Undef"
+    set $P1902, $P1901["dec_number"]
+    unless_null $P1902, vivify_556
+    new $P1902, "Undef"
   vivify_556:
-    if $P1899, if_1897
-    find_lex $P1903, "$/"
-    unless_null $P1903, vivify_557
-    new $P1903, "Hash"
+    if $P1902, if_1900
+    find_lex $P1906, "$/"
+    unless_null $P1906, vivify_557
+    $P1906 = root_new ['parrot';'Hash']
   vivify_557:
-    set $P1904, $P1903["integer"]
-    unless_null $P1904, vivify_558
-    new $P1904, "Undef"
+    set $P1907, $P1906["integer"]
+    unless_null $P1907, vivify_558
+    new $P1907, "Undef"
   vivify_558:
-    $P1905 = $P1904."ast"()
-    set $P1896, $P1905
-    goto if_1897_end
-  if_1897:
-    find_lex $P1900, "$/"
-    unless_null $P1900, vivify_559
-    new $P1900, "Hash"
+    $P1908 = $P1907."ast"()
+    set $P1899, $P1908
+    goto if_1900_end
+  if_1900:
+    find_lex $P1903, "$/"
+    unless_null $P1903, vivify_559
+    $P1903 = root_new ['parrot';'Hash']
   vivify_559:
-    set $P1901, $P1900["dec_number"]
-    unless_null $P1901, vivify_560
-    new $P1901, "Undef"
+    set $P1904, $P1903["dec_number"]
+    unless_null $P1904, vivify_560
+    new $P1904, "Undef"
   vivify_560:
-    $P1902 = $P1901."ast"()
-    set $P1896, $P1902
-  if_1897_end:
-    store_lex "$value", $P1896
-.annotate "line", 690
-    find_lex $P1907, "$/"
-    unless_null $P1907, vivify_561
-    new $P1907, "Hash"
+    $P1905 = $P1904."ast"()
+    set $P1899, $P1905
+  if_1900_end:
+    store_lex "$value", $P1899
+.annotate "line", 693
+    find_lex $P1910, "$/"
+    unless_null $P1910, vivify_561
+    $P1910 = root_new ['parrot';'Hash']
   vivify_561:
-    set $P1908, $P1907["sign"]
-    unless_null $P1908, vivify_562
-    new $P1908, "Undef"
+    set $P1911, $P1910["sign"]
+    unless_null $P1911, vivify_562
+    new $P1911, "Undef"
   vivify_562:
-    set $S1909, $P1908
-    iseq $I1910, $S1909, "-"
-    unless $I1910, if_1906_end
-    find_lex $P1911, "$value"
-    neg $P1912, $P1911
-    store_lex "$value", $P1912
-  if_1906_end:
+    set $S1912, $P1911
+    iseq $I1913, $S1912, "-"
+    unless $I1913, if_1909_end
+    find_lex $P1914, "$value"
+    neg $P1915, $P1914
+    store_lex "$value", $P1915
+  if_1909_end:
+.annotate "line", 694
+    find_lex $P1916, "$/"
+    get_hll_global $P1917, ["PAST"], "Val"
+    find_lex $P1918, "$value"
+    $P1919 = $P1917."new"($P1918 :named("value"))
+    $P1920 = $P1916."!make"($P1919)
 .annotate "line", 691
-    find_lex $P1913, "$/"
-    get_hll_global $P1914, ["PAST"], "Val"
-    find_lex $P1915, "$value"
-    $P1916 = $P1914."new"($P1915 :named("value"))
-    $P1917 = $P1913."!make"($P1916)
-.annotate "line", 688
-    .return ($P1917)
-  control_1892:
+    .return ($P1920)
+  control_1895:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1918, exception, "payload"
-    .return ($P1918)
+    getattribute $P1921, exception, "payload"
+    .return ($P1921)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<apos>"  :subid("106_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1922
-.annotate "line", 694
-    new $P1921, 'ExceptionHandler'
-    set_addr $P1921, control_1920
-    $P1921."handle_types"(58)
-    push_eh $P1921
-    .lex "self", self
-    .lex "$/", param_1922
-    find_lex $P1923, "$/"
-    find_lex $P1924, "$/"
-    unless_null $P1924, vivify_563
-    new $P1924, "Hash"
+.sub "quote:sym<apos>"  :subid("106_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1925
+.annotate "line", 697
+    new $P1924, 'ExceptionHandler'
+    set_addr $P1924, control_1923
+    $P1924."handle_types"(58)
+    push_eh $P1924
+    .lex "self", self
+    .lex "$/", param_1925
+    find_lex $P1926, "$/"
+    find_lex $P1927, "$/"
+    unless_null $P1927, vivify_563
+    $P1927 = root_new ['parrot';'Hash']
   vivify_563:
-    set $P1925, $P1924["quote_EXPR"]
-    unless_null $P1925, vivify_564
-    new $P1925, "Undef"
+    set $P1928, $P1927["quote_EXPR"]
+    unless_null $P1928, vivify_564
+    new $P1928, "Undef"
   vivify_564:
-    $P1926 = $P1925."ast"()
-    $P1927 = $P1923."!make"($P1926)
-    .return ($P1927)
-  control_1920:
+    $P1929 = $P1928."ast"()
+    $P1930 = $P1926."!make"($P1929)
+    .return ($P1930)
+  control_1923:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1928, exception, "payload"
-    .return ($P1928)
+    getattribute $P1931, exception, "payload"
+    .return ($P1931)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<dblq>"  :subid("107_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1932
-.annotate "line", 695
-    new $P1931, 'ExceptionHandler'
-    set_addr $P1931, control_1930
-    $P1931."handle_types"(58)
-    push_eh $P1931
-    .lex "self", self
-    .lex "$/", param_1932
-    find_lex $P1933, "$/"
-    find_lex $P1934, "$/"
-    unless_null $P1934, vivify_565
-    new $P1934, "Hash"
+.sub "quote:sym<dblq>"  :subid("107_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1935
+.annotate "line", 698
+    new $P1934, 'ExceptionHandler'
+    set_addr $P1934, control_1933
+    $P1934."handle_types"(58)
+    push_eh $P1934
+    .lex "self", self
+    .lex "$/", param_1935
+    find_lex $P1936, "$/"
+    find_lex $P1937, "$/"
+    unless_null $P1937, vivify_565
+    $P1937 = root_new ['parrot';'Hash']
   vivify_565:
-    set $P1935, $P1934["quote_EXPR"]
-    unless_null $P1935, vivify_566
-    new $P1935, "Undef"
+    set $P1938, $P1937["quote_EXPR"]
+    unless_null $P1938, vivify_566
+    new $P1938, "Undef"
   vivify_566:
-    $P1936 = $P1935."ast"()
-    $P1937 = $P1933."!make"($P1936)
-    .return ($P1937)
-  control_1930:
+    $P1939 = $P1938."ast"()
+    $P1940 = $P1936."!make"($P1939)
+    .return ($P1940)
+  control_1933:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1938, exception, "payload"
-    .return ($P1938)
+    getattribute $P1941, exception, "payload"
+    .return ($P1941)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<qq>"  :subid("108_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1942
-.annotate "line", 696
-    new $P1941, 'ExceptionHandler'
-    set_addr $P1941, control_1940
-    $P1941."handle_types"(58)
-    push_eh $P1941
-    .lex "self", self
-    .lex "$/", param_1942
-    find_lex $P1943, "$/"
-    find_lex $P1944, "$/"
-    unless_null $P1944, vivify_567
-    new $P1944, "Hash"
+.sub "quote:sym<qq>"  :subid("108_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1945
+.annotate "line", 699
+    new $P1944, 'ExceptionHandler'
+    set_addr $P1944, control_1943
+    $P1944."handle_types"(58)
+    push_eh $P1944
+    .lex "self", self
+    .lex "$/", param_1945
+    find_lex $P1946, "$/"
+    find_lex $P1947, "$/"
+    unless_null $P1947, vivify_567
+    $P1947 = root_new ['parrot';'Hash']
   vivify_567:
-    set $P1945, $P1944["quote_EXPR"]
-    unless_null $P1945, vivify_568
-    new $P1945, "Undef"
+    set $P1948, $P1947["quote_EXPR"]
+    unless_null $P1948, vivify_568
+    new $P1948, "Undef"
   vivify_568:
-    $P1946 = $P1945."ast"()
-    $P1947 = $P1943."!make"($P1946)
-    .return ($P1947)
-  control_1940:
+    $P1949 = $P1948."ast"()
+    $P1950 = $P1946."!make"($P1949)
+    .return ($P1950)
+  control_1943:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1948, exception, "payload"
-    .return ($P1948)
+    getattribute $P1951, exception, "payload"
+    .return ($P1951)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<q>"  :subid("109_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1952
-.annotate "line", 697
-    new $P1951, 'ExceptionHandler'
-    set_addr $P1951, control_1950
-    $P1951."handle_types"(58)
-    push_eh $P1951
-    .lex "self", self
-    .lex "$/", param_1952
-    find_lex $P1953, "$/"
-    find_lex $P1954, "$/"
-    unless_null $P1954, vivify_569
-    new $P1954, "Hash"
+.sub "quote:sym<q>"  :subid("109_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1955
+.annotate "line", 700
+    new $P1954, 'ExceptionHandler'
+    set_addr $P1954, control_1953
+    $P1954."handle_types"(58)
+    push_eh $P1954
+    .lex "self", self
+    .lex "$/", param_1955
+    find_lex $P1956, "$/"
+    find_lex $P1957, "$/"
+    unless_null $P1957, vivify_569
+    $P1957 = root_new ['parrot';'Hash']
   vivify_569:
-    set $P1955, $P1954["quote_EXPR"]
-    unless_null $P1955, vivify_570
-    new $P1955, "Undef"
+    set $P1958, $P1957["quote_EXPR"]
+    unless_null $P1958, vivify_570
+    new $P1958, "Undef"
   vivify_570:
-    $P1956 = $P1955."ast"()
-    $P1957 = $P1953."!make"($P1956)
-    .return ($P1957)
-  control_1950:
+    $P1959 = $P1958."ast"()
+    $P1960 = $P1956."!make"($P1959)
+    .return ($P1960)
+  control_1953:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1958, exception, "payload"
-    .return ($P1958)
+    getattribute $P1961, exception, "payload"
+    .return ($P1961)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q>"  :subid("110_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1962
-.annotate "line", 698
-    new $P1961, 'ExceptionHandler'
-    set_addr $P1961, control_1960
-    $P1961."handle_types"(58)
-    push_eh $P1961
-    .lex "self", self
-    .lex "$/", param_1962
-    find_lex $P1963, "$/"
-    find_lex $P1964, "$/"
-    unless_null $P1964, vivify_571
-    new $P1964, "Hash"
+.sub "quote:sym<Q>"  :subid("110_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1965
+.annotate "line", 701
+    new $P1964, 'ExceptionHandler'
+    set_addr $P1964, control_1963
+    $P1964."handle_types"(58)
+    push_eh $P1964
+    .lex "self", self
+    .lex "$/", param_1965
+    find_lex $P1966, "$/"
+    find_lex $P1967, "$/"
+    unless_null $P1967, vivify_571
+    $P1967 = root_new ['parrot';'Hash']
   vivify_571:
-    set $P1965, $P1964["quote_EXPR"]
-    unless_null $P1965, vivify_572
-    new $P1965, "Undef"
+    set $P1968, $P1967["quote_EXPR"]
+    unless_null $P1968, vivify_572
+    new $P1968, "Undef"
   vivify_572:
-    $P1966 = $P1965."ast"()
-    $P1967 = $P1963."!make"($P1966)
-    .return ($P1967)
-  control_1960:
+    $P1969 = $P1968."ast"()
+    $P1970 = $P1966."!make"($P1969)
+    .return ($P1970)
+  control_1963:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1968, exception, "payload"
-    .return ($P1968)
+    getattribute $P1971, exception, "payload"
+    .return ($P1971)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q:PIR>"  :subid("111_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1972
-.annotate "line", 699
-    new $P1971, 'ExceptionHandler'
-    set_addr $P1971, control_1970
-    $P1971."handle_types"(58)
-    push_eh $P1971
+.sub "quote:sym<Q:PIR>"  :subid("111_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1975
+.annotate "line", 702
+    new $P1974, 'ExceptionHandler'
+    set_addr $P1974, control_1973
+    $P1974."handle_types"(58)
+    push_eh $P1974
     .lex "self", self
-    .lex "$/", param_1972
-.annotate "line", 700
-    find_lex $P1973, "$/"
-    get_hll_global $P1974, ["PAST"], "Op"
-    find_lex $P1975, "$/"
-    unless_null $P1975, vivify_573
-    new $P1975, "Hash"
+    .lex "$/", param_1975
+.annotate "line", 703
+    find_lex $P1976, "$/"
+    get_hll_global $P1977, ["PAST"], "Op"
+    find_lex $P1978, "$/"
+    unless_null $P1978, vivify_573
+    $P1978 = root_new ['parrot';'Hash']
   vivify_573:
-    set $P1976, $P1975["quote_EXPR"]
-    unless_null $P1976, vivify_574
-    new $P1976, "Undef"
+    set $P1979, $P1978["quote_EXPR"]
+    unless_null $P1979, vivify_574
+    new $P1979, "Undef"
   vivify_574:
-    $P1977 = $P1976."ast"()
-    $P1978 = $P1977."value"()
-    find_lex $P1979, "$/"
-    $P1980 = $P1974."new"($P1978 :named("inline"), "inline" :named("pasttype"), $P1979 :named("node"))
-    $P1981 = $P1973."!make"($P1980)
-.annotate "line", 699
-    .return ($P1981)
-  control_1970:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P1982, exception, "payload"
-    .return ($P1982)
+    $P1980 = $P1979."ast"()
+    $P1981 = $P1980."value"()
+    find_lex $P1982, "$/"
+    $P1983 = $P1977."new"($P1981 :named("inline"), "inline" :named("pasttype"), $P1982 :named("node"))
+    $P1984 = $P1976."!make"($P1983)
+.annotate "line", 702
+    .return ($P1984)
+  control_1973:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1985, exception, "payload"
+    .return ($P1985)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym</ />"  :subid("112_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_1986
-    .param pmc param_1987 :optional
-    .param int has_param_1987 :opt_flag
-.annotate "line", 705
-    new $P1985, 'ExceptionHandler'
-    set_addr $P1985, control_1984
-    $P1985."handle_types"(58)
-    push_eh $P1985
-    .lex "self", self
-    .lex "$/", param_1986
-    if has_param_1987, optparam_575
-    new $P1988, "Undef"
-    set param_1987, $P1988
+.sub "quote:sym</ />"  :subid("112_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_1989
+    .param pmc param_1990 :optional
+    .param int has_param_1990 :opt_flag
+.annotate "line", 708
+    new $P1988, 'ExceptionHandler'
+    set_addr $P1988, control_1987
+    $P1988."handle_types"(58)
+    push_eh $P1988
+    .lex "self", self
+    .lex "$/", param_1989
+    if has_param_1990, optparam_575
+    new $P1991, "Undef"
+    set param_1990, $P1991
   optparam_575:
-    .lex "$key", param_1987
-.annotate "line", 715
-    new $P1989, "Undef"
-    .lex "$regex", $P1989
-.annotate "line", 717
-    new $P1990, "Undef"
-    .lex "$past", $P1990
-.annotate "line", 706
-    find_lex $P1992, "$key"
-    set $S1993, $P1992
-    iseq $I1994, $S1993, "open"
-    unless $I1994, if_1991_end
-.annotate "line", 707
+    .lex "$key", param_1990
+.annotate "line", 718
+    new $P1992, "Undef"
+    .lex "$regex", $P1992
+.annotate "line", 720
+    new $P1993, "Undef"
+    .lex "$past", $P1993
+.annotate "line", 709
+    find_lex $P1995, "$key"
+    set $S1996, $P1995
+    iseq $I1997, $S1996, "open"
+    unless $I1997, if_1994_end
+.annotate "line", 710
 
             null $P0
             set_hll_global ['Regex';'P6Regex';'Actions'], '$REGEXNAME', $P0
         
-.annotate "line", 711
-    get_global $P1995, "@BLOCK"
-    unless_null $P1995, vivify_576
-    new $P1995, "ResizablePMCArray"
+.annotate "line", 714
+    get_global $P1998, "@BLOCK"
+    unless_null $P1998, vivify_576
+    $P1998 = root_new ['parrot';'ResizablePMCArray']
   vivify_576:
-    set $P1996, $P1995[0]
-    unless_null $P1996, vivify_577
-    new $P1996, "Undef"
+    set $P1999, $P1998[0]
+    unless_null $P1999, vivify_577
+    new $P1999, "Undef"
   vivify_577:
-    $P1996."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
-.annotate "line", 712
-    get_global $P1997, "@BLOCK"
-    unless_null $P1997, vivify_578
-    new $P1997, "ResizablePMCArray"
+    $P1999."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
+.annotate "line", 715
+    get_global $P2000, "@BLOCK"
+    unless_null $P2000, vivify_578
+    $P2000 = root_new ['parrot';'ResizablePMCArray']
   vivify_578:
-    set $P1998, $P1997[0]
-    unless_null $P1998, vivify_579
-    new $P1998, "Undef"
+    set $P2001, $P2000[0]
+    unless_null $P2001, vivify_579
+    new $P2001, "Undef"
   vivify_579:
-    $P1998."symbol"("$/", "lexical" :named("scope"))
-.annotate "line", 713
-    new $P1999, "Exception"
-    set $P1999['type'], 58
-    new $P2000, "Integer"
-    assign $P2000, 0
-    setattribute $P1999, 'payload', $P2000
-    throw $P1999
-  if_1991_end:
+    $P2001."symbol"("$/", "lexical" :named("scope"))
 .annotate "line", 716
-    get_hll_global $P2001, ["Regex";"P6Regex";"Actions"], "buildsub"
-    find_lex $P2002, "$/"
-    unless_null $P2002, vivify_580
-    new $P2002, "Hash"
+    new $P2002, "Exception"
+    set $P2002['type'], 58
+    new $P2003, "Integer"
+    assign $P2003, 0
+    setattribute $P2002, 'payload', $P2003
+    throw $P2002
+  if_1994_end:
+.annotate "line", 719
+    get_hll_global $P2004, ["Regex";"P6Regex";"Actions"], "buildsub"
+    find_lex $P2005, "$/"
+    unless_null $P2005, vivify_580
+    $P2005 = root_new ['parrot';'Hash']
   vivify_580:
-    set $P2003, $P2002["p6regex"]
-    unless_null $P2003, vivify_581
-    new $P2003, "Undef"
+    set $P2006, $P2005["p6regex"]
+    unless_null $P2006, vivify_581
+    new $P2006, "Undef"
   vivify_581:
-    $P2004 = $P2003."ast"()
-    get_global $P2005, "@BLOCK"
-    $P2006 = $P2005."shift"()
-    $P2007 = $P2001($P2004, $P2006)
-    store_lex "$regex", $P2007
-.annotate "line", 718
-    get_hll_global $P2008, ["PAST"], "Op"
-.annotate "line", 720
-    get_hll_global $P2009, ["PAST"], "Var"
-    new $P2010, "ResizablePMCArray"
-    push $P2010, "Regex"
-    $P2011 = $P2009."new"("Regex" :named("name"), $P2010 :named("namespace"), "package" :named("scope"))
-    find_lex $P2012, "$regex"
-    $P2013 = $P2008."new"($P2011, $P2012, "callmethod" :named("pasttype"), "new" :named("name"))
-.annotate "line", 718
-    store_lex "$past", $P2013
-.annotate "line", 724
-    find_lex $P2014, "$regex"
-    find_lex $P2015, "$past"
-    unless_null $P2015, vivify_582
-    new $P2015, "Hash"
-    store_lex "$past", $P2015
+    $P2007 = $P2006."ast"()
+    get_global $P2008, "@BLOCK"
+    $P2009 = $P2008."shift"()
+    $P2010 = $P2004($P2007, $P2009)
+    store_lex "$regex", $P2010
+.annotate "line", 721
+    get_hll_global $P2011, ["PAST"], "Op"
+.annotate "line", 723
+    get_hll_global $P2012, ["PAST"], "Var"
+    new $P2013, "ResizablePMCArray"
+    push $P2013, "Regex"
+    $P2014 = $P2012."new"("Regex" :named("name"), $P2013 :named("namespace"), "package" :named("scope"))
+    find_lex $P2015, "$regex"
+    $P2016 = $P2011."new"($P2014, $P2015, "callmethod" :named("pasttype"), "new" :named("name"))
+.annotate "line", 721
+    store_lex "$past", $P2016
+.annotate "line", 727
+    find_lex $P2017, "$regex"
+    find_lex $P2018, "$past"
+    unless_null $P2018, vivify_582
+    $P2018 = root_new ['parrot';'Hash']
+    store_lex "$past", $P2018
   vivify_582:
-    set $P2015["sink"], $P2014
-.annotate "line", 725
-    find_lex $P2016, "$/"
-    find_lex $P2017, "$past"
-    $P2018 = $P2016."!make"($P2017)
-.annotate "line", 705
-    .return ($P2018)
-  control_1984:
+    set $P2018["sink"], $P2017
+.annotate "line", 728
+    find_lex $P2019, "$/"
+    find_lex $P2020, "$past"
+    $P2021 = $P2019."!make"($P2020)
+.annotate "line", 708
+    .return ($P2021)
+  control_1987:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2019, exception, "payload"
-    .return ($P2019)
+    getattribute $P2022, exception, "payload"
+    .return ($P2022)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<$>"  :subid("113_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_2023
-.annotate "line", 728
-    new $P2022, 'ExceptionHandler'
-    set_addr $P2022, control_2021
-    $P2022."handle_types"(58)
-    push_eh $P2022
-    .lex "self", self
-    .lex "$/", param_2023
-    find_lex $P2024, "$/"
-    find_lex $P2025, "$/"
-    unless_null $P2025, vivify_583
-    new $P2025, "Hash"
+.sub "quote_escape:sym<$>"  :subid("113_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_2026
+.annotate "line", 731
+    new $P2025, 'ExceptionHandler'
+    set_addr $P2025, control_2024
+    $P2025."handle_types"(58)
+    push_eh $P2025
+    .lex "self", self
+    .lex "$/", param_2026
+    find_lex $P2027, "$/"
+    find_lex $P2028, "$/"
+    unless_null $P2028, vivify_583
+    $P2028 = root_new ['parrot';'Hash']
   vivify_583:
-    set $P2026, $P2025["variable"]
-    unless_null $P2026, vivify_584
-    new $P2026, "Undef"
+    set $P2029, $P2028["variable"]
+    unless_null $P2029, vivify_584
+    new $P2029, "Undef"
   vivify_584:
-    $P2027 = $P2026."ast"()
-    $P2028 = $P2024."!make"($P2027)
-    .return ($P2028)
-  control_2021:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P2029, exception, "payload"
-    .return ($P2029)
+    $P2030 = $P2029."ast"()
+    $P2031 = $P2027."!make"($P2030)
+    .return ($P2031)
+  control_2024:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P2032, exception, "payload"
+    .return ($P2032)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<{ }>"  :subid("114_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_2033
-.annotate "line", 729
-    new $P2032, 'ExceptionHandler'
-    set_addr $P2032, control_2031
-    $P2032."handle_types"(58)
-    push_eh $P2032
-    .lex "self", self
-    .lex "$/", param_2033
-.annotate "line", 730
-    find_lex $P2034, "$/"
-    get_hll_global $P2035, ["PAST"], "Op"
-.annotate "line", 731
-    find_lex $P2036, "$/"
-    unless_null $P2036, vivify_585
-    new $P2036, "Hash"
+.sub "quote_escape:sym<{ }>"  :subid("114_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_2036
+.annotate "line", 732
+    new $P2035, 'ExceptionHandler'
+    set_addr $P2035, control_2034
+    $P2035."handle_types"(58)
+    push_eh $P2035
+    .lex "self", self
+    .lex "$/", param_2036
+.annotate "line", 733
+    find_lex $P2037, "$/"
+    get_hll_global $P2038, ["PAST"], "Op"
+.annotate "line", 734
+    find_lex $P2039, "$/"
+    unless_null $P2039, vivify_585
+    $P2039 = root_new ['parrot';'Hash']
   vivify_585:
-    set $P2037, $P2036["block"]
-    unless_null $P2037, vivify_586
-    new $P2037, "Undef"
+    set $P2040, $P2039["block"]
+    unless_null $P2040, vivify_586
+    new $P2040, "Undef"
   vivify_586:
-    $P2038 = $P2037."ast"()
-    $P2039 = "block_immediate"($P2038)
-    find_lex $P2040, "$/"
-    $P2041 = $P2035."new"($P2039, "set S*" :named("pirop"), $P2040 :named("node"))
-.annotate "line", 730
-    $P2042 = $P2034."!make"($P2041)
-.annotate "line", 729
-    .return ($P2042)
-  control_2031:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P2043, exception, "payload"
-    .return ($P2043)
-.end
-
-
-.namespace ["NQP";"Actions"]
-.sub "postfix:sym<.>"  :subid("115_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_2047
-.annotate "line", 737
-    new $P2046, 'ExceptionHandler'
-    set_addr $P2046, control_2045
-    $P2046."handle_types"(58)
-    push_eh $P2046
-    .lex "self", self
-    .lex "$/", param_2047
-    find_lex $P2048, "$/"
-    find_lex $P2049, "$/"
-    unless_null $P2049, vivify_587
-    new $P2049, "Hash"
-  vivify_587:
-    set $P2050, $P2049["dotty"]
-    unless_null $P2050, vivify_588
-    new $P2050, "Undef"
-  vivify_588:
-    $P2051 = $P2050."ast"()
-    $P2052 = $P2048."!make"($P2051)
-    .return ($P2052)
-  control_2045:
+    $P2041 = $P2040."ast"()
+    $P2042 = "block_immediate"($P2041)
+    find_lex $P2043, "$/"
+    $P2044 = $P2038."new"($P2042, "set S*" :named("pirop"), $P2043 :named("node"))
+.annotate "line", 733
+    $P2045 = $P2037."!make"($P2044)
+.annotate "line", 732
+    .return ($P2045)
+  control_2034:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2053, exception, "payload"
-    .return ($P2053)
+    getattribute $P2046, exception, "payload"
+    .return ($P2046)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<++>"  :subid("116_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_2057
-.annotate "line", 739
-    new $P2056, 'ExceptionHandler'
-    set_addr $P2056, control_2055
-    $P2056."handle_types"(58)
-    push_eh $P2056
-    .lex "self", self
-    .lex "$/", param_2057
+.sub "postfix:sym<.>"  :subid("115_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_2050
 .annotate "line", 740
-    find_lex $P2058, "$/"
-    get_hll_global $P2059, ["PAST"], "Op"
-.annotate "line", 741
-    new $P2060, "ResizablePMCArray"
-    push $P2060, "    clone %r, %0"
-    push $P2060, "    inc %0"
-    $P2061 = $P2059."new"("postfix:<++>" :named("name"), $P2060 :named("inline"), "inline" :named("pasttype"))
-.annotate "line", 740
-    $P2062 = $P2058."!make"($P2061)
-.annotate "line", 739
-    .return ($P2062)
-  control_2055:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P2063, exception, "payload"
-    .return ($P2063)
-.end
-
-
-.namespace ["NQP";"Actions"]
-.sub "postfix:sym<-->"  :subid("117_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_2067
-.annotate "line", 745
-    new $P2066, 'ExceptionHandler'
-    set_addr $P2066, control_2065
-    $P2066."handle_types"(58)
-    push_eh $P2066
-    .lex "self", self
-    .lex "$/", param_2067
-.annotate "line", 746
-    find_lex $P2068, "$/"
-    get_hll_global $P2069, ["PAST"], "Op"
-.annotate "line", 747
-    new $P2070, "ResizablePMCArray"
-    push $P2070, "    clone %r, %0"
-    push $P2070, "    dec %0"
-    $P2071 = $P2069."new"("postfix:<-->" :named("name"), $P2070 :named("inline"), "inline" :named("pasttype"))
-.annotate "line", 746
-    $P2072 = $P2068."!make"($P2071)
-.annotate "line", 745
-    .return ($P2072)
-  control_2065:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P2073, exception, "payload"
-    .return ($P2073)
-.end
-
-
-.namespace ["NQP";"Actions"]
-.sub "prefix:sym<make>"  :subid("118_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_2077
-.annotate "line", 751
-    new $P2076, 'ExceptionHandler'
-    set_addr $P2076, control_2075
-    $P2076."handle_types"(58)
-    push_eh $P2076
-    .lex "self", self
-    .lex "$/", param_2077
-.annotate "line", 752
-    find_lex $P2078, "$/"
-    get_hll_global $P2079, ["PAST"], "Op"
-.annotate "line", 753
-    get_hll_global $P2080, ["PAST"], "Var"
-    $P2081 = $P2080."new"("$/" :named("name"), "contextual" :named("scope"))
-    find_lex $P2082, "$/"
-    $P2083 = $P2079."new"($P2081, "callmethod" :named("pasttype"), "!make" :named("name"), $P2082 :named("node"))
-.annotate "line", 752
-    $P2084 = $P2078."!make"($P2083)
-.annotate "line", 751
-    .return ($P2084)
-  control_2075:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P2085, exception, "payload"
-    .return ($P2085)
-.end
-
-
-.namespace ["NQP";"Actions"]
-.sub "infix:sym<~~>"  :subid("119_1261064035.64813") :method :outer("11_1261064035.64813")
-    .param pmc param_2089
-.annotate "line", 760
-    new $P2088, 'ExceptionHandler'
-    set_addr $P2088, control_2087
-    $P2088."handle_types"(58)
-    push_eh $P2088
-    .lex "self", self
-    .lex "$/", param_2089
-.annotate "line", 761
-    find_lex $P2090, "$/"
-    get_hll_global $P2091, ["PAST"], "Op"
-    find_lex $P2092, "$/"
-    $P2093 = $P2091."new"("callmethod" :named("pasttype"), "ACCEPTS" :named("name"), $P2092 :named("node"))
-    $P2094 = $P2090."!make"($P2093)
-.annotate "line", 760
-    .return ($P2094)
-  control_2087:
+    new $P2049, 'ExceptionHandler'
+    set_addr $P2049, control_2048
+    $P2049."handle_types"(58)
+    push_eh $P2049
+    .lex "self", self
+    .lex "$/", param_2050
+    find_lex $P2051, "$/"
+    find_lex $P2052, "$/"
+    unless_null $P2052, vivify_587
+    $P2052 = root_new ['parrot';'Hash']
+  vivify_587:
+    set $P2053, $P2052["dotty"]
+    unless_null $P2053, vivify_588
+    new $P2053, "Undef"
+  vivify_588:
+    $P2054 = $P2053."ast"()
+    $P2055 = $P2051."!make"($P2054)
+    .return ($P2055)
+  control_2048:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P2056, exception, "payload"
+    .return ($P2056)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "postfix:sym<++>"  :subid("116_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_2060
+.annotate "line", 742
+    new $P2059, 'ExceptionHandler'
+    set_addr $P2059, control_2058
+    $P2059."handle_types"(58)
+    push_eh $P2059
+    .lex "self", self
+    .lex "$/", param_2060
+.annotate "line", 743
+    find_lex $P2061, "$/"
+    get_hll_global $P2062, ["PAST"], "Op"
+.annotate "line", 744
+    new $P2063, "ResizablePMCArray"
+    push $P2063, "    clone %r, %0"
+    push $P2063, "    inc %0"
+    $P2064 = $P2062."new"("postfix:<++>" :named("name"), $P2063 :named("inline"), "inline" :named("pasttype"))
+.annotate "line", 743
+    $P2065 = $P2061."!make"($P2064)
+.annotate "line", 742
+    .return ($P2065)
+  control_2058:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P2066, exception, "payload"
+    .return ($P2066)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "postfix:sym<-->"  :subid("117_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_2070
+.annotate "line", 748
+    new $P2069, 'ExceptionHandler'
+    set_addr $P2069, control_2068
+    $P2069."handle_types"(58)
+    push_eh $P2069
+    .lex "self", self
+    .lex "$/", param_2070
+.annotate "line", 749
+    find_lex $P2071, "$/"
+    get_hll_global $P2072, ["PAST"], "Op"
+.annotate "line", 750
+    new $P2073, "ResizablePMCArray"
+    push $P2073, "    clone %r, %0"
+    push $P2073, "    dec %0"
+    $P2074 = $P2072."new"("postfix:<-->" :named("name"), $P2073 :named("inline"), "inline" :named("pasttype"))
+.annotate "line", 749
+    $P2075 = $P2071."!make"($P2074)
+.annotate "line", 748
+    .return ($P2075)
+  control_2068:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P2076, exception, "payload"
+    .return ($P2076)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "prefix:sym<make>"  :subid("118_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_2080
+.annotate "line", 754
+    new $P2079, 'ExceptionHandler'
+    set_addr $P2079, control_2078
+    $P2079."handle_types"(58)
+    push_eh $P2079
+    .lex "self", self
+    .lex "$/", param_2080
+.annotate "line", 755
+    find_lex $P2081, "$/"
+    get_hll_global $P2082, ["PAST"], "Op"
+.annotate "line", 756
+    get_hll_global $P2083, ["PAST"], "Var"
+    $P2084 = $P2083."new"("$/" :named("name"), "contextual" :named("scope"))
+    find_lex $P2085, "$/"
+    $P2086 = $P2082."new"($P2084, "callmethod" :named("pasttype"), "!make" :named("name"), $P2085 :named("node"))
+.annotate "line", 755
+    $P2087 = $P2081."!make"($P2086)
+.annotate "line", 754
+    .return ($P2087)
+  control_2078:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P2088, exception, "payload"
+    .return ($P2088)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "infix:sym<~~>"  :subid("119_1267204714.47172") :method :outer("11_1267204714.47172")
+    .param pmc param_2092
+.annotate "line", 763
+    new $P2091, 'ExceptionHandler'
+    set_addr $P2091, control_2090
+    $P2091."handle_types"(58)
+    push_eh $P2091
+    .lex "self", self
+    .lex "$/", param_2092
+.annotate "line", 764
+    find_lex $P2093, "$/"
+    get_hll_global $P2094, ["PAST"], "Op"
+    find_lex $P2095, "$/"
+    $P2096 = $P2094."new"("callmethod" :named("pasttype"), "ACCEPTS" :named("name"), $P2095 :named("node"))
+    $P2097 = $P2093."!make"($P2096)
+.annotate "line", 763
+    .return ($P2097)
+  control_2090:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2095, exception, "payload"
-    .return ($P2095)
+    getattribute $P2098, exception, "payload"
+    .return ($P2098)
 .end
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "_block2096"  :subid("120_1261064035.64813") :outer("11_1261064035.64813")
-.annotate "line", 765
-    .const 'Sub' $P2132 = "124_1261064035.64813" 
-    capture_lex $P2132
-    .const 'Sub' $P2122 = "123_1261064035.64813" 
-    capture_lex $P2122
-    .const 'Sub' $P2112 = "122_1261064035.64813" 
-    capture_lex $P2112
-    .const 'Sub' $P2098 = "121_1261064035.64813" 
-    capture_lex $P2098
-.annotate "line", 776
-    .const 'Sub' $P2132 = "124_1261064035.64813" 
-    capture_lex $P2132
-.annotate "line", 765
-    .return ($P2132)
+.sub "_block2099"  :subid("120_1267204714.47172") :outer("11_1267204714.47172")
+.annotate "line", 768
+    .const 'Sub' $P2135 = "124_1267204714.47172" 
+    capture_lex $P2135
+    .const 'Sub' $P2125 = "123_1267204714.47172" 
+    capture_lex $P2125
+    .const 'Sub' $P2115 = "122_1267204714.47172" 
+    capture_lex $P2115
+    .const 'Sub' $P2101 = "121_1267204714.47172" 
+    capture_lex $P2101
+.annotate "line", 779
+    .const 'Sub' $P2135 = "124_1267204714.47172" 
+    capture_lex $P2135
+.annotate "line", 768
+    .return ($P2135)
 .end
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<:my>"  :subid("121_1261064035.64813") :method :outer("120_1261064035.64813")
-    .param pmc param_2101
-.annotate "line", 767
-    new $P2100, 'ExceptionHandler'
-    set_addr $P2100, control_2099
-    $P2100."handle_types"(58)
-    push_eh $P2100
-    .lex "self", self
-    .lex "$/", param_2101
-.annotate "line", 768
-    new $P2102, "Undef"
-    .lex "$past", $P2102
-    find_lex $P2103, "$/"
-    unless_null $P2103, vivify_589
-    new $P2103, "Hash"
+.sub "metachar:sym<:my>"  :subid("121_1267204714.47172") :method :outer("120_1267204714.47172")
+    .param pmc param_2104
+.annotate "line", 770
+    new $P2103, 'ExceptionHandler'
+    set_addr $P2103, control_2102
+    $P2103."handle_types"(58)
+    push_eh $P2103
+    .lex "self", self
+    .lex "$/", param_2104
+.annotate "line", 771
+    new $P2105, "Undef"
+    .lex "$past", $P2105
+    find_lex $P2106, "$/"
+    unless_null $P2106, vivify_589
+    $P2106 = root_new ['parrot';'Hash']
   vivify_589:
-    set $P2104, $P2103["statement"]
-    unless_null $P2104, vivify_590
-    new $P2104, "Undef"
+    set $P2107, $P2106["statement"]
+    unless_null $P2107, vivify_590
+    new $P2107, "Undef"
   vivify_590:
-    $P2105 = $P2104."ast"()
-    store_lex "$past", $P2105
-.annotate "line", 769
-    find_lex $P2106, "$/"
-    get_hll_global $P2107, ["PAST"], "Regex"
-    find_lex $P2108, "$past"
-    $P2109 = $P2107."new"($P2108, "pastnode" :named("pasttype"))
-    $P2110 = $P2106."!make"($P2109)
-.annotate "line", 767
-    .return ($P2110)
-  control_2099:
+    $P2108 = $P2107."ast"()
+    store_lex "$past", $P2108
+.annotate "line", 772
+    find_lex $P2109, "$/"
+    get_hll_global $P2110, ["PAST"], "Regex"
+    find_lex $P2111, "$past"
+    $P2112 = $P2110."new"($P2111, "pastnode" :named("pasttype"))
+    $P2113 = $P2109."!make"($P2112)
+.annotate "line", 770
+    .return ($P2113)
+  control_2102:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2111, exception, "payload"
-    .return ($P2111)
+    getattribute $P2114, exception, "payload"
+    .return ($P2114)
 .end
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<{ }>"  :subid("122_1261064035.64813") :method :outer("120_1261064035.64813")
-    .param pmc param_2115
-.annotate "line", 772
-    new $P2114, 'ExceptionHandler'
-    set_addr $P2114, control_2113
-    $P2114."handle_types"(58)
-    push_eh $P2114
-    .lex "self", self
-    .lex "$/", param_2115
-    find_lex $P2116, "$/"
-    find_lex $P2117, "$/"
-    unless_null $P2117, vivify_591
-    new $P2117, "Hash"
+.sub "metachar:sym<{ }>"  :subid("122_1267204714.47172") :method :outer("120_1267204714.47172")
+    .param pmc param_2118
+.annotate "line", 775
+    new $P2117, 'ExceptionHandler'
+    set_addr $P2117, control_2116
+    $P2117."handle_types"(58)
+    push_eh $P2117
+    .lex "self", self
+    .lex "$/", param_2118
+    find_lex $P2119, "$/"
+    find_lex $P2120, "$/"
+    unless_null $P2120, vivify_591
+    $P2120 = root_new ['parrot';'Hash']
   vivify_591:
-    set $P2118, $P2117["codeblock"]
-    unless_null $P2118, vivify_592
-    new $P2118, "Undef"
+    set $P2121, $P2120["codeblock"]
+    unless_null $P2121, vivify_592
+    new $P2121, "Undef"
   vivify_592:
-    $P2119 = $P2118."ast"()
-    $P2120 = $P2116."!make"($P2119)
-    .return ($P2120)
-  control_2113:
+    $P2122 = $P2121."ast"()
+    $P2123 = $P2119."!make"($P2122)
+    .return ($P2123)
+  control_2116:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2121, exception, "payload"
-    .return ($P2121)
+    getattribute $P2124, exception, "payload"
+    .return ($P2124)
 .end
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "assertion:sym<{ }>"  :subid("123_1261064035.64813") :method :outer("120_1261064035.64813")
-    .param pmc param_2125
-.annotate "line", 774
-    new $P2124, 'ExceptionHandler'
-    set_addr $P2124, control_2123
-    $P2124."handle_types"(58)
-    push_eh $P2124
-    .lex "self", self
-    .lex "$/", param_2125
-    find_lex $P2126, "$/"
-    find_lex $P2127, "$/"
-    unless_null $P2127, vivify_593
-    new $P2127, "Hash"
+.sub "assertion:sym<{ }>"  :subid("123_1267204714.47172") :method :outer("120_1267204714.47172")
+    .param pmc param_2128
+.annotate "line", 777
+    new $P2127, 'ExceptionHandler'
+    set_addr $P2127, control_2126
+    $P2127."handle_types"(58)
+    push_eh $P2127
+    .lex "self", self
+    .lex "$/", param_2128
+    find_lex $P2129, "$/"
+    find_lex $P2130, "$/"
+    unless_null $P2130, vivify_593
+    $P2130 = root_new ['parrot';'Hash']
   vivify_593:
-    set $P2128, $P2127["codeblock"]
-    unless_null $P2128, vivify_594
-    new $P2128, "Undef"
+    set $P2131, $P2130["codeblock"]
+    unless_null $P2131, vivify_594
+    new $P2131, "Undef"
   vivify_594:
-    $P2129 = $P2128."ast"()
-    $P2130 = $P2126."!make"($P2129)
-    .return ($P2130)
-  control_2123:
+    $P2132 = $P2131."ast"()
+    $P2133 = $P2129."!make"($P2132)
+    .return ($P2133)
+  control_2126:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2131, exception, "payload"
-    .return ($P2131)
+    getattribute $P2134, exception, "payload"
+    .return ($P2134)
 .end
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "codeblock"  :subid("124_1261064035.64813") :method :outer("120_1261064035.64813")
-    .param pmc param_2135
-.annotate "line", 776
-    new $P2134, 'ExceptionHandler'
-    set_addr $P2134, control_2133
-    $P2134."handle_types"(58)
-    push_eh $P2134
-    .lex "self", self
-    .lex "$/", param_2135
-.annotate "line", 777
-    new $P2136, "Undef"
-    .lex "$block", $P2136
+.sub "codeblock"  :subid("124_1267204714.47172") :method :outer("120_1267204714.47172")
+    .param pmc param_2138
 .annotate "line", 779
-    new $P2137, "Undef"
-    .lex "$past", $P2137
-.annotate "line", 777
-    find_lex $P2138, "$/"
-    unless_null $P2138, vivify_595
-    new $P2138, "Hash"
-  vivify_595:
-    set $P2139, $P2138["block"]
-    unless_null $P2139, vivify_596
+    new $P2137, 'ExceptionHandler'
+    set_addr $P2137, control_2136
+    $P2137."handle_types"(58)
+    push_eh $P2137
+    .lex "self", self
+    .lex "$/", param_2138
+.annotate "line", 780
     new $P2139, "Undef"
-  vivify_596:
-    $P2140 = $P2139."ast"()
-    store_lex "$block", $P2140
-.annotate "line", 778
-    find_lex $P2141, "$block"
-    $P2141."blocktype"("immediate")
+    .lex "$block", $P2139
+.annotate "line", 782
+    new $P2140, "Undef"
+    .lex "$past", $P2140
 .annotate "line", 780
-    get_hll_global $P2142, ["PAST"], "Regex"
+    find_lex $P2141, "$/"
+    unless_null $P2141, vivify_595
+    $P2141 = root_new ['parrot';'Hash']
+  vivify_595:
+    set $P2142, $P2141["block"]
+    unless_null $P2142, vivify_596
+    new $P2142, "Undef"
+  vivify_596:
+    $P2143 = $P2142."ast"()
+    store_lex "$block", $P2143
 .annotate "line", 781
-    get_hll_global $P2143, ["PAST"], "Stmts"
-.annotate "line", 782
-    get_hll_global $P2144, ["PAST"], "Op"
+    find_lex $P2144, "$block"
+    $P2144."blocktype"("immediate")
 .annotate "line", 783
-    get_hll_global $P2145, ["PAST"], "Var"
-    $P2146 = $P2145."new"("$/" :named("name"))
+    get_hll_global $P2145, ["PAST"], "Regex"
 .annotate "line", 784
-    get_hll_global $P2147, ["PAST"], "Op"
+    get_hll_global $P2146, ["PAST"], "Stmts"
 .annotate "line", 785
+    get_hll_global $P2147, ["PAST"], "Op"
+.annotate "line", 786
     get_hll_global $P2148, ["PAST"], "Var"
-    $P2149 = $P2148."new"(unicode:"$\x{a2}" :named("name"))
-    $P2150 = $P2147."new"($P2149, "MATCH" :named("name"), "callmethod" :named("pasttype"))
+    $P2149 = $P2148."new"("$/" :named("name"))
+.annotate "line", 787
+    get_hll_global $P2150, ["PAST"], "Op"
+.annotate "line", 788
+    get_hll_global $P2151, ["PAST"], "Var"
+    $P2152 = $P2151."new"(unicode:"$\x{a2}" :named("name"))
+    $P2153 = $P2150."new"($P2152, "MATCH" :named("name"), "callmethod" :named("pasttype"))
+.annotate "line", 787
+    $P2154 = $P2147."new"($P2149, $P2153, "bind" :named("pasttype"))
+.annotate "line", 785
+    find_lex $P2155, "$block"
+    $P2156 = $P2146."new"($P2154, $P2155)
 .annotate "line", 784
-    $P2151 = $P2144."new"($P2146, $P2150, "bind" :named("pasttype"))
-.annotate "line", 782
-    find_lex $P2152, "$block"
-    $P2153 = $P2143."new"($P2151, $P2152)
-.annotate "line", 781
-    $P2154 = $P2142."new"($P2153, "pastnode" :named("pasttype"))
-.annotate "line", 780
-    store_lex "$past", $P2154
-.annotate "line", 795
-    find_lex $P2155, "$/"
-    find_lex $P2156, "$past"
-    $P2157 = $P2155."!make"($P2156)
-.annotate "line", 776
-    .return ($P2157)
-  control_2133:
+    $P2157 = $P2145."new"($P2156, "pastnode" :named("pasttype"))
+.annotate "line", 783
+    store_lex "$past", $P2157
+.annotate "line", 798
+    find_lex $P2158, "$/"
+    find_lex $P2159, "$past"
+    $P2160 = $P2158."!make"($P2159)
+.annotate "line", 779
+    .return ($P2160)
+  control_2136:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P2158, exception, "payload"
-    .return ($P2158)
+    getattribute $P2161, exception, "payload"
+    .return ($P2161)
 .end
 
 ### .include 'src/cheats/nqp-builtins.pir'

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

Modified: branches/ops_pct/include/parrot/atomic/gcc_pcc.h
==============================================================================
--- branches/ops_pct/include/parrot/atomic/gcc_pcc.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/atomic/gcc_pcc.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /* atomic/gcc_pcc.h
- *  Copyright (C) 2006-2008, Parrot Foundation.
+ *  Copyright (C) 2006-2010, Parrot Foundation.
  *  SVN Info
  *     $Id$
  *  Overview:
@@ -23,6 +23,18 @@
 
 #  define PARROT_ATOMIC_PTR_SET(a, b) (a).val = (void *) (b)
 
+/*
+
+=over 4
+
+=item C<inline static void *parrot_ppc_cmpset(void * volatile *ptr, void
+*expect, void *update)>
+
+Generate ppc cmpset
+
+=cut
+
+*/
 inline static void *parrot_ppc_cmpset(void * volatile *ptr,
                                       void *expect, void *update)
 {
@@ -47,6 +59,18 @@
     return tmp;
 }
 
+/*
+
+=item C<inline static long parrot_ppc_add(volatile long *val, long what)>
+
+Generate ppc add
+
+=back
+
+=cut
+
+*/
+
 inline static long parrot_ppc_add(volatile long *val, long what)
 {
     long tmp;

Modified: branches/ops_pct/include/parrot/call.h
==============================================================================
--- branches/ops_pct/include/parrot/call.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/call.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -139,9 +139,6 @@
 void destroy_runloop_jump_points(PARROT_INTERP)
         __attribute__nonnull__(1);
 
-void really_destroy_runloop_jump_points(
-    ARGIN_NULLOK(Parrot_runloop *jump_point));
-
 void runops(PARROT_INTERP, size_t offs)
         __attribute__nonnull__(1);
 
@@ -151,8 +148,6 @@
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_destroy_runloop_jump_points __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_really_destroy_runloop_jump_points \
-     __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_runops __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/ops_pct/include/parrot/charset.h
==============================================================================
--- branches/ops_pct/include/parrot/charset.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/charset.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -101,7 +101,8 @@
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void Parrot_charsets_encodings_deinit(SHIM_INTERP);
+void Parrot_charsets_encodings_deinit(PARROT_INTERP)
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
 void Parrot_charsets_encodings_init(PARROT_INTERP)
@@ -149,20 +150,23 @@
 PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
 PARROT_MALLOC
-CHARSET * Parrot_new_charset(SHIM_INTERP);
+CHARSET * Parrot_new_charset(PARROT_INTERP)
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
-INTVAL Parrot_register_charset(SHIM_INTERP,
+INTVAL Parrot_register_charset(PARROT_INTERP,
     ARGIN(const char *charsetname),
     ARGIN(CHARSET *charset))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
 PARROT_EXPORT
-void Parrot_register_charset_converter(SHIM_INTERP,
+void Parrot_register_charset_converter(PARROT_INTERP,
     ARGIN(const CHARSET *lhs),
     ARGIN(CHARSET *rhs),
     ARGIN(charset_converter_t func))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
         __attribute__nonnull__(4);
@@ -175,7 +179,8 @@
 #define ASSERT_ARGS_Parrot_charset_number_of_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(src))
 #define ASSERT_ARGS_Parrot_charsets_encodings_deinit \
-     __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_charsets_encodings_init \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
@@ -191,13 +196,16 @@
     , PARROT_ASSERT_ARG(charsetname))
 #define ASSERT_ARGS_Parrot_make_default_charset __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(charset))
-#define ASSERT_ARGS_Parrot_new_charset __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_Parrot_new_charset __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_register_charset __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(charsetname) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(charsetname) \
     , PARROT_ASSERT_ARG(charset))
 #define ASSERT_ARGS_Parrot_register_charset_converter \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(lhs) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(lhs) \
     , PARROT_ASSERT_ARG(rhs) \
     , PARROT_ASSERT_ARG(func))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */

Modified: branches/ops_pct/include/parrot/context.h
==============================================================================
--- branches/ops_pct/include/parrot/context.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/context.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /* context.h
- *  Copyright (C) 2009, Parrot Foundation.
+ *  Copyright (C) 2009-2010, Parrot Foundation.
  *  SVN Info
  *     $Id$
  *  Overview:
@@ -225,12 +225,6 @@
 
 PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
-opcode_t* Parrot_pcc_get_results_func(PARROT_INTERP, ARGIN(PMC *ctx))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_EXPORT
-PARROT_CAN_RETURN_NULL
 PMC* Parrot_pcc_get_results_signature_func(PARROT_INTERP, ARGIN(PMC *ctx))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -335,13 +329,6 @@
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void Parrot_pcc_set_results_func(PARROT_INTERP,
-    ARGIN(PMC *ctx),
-    ARGIN_NULLOK(opcode_t *pc))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_EXPORT
 void Parrot_pcc_set_results_signature_func(PARROT_INTERP,
     ARGIN(PMC *ctx),
     ARGIN_NULLOK(PMC *sig))
@@ -465,9 +452,6 @@
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(ctx))
-#define ASSERT_ARGS_Parrot_pcc_get_results_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(ctx))
 #define ASSERT_ARGS_Parrot_pcc_get_results_signature_func \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -523,9 +507,6 @@
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(ctx))
-#define ASSERT_ARGS_Parrot_pcc_set_results_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(ctx))
 #define ASSERT_ARGS_Parrot_pcc_set_results_signature_func \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -567,9 +548,6 @@
 #  define Parrot_pcc_get_continuation(i, c) (__C(c)->current_cont)
 #  define Parrot_pcc_set_continuation(i, c, value) (__C(c)->current_cont = (value))
 
-#  define Parrot_pcc_get_results(i, c) (__C(c)->current_results)
-#  define Parrot_pcc_set_results(i, c, value) (__C(c)->current_results = (value))
-
 #  define Parrot_pcc_get_caller_ctx(i, c) (__C(c)->caller_ctx)
 #  define Parrot_pcc_set_caller_ctx(i, c, value) (__C(c)->caller_ctx = (value))
 
@@ -634,9 +612,6 @@
 #  define Parrot_pcc_get_continuation(i, c) Parrot_pcc_get_continuation_func((i), (c))
 #  define Parrot_pcc_set_continuation(i, c, value) Parrot_pcc_set_continuation_func((i), (c), (value))
 
-#  define Parrot_pcc_get_results(i, c) Parrot_pcc_get_results_func((i), (c))
-#  define Parrot_pcc_set_results(i, c, value) Parrot_pcc_set_results_func((i), (c), (value))
-
 #  define Parrot_pcc_get_caller_ctx(i, c) Parrot_pcc_get_caller_ctx_func((i), (c))
 #  define Parrot_pcc_set_caller_ctx(i, c, value) Parrot_pcc_set_caller_ctx_func((i), (c), (value))
 

Modified: branches/ops_pct/include/parrot/debugger.h
==============================================================================
--- branches/ops_pct/include/parrot/debugger.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/debugger.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -214,12 +214,13 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-long PDB_add_label(
+long PDB_add_label(PARROT_INTERP,
     ARGMOD(PDB_file_t *file),
     ARGIN(const opcode_t *cur_opcode),
     opcode_t offset)
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*file);
 
 void PDB_assign(PARROT_INTERP, ARGIN(const char *command))
@@ -240,11 +241,6 @@
         __attribute__nonnull__(2);
 
 PARROT_CAN_RETURN_NULL
-opcode_t * PDB_compile(PARROT_INTERP, ARGIN(const char *command))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_CAN_RETURN_NULL
 PDB_condition_t * PDB_cond(PARROT_INTERP, ARGIN(const char *command))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -256,7 +252,9 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-void PDB_delete_condition(SHIM_INTERP, ARGMOD(PDB_breakpoint_t *breakpoint))
+void PDB_delete_condition(PARROT_INTERP,
+    ARGMOD(PDB_breakpoint_t *breakpoint))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*breakpoint);
 
@@ -289,8 +287,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 PARROT_MALLOC
-char * PDB_escape(ARGIN(const char *string), UINTVAL length)
-        __attribute__nonnull__(1);
+char * PDB_escape(PARROT_INTERP, ARGIN(const char *string), UINTVAL length)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 void PDB_eval(PARROT_INTERP, ARGIN(const char *command))
         __attribute__nonnull__(1)
@@ -303,7 +302,9 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-void PDB_free_file(SHIM_INTERP, ARGIN_NULLOK(PDB_file_t *file));
+void PDB_free_file(PARROT_INTERP, ARGIN_NULLOK(PDB_file_t *file))
+        __attribute__nonnull__(1);
+
 void PDB_get_command(PARROT_INTERP)
         __attribute__nonnull__(1);
 
@@ -379,7 +380,8 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(command))
 #define ASSERT_ARGS_PDB_add_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(file) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(file) \
     , PARROT_ASSERT_ARG(cur_opcode))
 #define ASSERT_ARGS_PDB_assign __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -391,9 +393,6 @@
 #define ASSERT_ARGS_PDB_check_condition __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(condition))
-#define ASSERT_ARGS_PDB_compile __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(command))
 #define ASSERT_ARGS_PDB_cond __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(command))
@@ -403,7 +402,8 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(command))
 #define ASSERT_ARGS_PDB_delete_condition __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(breakpoint))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(breakpoint))
 #define ASSERT_ARGS_PDB_disable_breakpoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(command))
@@ -418,14 +418,16 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(command))
 #define ASSERT_ARGS_PDB_escape __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(string))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(string))
 #define ASSERT_ARGS_PDB_eval __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(command))
 #define ASSERT_ARGS_PDB_find_breakpoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(command))
-#define ASSERT_ARGS_PDB_free_file __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_PDB_free_file __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_PDB_get_command __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_PDB_hasinstruction __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/ops_pct/include/parrot/encoding.h
==============================================================================
--- branches/ops_pct/include/parrot/encoding.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/encoding.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -143,7 +143,8 @@
 PARROT_EXPORT
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
-ENCODING * Parrot_new_encoding(SHIM_INTERP);
+ENCODING * Parrot_new_encoding(PARROT_INTERP)
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
 INTVAL Parrot_register_encoding(PARROT_INTERP,
@@ -153,7 +154,9 @@
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
-void parrot_deinit_encodings(void);
+void parrot_deinit_encodings(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
 void Parrot_str_internal_register_encoding_names(PARROT_INTERP)
         __attribute__nonnull__(1);
 
@@ -178,12 +181,14 @@
     , PARROT_ASSERT_ARG(encodingname))
 #define ASSERT_ARGS_Parrot_make_default_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(encoding))
-#define ASSERT_ARGS_Parrot_new_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_Parrot_new_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_register_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(encodingname) \
     , PARROT_ASSERT_ARG(encoding))
-#define ASSERT_ARGS_parrot_deinit_encodings __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_parrot_deinit_encodings __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_internal_register_encoding_names \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))

Deleted: branches/ops_pct/include/parrot/events.h
==============================================================================
--- branches/ops_pct/include/parrot/events.h	Sun Mar  7 19:33:20 2010	(r44742)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,226 +0,0 @@
-/* events.h
- *  Copyright (C) 2001-2008, Parrot Foundation.
- *  SVN Info
- *     $Id$
- *  Overview:
- *     This api will handle parrot events
- *  Data Structure and Algorithms:
- *  History:
- *  Notes:
- *  References:
- */
-
-#ifndef PARROT_EVENTS_H_GUARD
-#define PARROT_EVENTS_H_GUARD
-
-#include "parrot/compiler.h"
-
-typedef void* (*event_func_t)(Parrot_Interp, void*);
-
-typedef enum {
-    EVENT_TYPE_NONE,
-    EVENT_TYPE_EVENT,
-    EVENT_TYPE_IO,
-    EVENT_TYPE_MSG,
-    EVENT_TYPE_TIMER,
-    EVENT_TYPE_CALL_BACK,
-    EVENT_TYPE_SLEEP,
-    EVENT_TYPE_TERMINATE,
-    EVENT_TYPE_EVENT_TERMINATE,
-    EVENT_TYPE_CLASS_CHANGED,
-    EVENT_TYPE_SIGNAL,
-    EVENT_TYPE_SUSPEND_FOR_GC
-} parrot_event_type_enum;
-
-/*
- * any timer event has 2 time fields in front
- */
-typedef struct parrot_timer_event {
-    FLOATVAL                    abs_time;
-    FLOATVAL                    interval;
-    int                         repeat; /* 0 = once, -1 = forever */
-    PMC*                        sub;    /* handler sub */
-    PMC*                        timer;  /* a .Timer PMC */
-} parrot_timer_event;
-
-/* TODO export to pasm */
-typedef enum {
-    EV_IO_NONE,                 /* invalidated */
-    EV_IO_SELECT_RD,            /* rd is ready for read */
-    EV_IO_SELECT_WR             /* rd is ready for write */
-} parrot_io_event_enum;
-
-typedef struct parrot_io_event {
-    parrot_io_event_enum        action; /* read, write, ... */
-    PMC*                        pio;
-    PMC*                        handler;
-    PMC*                        user_data;
-} parrot_io_event;
-
-typedef struct _call_back_info {
-    PMC*                        cbi;    /* callback info */
-    char*                       external_data;
-} _call_back_info;
-
-typedef struct parrot_event {
-    parrot_event_type_enum      type;
-    Parrot_Interp               interp;
-    /* event_func_t                event_func; unused */
-    union {
-        STRING*                 msg;            /* for testing only */
-        int                     signal;         /* for EVENT_TYPE_SIGNAL */
-        parrot_timer_event      timer_event;    /* for EVENT_TYPE_TIMER */
-        _call_back_info         call_back;      /* CALL_BACKs */
-        parrot_io_event         io_event;       /* EVENT_TYPE_IO */
-    } u;
-} parrot_event;
-
-struct QUEUE_ENTRY;
-
-#define CHECK_EVENTS(i, n)  (opcode_t *)Parrot_do_check_events((i), (n))
-#define HANDLE_EVENTS(i, n) (opcode_t *)Parrot_do_handle_events((i), 1, (n))
-
-/* HEADERIZER BEGIN: src/events.c */
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-
-PARROT_EXPORT
-void Parrot_del_timer_event(PARROT_INTERP, ARGIN(const PMC *timer))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-opcode_t * Parrot_do_check_events(PARROT_INTERP,
-    ARGIN_NULLOK(opcode_t *next))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-opcode_t * Parrot_do_handle_events(PARROT_INTERP,
-    int restore,
-    ARGIN_NULLOK(opcode_t *next))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-void Parrot_event_add_io_event(PARROT_INTERP,
-    ARGIN_NULLOK(PMC *pio),
-    ARGIN_NULLOK(PMC *sub),
-    ARGIN_NULLOK(PMC *data),
-    INTVAL which)
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-void Parrot_init_events(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-void Parrot_init_signals(void);
-
-PARROT_EXPORT
-void Parrot_kill_event_loop(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-void Parrot_new_cb_event(PARROT_INTERP, ARGIN(PMC *cbi), ARGIN(char *ext))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
-
-PARROT_EXPORT
-void Parrot_new_suspend_for_gc_event(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-void Parrot_new_terminate_event(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-void Parrot_new_timer_event(PARROT_INTERP,
-    ARGIN_NULLOK(PMC *timer),
-    FLOATVAL diff,
-    FLOATVAL interval,
-    int repeat,
-    ARGIN_NULLOK(PMC *sub),
-    parrot_event_type_enum typ)
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-void Parrot_schedule_event(PARROT_INTERP, ARGMOD(parrot_event* ev))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(* ev);
-
-PARROT_EXPORT
-void Parrot_schedule_interp_qentry(PARROT_INTERP,
-    ARGIN(struct QUEUE_ENTRY *entry))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-opcode_t * Parrot_sleep_on_event(PARROT_INTERP,
-    FLOATVAL t,
-    ARGIN_NULLOK(opcode_t *next))
-        __attribute__nonnull__(1);
-
-void Parrot_schedule_broadcast_qentry(ARGIN(struct QUEUE_ENTRY *entry))
-        __attribute__nonnull__(1);
-
-#define ASSERT_ARGS_Parrot_del_timer_event __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(timer))
-#define ASSERT_ARGS_Parrot_do_check_events __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_do_handle_events __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_event_add_io_event __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_init_events __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_init_signals __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_Parrot_kill_event_loop __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_new_cb_event __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(cbi) \
-    , PARROT_ASSERT_ARG(ext))
-#define ASSERT_ARGS_Parrot_new_suspend_for_gc_event \
-     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_new_terminate_event __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_new_timer_event __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_schedule_event __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(ev))
-#define ASSERT_ARGS_Parrot_schedule_interp_qentry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(entry))
-#define ASSERT_ARGS_Parrot_sleep_on_event __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_schedule_broadcast_qentry \
-     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(entry))
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-/* HEADERIZER END: src/events.c */
-
-/* &gen_from_enum(io_thr_msg.pasm) */
-typedef enum {
-    IO_THR_MSG_NONE,
-    IO_THR_MSG_TERMINATE,
-    IO_THR_MSG_ADD_SELECT_RD
-} io_thread_msg_type;
-/* &end_gen */
-
-#endif /* PARROT_EVENTS_H_GUARD */
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Modified: branches/ops_pct/include/parrot/extend.h
==============================================================================
--- branches/ops_pct/include/parrot/extend.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/extend.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -62,24 +62,6 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
 PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-void * Parrot_call_sub(PARROT_INTERP,
-    Parrot_PMC sub_pmc,
-    ARGIN(const char *signature),
-    ...)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(3);
-
-PARROT_EXPORT
-Parrot_Int Parrot_call_sub_ret_int(PARROT_INTERP,
-    Parrot_PMC sub_pmc,
-    ARGIN(const char *signature),
-    ...)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(3);
-
-PARROT_EXPORT
 int Parrot_eprintf(NULLOK_INTERP, ARGIN(const char *s), ...)
         __attribute__nonnull__(2);
 
@@ -412,12 +394,6 @@
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
-#define ASSERT_ARGS_Parrot_call_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(signature))
-#define ASSERT_ARGS_Parrot_call_sub_ret_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(signature))
 #define ASSERT_ARGS_Parrot_eprintf __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_Parrot_ext_call __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/ops_pct/include/parrot/gc_api.h
==============================================================================
--- branches/ops_pct/include/parrot/gc_api.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/gc_api.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -51,11 +51,11 @@
     GC_TRACE_SYSTEM_ONLY = 3
 } Parrot_gc_trace_type;
 
-typedef int (*pool_iter_fn)(PARROT_INTERP, struct Fixed_Size_Pool *, int, void*);
-typedef void (*add_free_object_fn_type)(PARROT_INTERP, struct Fixed_Size_Pool *, void *);
-typedef void * (*get_free_object_fn_type)(PARROT_INTERP, struct Fixed_Size_Pool *);
-typedef void (*alloc_objects_fn_type)(PARROT_INTERP, struct Fixed_Size_Pool *);
-typedef void (*gc_object_fn_type)(PARROT_INTERP, struct Fixed_Size_Pool *, PObj *);
+typedef int (*pool_iter_fn)(PARROT_INTERP, struct Memory_Pools *, struct Fixed_Size_Pool *, int, void*);
+typedef void (*add_free_object_fn_type)(PARROT_INTERP, struct Memory_Pools *, struct Fixed_Size_Pool *, void *);
+typedef void * (*get_free_object_fn_type)(PARROT_INTERP, struct Memory_Pools *, struct Fixed_Size_Pool *);
+typedef void (*alloc_objects_fn_type)(PARROT_INTERP, struct Memory_Pools *, struct Fixed_Size_Pool *);
+typedef void (*gc_object_fn_type)(PARROT_INTERP, struct Memory_Pools *, struct Fixed_Size_Pool *, PObj *);
 
 
 /* &gen_from_enum(interpinfo.pasm) prefix(INTERPINFO_) */
@@ -85,7 +85,8 @@
     /* interpinfo_s constants */
     EXECUTABLE_FULLNAME,
     EXECUTABLE_BASENAME,
-    RUNTIME_PREFIX
+    RUNTIME_PREFIX,
+    GC_SYS_NAME
 } Interpinfo_enum;
 
 /* &end_gen */
@@ -108,6 +109,22 @@
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+void * Parrot_gc_allocate_memory_chunk(PARROT_INTERP, size_t size)
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+void * Parrot_gc_allocate_memory_chunk_with_interior_pointers(PARROT_INTERP,
+    size_t size)
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+void Parrot_gc_free_memory_chunk(PARROT_INTERP, ARGIN_NULLOK(void *data))
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
 void Parrot_gc_mark_PMC_alive_fun(PARROT_INTERP, ARGMOD_NULLOK(PMC *obj))
         __attribute__nonnull__(1)
         FUNC_MODIFIES(*obj);
@@ -125,6 +142,21 @@
         FUNC_MODIFIES(*obj);
 
 PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+void * Parrot_gc_reallocate_memory_chunk(PARROT_INTERP,
+    ARGFREE(void *data),
+    size_t newsize)
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+void * Parrot_gc_reallocate_memory_chunk_with_interior_pointers(PARROT_INTERP,
+    ARGFREE(void *data),
+    size_t newsize,
+    size_t oldsize)
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
 unsigned int Parrot_is_blocked_GC_mark(PARROT_INTERP)
         __attribute__nonnull__(1);
 
@@ -190,11 +222,12 @@
 size_t Parrot_gc_count_mark_runs(PARROT_INTERP)
         __attribute__nonnull__(1);
 
-void Parrot_gc_destroy_header_pools(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-void Parrot_gc_destroy_memory_pools(PARROT_INTERP)
-        __attribute__nonnull__(1);
+void Parrot_gc_destroy_child_interp(
+    ARGMOD(Interp *dest_interp),
+    ARGIN(Interp *source_interp))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*dest_interp);
 
 void Parrot_gc_finalize(PARROT_INTERP)
         __attribute__nonnull__(1);
@@ -233,10 +266,6 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*s);
 
-int Parrot_gc_get_pmc_index(PARROT_INTERP, ARGIN(PMC* pmc))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
 size_t Parrot_gc_headers_alloc_since_last_collect(PARROT_INTERP)
         __attribute__nonnull__(1);
 
@@ -253,16 +282,9 @@
 size_t Parrot_gc_mem_alloc_since_last_collect(PARROT_INTERP)
         __attribute__nonnull__(1);
 
-void Parrot_gc_merge_header_pools(
-    ARGMOD(Interp *dest_interp),
-    ARGIN(Interp *source_interp))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*dest_interp);
-
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-void * Parrot_gc_new_bufferlike_header(PARROT_INTERP, size_t size)
+Buffer * Parrot_gc_new_bufferlike_header(PARROT_INTERP, size_t size)
         __attribute__nonnull__(1);
 
 PARROT_WARN_UNUSED_RESULT
@@ -280,15 +302,6 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*pmc);
 
-PARROT_WARN_UNUSED_RESULT
-int Parrot_gc_ptr_in_memory_pool(PARROT_INTERP, ARGIN(void *bufstart))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-int Parrot_gc_ptr_is_pmc(PARROT_INTERP, ARGIN(void *ptr))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
 void Parrot_gc_reallocate_buffer_storage(PARROT_INTERP,
     ARGMOD(Buffer *buffer),
     size_t newsize)
@@ -303,6 +316,10 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*str);
 
+PARROT_CANNOT_RETURN_NULL
+STRING * Parrot_gc_sys_name(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
 UINTVAL Parrot_gc_total_copied(PARROT_INTERP)
         __attribute__nonnull__(1);
 
@@ -319,6 +336,14 @@
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_block_GC_sweep __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_gc_allocate_memory_chunk \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_gc_allocate_memory_chunk_with_interior_pointers \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_gc_free_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_gc_mark_PMC_alive_fun __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_gc_mark_PObj_alive __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -327,6 +352,12 @@
 #define ASSERT_ARGS_Parrot_gc_mark_STRING_alive_fun \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_gc_reallocate_memory_chunk \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_gc_reallocate_memory_chunk_with_interior_pointers \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_is_blocked_GC_mark __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_is_blocked_GC_sweep __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -369,12 +400,10 @@
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_gc_count_mark_runs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_gc_destroy_header_pools \
+#define ASSERT_ARGS_Parrot_gc_destroy_child_interp \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_gc_destroy_memory_pools \
-     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(dest_interp) \
+    , PARROT_ASSERT_ARG(source_interp))
 #define ASSERT_ARGS_Parrot_gc_finalize __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_gc_free_bufferlike_header \
@@ -397,9 +426,6 @@
 #define ASSERT_ARGS_Parrot_gc_free_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(s))
-#define ASSERT_ARGS_Parrot_gc_get_pmc_index __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(pmc))
 #define ASSERT_ARGS_Parrot_gc_headers_alloc_since_last_collect \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
@@ -413,9 +439,6 @@
 #define ASSERT_ARGS_Parrot_gc_mem_alloc_since_last_collect \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_gc_merge_header_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(dest_interp) \
-    , PARROT_ASSERT_ARG(source_interp))
 #define ASSERT_ARGS_Parrot_gc_new_bufferlike_header \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
@@ -427,12 +450,6 @@
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
-#define ASSERT_ARGS_Parrot_gc_ptr_in_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(bufstart))
-#define ASSERT_ARGS_Parrot_gc_ptr_is_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(ptr))
 #define ASSERT_ARGS_Parrot_gc_reallocate_buffer_storage \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -441,6 +458,8 @@
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(str))
+#define ASSERT_ARGS_Parrot_gc_sys_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_gc_total_copied __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_gc_total_memory_allocated \

Modified: branches/ops_pct/include/parrot/hash.h
==============================================================================
--- branches/ops_pct/include/parrot/hash.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/hash.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -113,7 +113,8 @@
         FUNC_MODIFIES(*hash);
 
 PARROT_EXPORT
-void parrot_hash_destroy(SHIM_INTERP, ARGMOD(Hash *hash))
+void parrot_hash_destroy(PARROT_INTERP, ARGMOD(Hash *hash))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*hash);
 
@@ -400,7 +401,8 @@
     , PARROT_ASSERT_ARG(hash) \
     , PARROT_ASSERT_ARG(key))
 #define ASSERT_ARGS_parrot_hash_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(hash))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(hash))
 #define ASSERT_ARGS_parrot_hash_exists __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(hash) \

Modified: branches/ops_pct/include/parrot/imcc.h
==============================================================================
--- branches/ops_pct/include/parrot/imcc.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/imcc.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2008, Parrot Foundation.
+ * Copyright (C) 2007-2010, Parrot Foundation.
  * $Id$
  */
 
@@ -7,7 +7,8 @@
 #define PARROT_IMCC_H_GUARD
 
 PARROT_EXPORT void imcc_initialize(PARROT_INTERP);
-PARROT_EXPORT const char * parseflags(PARROT_INTERP, int *argc, char **argv[]);
+PARROT_EXPORT void imcc_start_handling_flags(PARROT_INTERP);
+PARROT_EXPORT int imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt, Parrot_Run_core_t *core);
 PARROT_EXPORT int imcc_run(PARROT_INTERP, const char *sourcefile, int argc, char **argv);
 
 #endif /* PARROT_IMCC_H_GUARD */

Modified: branches/ops_pct/include/parrot/interpreter.h
==============================================================================
--- branches/ops_pct/include/parrot/interpreter.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/interpreter.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /* interpreter.h
- *  Copyright (C) 2001-2009, Parrot Foundation.
+ *  Copyright (C) 2001-2010, Parrot Foundation.
  *  SVN Info
  *     $Id$
  *  Overview:
@@ -164,9 +164,7 @@
     size_t n_allocated;                 /* allocated size of it */
 } Prederef;
 
-/*
- * Get Context from interpeter.
- */
+/* Get Context from interpreter */
 #define CONTEXT(interp)         Parrot_pcc_get_context_struct((interp), (interp)->ctx)
 
 /*
@@ -387,6 +385,18 @@
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
+Parrot_Interp allocate_interpreter(
+    ARGIN_NULLOK(Interp *parent),
+    INTVAL flags);
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+Parrot_Interp initialize_interpreter(PARROT_INTERP, ARGIN(void *stacktop))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
 Parrot_Interp make_interpreter(ARGIN_NULLOK(Interp *parent), INTVAL flags);
 
 PARROT_EXPORT
@@ -398,6 +408,10 @@
     SHIM(void *arg))
         __attribute__nonnull__(1);
 
+#define ASSERT_ARGS_allocate_interpreter __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_initialize_interpreter __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(stacktop))
 #define ASSERT_ARGS_make_interpreter __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_Parrot_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
@@ -592,7 +606,7 @@
 #endif   /* PARROT_IN_CORE */
 
 #ifndef PMC_IS_NULL
-#  define PMC_IS_NULL(pmc) PMC_is_null(NULL, (pmc))
+#  define PMC_IS_NULL(pmc) Parrot_pmc_is_null(NULL, (pmc))
 #endif
 #ifndef STRING_IS_NULL
 #  define STRING_IS_NULL(s) ((s) == NULL || STRING_is_null(NULL, (s))

Modified: branches/ops_pct/include/parrot/io.h
==============================================================================
--- branches/ops_pct/include/parrot/io.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/io.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -665,7 +665,8 @@
         __attribute__nonnull__(2);
 
 PARROT_CAN_RETURN_NULL
-void Parrot_io_clear_buffer(SHIM_INTERP, ARGIN(PMC *filehandle))
+void Parrot_io_clear_buffer(PARROT_INTERP, ARGIN(PMC *filehandle))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_CAN_RETURN_NULL
@@ -751,7 +752,8 @@
 #define ASSERT_ARGS_Parrot_io_set_os_handle __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(filehandle))
 #define ASSERT_ARGS_Parrot_io_clear_buffer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(filehandle))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(filehandle))
 #define ASSERT_ARGS_Parrot_io_get_buffer_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(filehandle))
 #define ASSERT_ARGS_Parrot_io_get_buffer_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/ops_pct/include/parrot/memory.h
==============================================================================
--- branches/ops_pct/include/parrot/memory.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/memory.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /* memory.h
- *  Copyright (C) 2001-2008, Parrot Foundation.
+ *  Copyright (C) 2001-2010, Parrot Foundation.
  *  SVN Info
  *     $Id$
  *  Overview:
@@ -24,22 +24,39 @@
     __FILE__, __LINE__)
 #define mem_internal_allocate_zeroed_typed(type) \
     (type *)mem__internal_allocate_zeroed(sizeof (type), __FILE__, __LINE__)
+#define mem_internal_allocate_n_zeroed_typed(n, type) \
+    (type *)mem__internal_allocate_zeroed((n) * sizeof (type), __FILE__, __LINE__)
 
 #define mem_internal_realloc(x, y) mem__internal_realloc((x), (y), __FILE__, __LINE__)
 #define mem_internal_realloc_zeroed(p, x, y) mem__internal_realloc_zeroed((p), (x), (y), __FILE__, __LINE__)
+#define mem_internal_realloc_n_zeroed_typed(p, x, y, type) (type *)mem__internal_realloc_zeroed((p), (x) * sizeof (type), (y) * sizeof (type), __FILE__, __LINE__)
 #define mem_internal_free(x) mem__internal_free((x), __FILE__, __LINE__)
 
-#define mem_allocate_new_stash() NULL
-#define mem_allocate_new_stack() NULL
 #define mem_sys_memcopy memcpy
 #define mem_sys_memmove memmove
 
 #define mem_allocate_typed(type)            (type *)mem_sys_allocate(sizeof (type))
-#define mem_allocate_n_typed(n, type)       (type *)mem_sys_allocate((n) * sizeof(type))
+#define mem_allocate_n_typed(n, type)       (type *)mem_sys_allocate((n) * sizeof (type))
 #define mem_allocate_zeroed_typed(type)     (type *)mem_sys_allocate_zeroed(sizeof (type))
-#define mem_allocate_n_zeroed_typed(n, type) (type *)mem_sys_allocate_zeroed((n) * sizeof(type))
-#define mem_realloc_n_typed(p, n, type)     (p) = (type *)mem_sys_realloc((p), (n)*sizeof(type))
-#define mem_copy_n_typed(dest, src, n, type) memcpy((dest), (src), (n)*sizeof(type))
+#define mem_allocate_n_zeroed_typed(n, type) (type *)mem_sys_allocate_zeroed((n) * sizeof (type))
+#define mem_realloc_n_typed(p, n, type)     (p) = (type *)mem_sys_realloc((p), (n) * sizeof (type))
+
+#define mem_gc_allocate_typed(i, type) \
+        (type *)Parrot_gc_allocate_memory_chunk((i), sizeof (type))
+#define mem_gc_allocate_n_typed(i, n, type) \
+        (type *)Parrot_gc_allocate_memory_chunk((i), (n) * sizeof (type))
+#define mem_gc_realloc_n_typed(i, p, n, type) \
+        (type *)Parrot_gc_reallocate_memory_chunk((i), (p), (n) * sizeof (type))
+#define mem_gc_allocate_zeroed_typed(i, type) \
+        (type *)Parrot_gc_allocate_memory_chunk_with_interior_pointers((i), sizeof (type))
+#define mem_gc_allocate_n_zeroed_typed(i, n, type) \
+        (type *)Parrot_gc_allocate_memory_chunk_with_interior_pointers((i), (n) * sizeof (type))
+#define mem_gc_realloc_n_typed_zeroed(i, p, n, o, type) \
+        (type *)Parrot_gc_reallocate_memory_chunk_with_interior_pointers((i), (p), (n) * sizeof (type), (o) * sizeof (type))
+#define mem_gc_free(i, p) \
+        Parrot_gc_free_memory_chunk((i), (p))
+
+#define mem_copy_n_typed(dest, src, n, type) memcpy((dest), (src), (n)*sizeof (type))
 
 /* HEADERIZER BEGIN: src/gc/alloc_memory.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */

Modified: branches/ops_pct/include/parrot/nci.h
==============================================================================
--- branches/ops_pct/include/parrot/nci.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/nci.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -17,6 +17,10 @@
 
 void *build_call_func(PARROT_INTERP, SHIM(PMC *pmc_nci), NOTNULL(STRING *signature), NOTNULL(int *jitted));
 
+void Parrot_nci_load_core_thunks(PARROT_INTERP);
+
+void Parrot_nci_load_extra_thunks(PARROT_INTERP);
+
 #endif /* PARROT_NCI_H_GUARD */
 
 /*

Modified: branches/ops_pct/include/parrot/oo.h
==============================================================================
--- branches/ops_pct/include/parrot/oo.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/oo.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -164,11 +164,6 @@
 
 PARROT_CAN_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-PMC * Parrot_oo_get_namespace(SHIM_INTERP, ARGIN(const PMC *classobj))
-        __attribute__nonnull__(2);
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
 PMC * Parrot_oo_newclass_from_str(PARROT_INTERP, ARGIN(STRING *name))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -235,8 +230,6 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self) \
     , PARROT_ASSERT_ARG(ns))
-#define ASSERT_ARGS_Parrot_oo_get_namespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(classobj))
 #define ASSERT_ARGS_Parrot_oo_newclass_from_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(name))

Modified: branches/ops_pct/include/parrot/op.h
==============================================================================
--- branches/ops_pct/include/parrot/op.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/op.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -23,22 +23,22 @@
 } op_type_t;
 
 typedef enum {
-    PARROT_ARG_IC = PARROT_ARG_INTVAL   | PARROT_ARG_CONSTANT,
-    PARROT_ARG_NC = PARROT_ARG_FLOATVAL | PARROT_ARG_CONSTANT,
-    PARROT_ARG_PC = PARROT_ARG_PMC      | PARROT_ARG_CONSTANT,
-    PARROT_ARG_SC = PARROT_ARG_STRING   | PARROT_ARG_CONSTANT,
-    PARROT_ARG_NAME_SC = PARROT_ARG_NAME | PARROT_ARG_STRING   | PARROT_ARG_CONSTANT,
-
-    PARROT_ARG_KEYED = 0x20,
-    PARROT_ARG_KC = PARROT_ARG_PC       | PARROT_ARG_KEYED,
-    PARROT_ARG_KIC= PARROT_ARG_IC       | PARROT_ARG_KEYED,
-
-    PARROT_ARG_I = PARROT_ARG_INTVAL,
-    PARROT_ARG_N = PARROT_ARG_FLOATVAL,
-    PARROT_ARG_P = PARROT_ARG_PMC,
-    PARROT_ARG_S = PARROT_ARG_STRING,
-    PARROT_ARG_K = PARROT_ARG_P         | PARROT_ARG_KEYED,
-    PARROT_ARG_KI= PARROT_ARG_I         | PARROT_ARG_KEYED
+    PARROT_ARG_IC      = PARROT_ARG_INTVAL   | PARROT_ARG_CONSTANT,
+    PARROT_ARG_NC      = PARROT_ARG_FLOATVAL | PARROT_ARG_CONSTANT,
+    PARROT_ARG_PC      = PARROT_ARG_PMC      | PARROT_ARG_CONSTANT,
+    PARROT_ARG_SC      = PARROT_ARG_STRING   | PARROT_ARG_CONSTANT,
+    PARROT_ARG_NAME_SC = PARROT_ARG_NAME     | PARROT_ARG_STRING   | PARROT_ARG_CONSTANT,
+
+    PARROT_ARG_KEYED   = 0x20,
+    PARROT_ARG_KC      = PARROT_ARG_PC       | PARROT_ARG_KEYED,
+    PARROT_ARG_KIC     = PARROT_ARG_IC       | PARROT_ARG_KEYED,
+
+    PARROT_ARG_I       = PARROT_ARG_INTVAL,
+    PARROT_ARG_N       = PARROT_ARG_FLOATVAL,
+    PARROT_ARG_P       = PARROT_ARG_PMC,
+    PARROT_ARG_S       = PARROT_ARG_STRING,
+    PARROT_ARG_K       = PARROT_ARG_P         | PARROT_ARG_KEYED,
+    PARROT_ARG_KI      = PARROT_ARG_I         | PARROT_ARG_KEYED
 } arg_type_t;
 
 typedef enum {
@@ -51,13 +51,7 @@
 
 /* See lib/Parrot/OpsFile.pm if the names of these values change */
 typedef enum {
-    PARROT_JUMP_RELATIVE = 1,
-    PARROT_JUMP_ADDRESS = 2,
-    PARROT_JUMP_POP = 4,
-    PARROT_JUMP_ENEXT = 8,
-    PARROT_JUMP_GNEXT = 16,
-    PARROT_JUMP_UNPREDICTABLE = 32,
-    PARROT_JUMP_RESTART = 64
+    PARROT_JUMP_RELATIVE = 1
 } op_jump_t;
 
 /* NOTE: Sure wish we could put the types here... */
@@ -74,16 +68,14 @@
 */
 
 typedef struct op_info_t {
-    /* op_type_t type; unused */
-    const char *name;
-    const char *full_name;
-    const char *func_name;
-    /* const char *body; unused */
-    unsigned short jump;           /* s. above */
-    short op_count;               /* Includes opcode as one arg */
-    char types[PARROT_MAX_ARGS];   /* arg_type_t, 0 = 1st arg */
-    char dirs[PARROT_MAX_ARGS];    /* arg_dir_t   0 = 1st arg */
-    char labels[PARROT_MAX_ARGS];  /* 0/1         0 = 1st arg */
+    const char    *name;
+    const char    *full_name;
+    const char    *func_name;
+    unsigned short jump;
+    short          op_count;                /* Includes opcode as one arg */
+    arg_type_t     types[PARROT_MAX_ARGS];  /* arg_type_t, 0 = 1st arg */
+    arg_dir_t      dirs[PARROT_MAX_ARGS];   /* arg_dir_t   0 = 1st arg */
+    char           labels[PARROT_MAX_ARGS]; /* 0/1         0 = 1st arg */
 } op_info_t;
 
 

Modified: branches/ops_pct/include/parrot/oplib.h
==============================================================================
--- branches/ops_pct/include/parrot/oplib.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/oplib.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -32,7 +32,7 @@
     size_t      op_count;
     op_info_t * op_info_table;
     op_func_t * op_func_table;
-    int (*op_code)(const char * name, int full);
+    int (*op_code)(PARROT_INTERP, const char * name, int full);
 } op_lib_t;
 
 typedef enum {
@@ -41,7 +41,7 @@
 } op_lib_flags_enum;
 
 /* when init = true initialize, else de_initialize */
-typedef op_lib_t *(*oplib_init_f)(long init);
+typedef op_lib_t *(*oplib_init_f)(PARROT_INTERP, long init);
 
 /* core.ops special opcode numbers */
 typedef enum {

Modified: branches/ops_pct/include/parrot/oplib/core_ops.h
==============================================================================
--- branches/ops_pct/include/parrot/oplib/core_ops.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/oplib/core_ops.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -14,7 +14,7 @@
 #include "parrot/parrot.h"
 #include "parrot/oplib.h"
 
- op_lib_t *Parrot_DynOp_core_2_0_0(long init);
+ op_lib_t *Parrot_DynOp_core_2_1_0(PARROT_INTERP, long init);
 
  opcode_t * Parrot_end (opcode_t *, PARROT_INTERP);
  opcode_t * Parrot_noop (opcode_t *, PARROT_INTERP);
@@ -22,8 +22,6 @@
  opcode_t * Parrot_check_events (opcode_t *, PARROT_INTERP);
  opcode_t * Parrot_check_events__ (opcode_t *, PARROT_INTERP);
  opcode_t * Parrot_wrapper__ (opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_prederef__ (opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_reserved_ic (opcode_t *, PARROT_INTERP);
  opcode_t * Parrot_load_bytecode_s (opcode_t *, PARROT_INTERP);
  opcode_t * Parrot_load_bytecode_sc (opcode_t *, PARROT_INTERP);
  opcode_t * Parrot_load_language_s (opcode_t *, PARROT_INTERP);

Modified: branches/ops_pct/include/parrot/packfile.h
==============================================================================
--- branches/ops_pct/include/parrot/packfile.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/packfile.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -451,9 +451,10 @@
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void PackFile_add_segment(SHIM_INTERP,
+void PackFile_add_segment(PARROT_INTERP,
     ARGMOD(PackFile_Directory *dir),
     ARGIN(PackFile_Segment *seg))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
         FUNC_MODIFIES(*dir);
@@ -470,28 +471,32 @@
         FUNC_MODIFIES(*self);
 
 PARROT_EXPORT
-void PackFile_Annotations_add_group(SHIM_INTERP,
+void PackFile_Annotations_add_group(PARROT_INTERP,
     ARGMOD(PackFile_Annotations *self),
     opcode_t offset)
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*self);
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
-PackFile_Segment * PackFile_Annotations_new(SHIM_INTERP,
+PackFile_Segment * PackFile_Annotations_new(PARROT_INTERP,
     SHIM(struct PackFile *pf),
     SHIM(STRING *name),
-    NULLOK(int add));
+    NULLOK(int add))
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
-void PackFile_Constant_destroy(SHIM_INTERP,
+void PackFile_Constant_destroy(PARROT_INTERP,
     ARGMOD_NULLOK(PackFile_Constant *self))
+        __attribute__nonnull__(1)
         FUNC_MODIFIES(*self);
 
 PARROT_EXPORT
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
-PackFile_Constant * PackFile_Constant_new(SHIM_INTERP);
+PackFile_Constant * PackFile_Constant_new(PARROT_INTERP)
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -655,10 +660,11 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-PackFile_Segment * PackFile_Segment_new(SHIM_INTERP,
+PackFile_Segment * PackFile_Segment_new(PARROT_INTERP,
     SHIM(PackFile *pf),
     SHIM(STRING *name),
-    NULLOK(int add));
+    NULLOK(int add))
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -781,8 +787,9 @@
 void mark_const_subs(PARROT_INTERP)
         __attribute__nonnull__(1);
 
-void PackFile_Annotations_destroy(SHIM_INTERP,
+void PackFile_Annotations_destroy(PARROT_INTERP,
     ARGMOD(PackFile_Segment *seg))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*seg);
 
@@ -830,7 +837,8 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self))
 #define ASSERT_ARGS_PackFile_add_segment __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(dir) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(dir) \
     , PARROT_ASSERT_ARG(seg))
 #define ASSERT_ARGS_PackFile_Annotations_add_entry \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -838,10 +846,14 @@
     , PARROT_ASSERT_ARG(self))
 #define ASSERT_ARGS_PackFile_Annotations_add_group \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_PackFile_Annotations_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_PackFile_Constant_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_PackFile_Constant_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_PackFile_Annotations_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_PackFile_Constant_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_PackFile_Constant_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_PackFile_Constant_pack_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self))
@@ -904,7 +916,8 @@
 #define ASSERT_ARGS_PackFile_Segment_dump __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_PackFile_Segment_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_PackFile_Segment_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_PackFile_Segment_new_seg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(dir) \
@@ -954,7 +967,8 @@
 #define ASSERT_ARGS_mark_const_subs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_PackFile_Annotations_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(seg))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(seg))
 #define ASSERT_ARGS_PackFile_Annotations_dump __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(seg))
@@ -1025,9 +1039,12 @@
 
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
-char * PF_fetch_cstring(ARGIN(PackFile *pf), ARGIN(const opcode_t **cursor))
+char * PF_fetch_cstring(PARROT_INTERP,
+    ARGIN(PackFile *pf),
+    ARGIN(const opcode_t **cursor))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 PARROT_WARN_UNUSED_RESULT
 INTVAL PF_fetch_integer(
@@ -1074,6 +1091,9 @@
 size_t PF_size_string(ARGIN(const STRING *s))
         __attribute__nonnull__(1);
 
+PARROT_PURE_FUNCTION
+size_t PF_size_strlen(const UINTVAL len);
+
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 opcode_t* PF_store_cstring(ARGOUT(opcode_t *cursor), ARGIN(const char *s))
@@ -1112,7 +1132,8 @@
 #define ASSERT_ARGS_PackFile_assign_transforms __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(pf))
 #define ASSERT_ARGS_PF_fetch_cstring __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(pf) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pf) \
     , PARROT_ASSERT_ARG(cursor))
 #define ASSERT_ARGS_PF_fetch_integer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(stream))
@@ -1130,6 +1151,7 @@
 #define ASSERT_ARGS_PF_size_opcode __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_PF_size_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(s))
+#define ASSERT_ARGS_PF_size_strlen __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_PF_store_cstring __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(cursor) \
     , PARROT_ASSERT_ARG(s))

Modified: branches/ops_pct/include/parrot/parrot.h
==============================================================================
--- branches/ops_pct/include/parrot/parrot.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/parrot.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -269,7 +269,6 @@
 #include "parrot/io.h"
 #include "parrot/op.h"
 #include "parrot/pmc.h"
-#include "parrot/events.h"
 #include "parrot/gc_api.h"
 #include "parrot/string_funcs.h"
 #include "parrot/misc.h"
@@ -280,7 +279,6 @@
 #include "parrot/nci.h"
 #include "parrot/thread.h"
 #include "parrot/scheduler.h"
-#include "parrot/tsq.h"
 #include "parrot/longopt.h"
 #include "parrot/oo.h"
 #include "parrot/vtables.h"

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

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

Modified: branches/ops_pct/include/parrot/pobj.h
==============================================================================
--- branches/ops_pct/include/parrot/pobj.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/pobj.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -331,15 +331,6 @@
      | ~PObj_custom_mark_FLAG \
      | ~PObj_live_FLAG)
 
-/*******************************************************
- * DEPRECATED -- use PObj_custom_destroy_FOO() instead *
- *******************************************************/
-#define PObj_active_destroy_FLAG     PObj_custom_destroy_FLAG
-#define PObj_active_destroy_SET(o)   PObj_flag_SET(custom_destroy,   o)
-#define PObj_active_destroy_TEST(o)  PObj_flag_TEST(custom_destroy,  o)
-#define PObj_active_destroy_CLEAR(o) PObj_flag_CLEAR(custom_destroy, o)
-
-
 #endif /* PARROT_POBJ_H_GUARD */
 
 /*

Modified: branches/ops_pct/include/parrot/runcore_api.h
==============================================================================
--- branches/ops_pct/include/parrot/runcore_api.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/runcore_api.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -97,14 +97,6 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-void do_prederef(
-    ARGIN(void **pc_prederef),
-    PARROT_INTERP,
-    ARGIN(Parrot_runcore_t *runcore))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
-
 void dynop_register(PARROT_INTERP, ARGIN(PMC *lib_pmc))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -134,10 +126,6 @@
 #define ASSERT_ARGS_Parrot_runcore_switch __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(name))
-#define ASSERT_ARGS_do_prederef __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(pc_prederef) \
-    , PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(runcore))
 #define ASSERT_ARGS_dynop_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(lib_pmc))

Modified: branches/ops_pct/include/parrot/runcore_profiling.h
==============================================================================
--- branches/ops_pct/include/parrot/runcore_profiling.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/include/parrot/runcore_profiling.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -40,7 +40,7 @@
     PPROF_LINE_END_OF_RUNLOOP
 } Parrot_profiling_line;
 
-typedef void (*profiling_output_fn)(ARGIN(Parrot_profiling_runcore_t*), ARGIN_NULLOK(Parrot_profiling_line));
+typedef void (*profiling_output_fn)(ARGIN(Parrot_profiling_runcore_t*), ARGIN(PPROF_DATA*), ARGIN_NULLOK(Parrot_profiling_line));
 typedef        profiling_output_fn Parrot_profiling_output_fn;
 
 typedef enum Parrot_profiling_datatype {
@@ -92,7 +92,6 @@
     UINTVAL         time_size;  /* how big is the following array */
     UHUGEINTVAL    *time;       /* time spent between DO_OP and start/end of a runcore */
     Hash           *line_cache; /* hash for caching pc -> line mapping */
-    PPROF_DATA      pprof_data[PPROF_DATA_MAX+1]; /* array for storage of one line of profiling data */
 };
 
 #define Profiling_flag_SET(runcore, flag) \

Deleted: branches/ops_pct/include/parrot/tsq.h
==============================================================================
--- branches/ops_pct/include/parrot/tsq.h	Sun Mar  7 19:33:20 2010	(r44742)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,167 +0,0 @@
-/* tsq.h
- *  Copyright (C) 2001-2007, Parrot Foundation.
- *  SVN Info
- *     $Id$
- *  Overview:
- *     Defines the thread-safe queue system
- *  Data Structure and Algorithms:
- *  History:
- *  Notes:
- *  References:
- */
-
-#ifndef PARROT_TSQ_H_GUARD
-#define PARROT_TSQ_H_GUARD
-
-#include "parrot/config.h"
-#include "parrot/thread.h"
-
-
-typedef struct QUEUE_ENTRY QUEUE_ENTRY;
-typedef struct QUEUE QUEUE;
-
-typedef enum {
-    QUEUE_ENTRY_TYPE_NONE,
-    QUEUE_ENTRY_TYPE_EVENT,
-    QUEUE_ENTRY_TYPE_TIMED_EVENT
-} queue_entry_type_enum;
-
-struct QUEUE_ENTRY {
-    void *data;
-    queue_entry_type_enum type;
-    QUEUE_ENTRY *next;
-};
-
-struct QUEUE {
-    QUEUE_ENTRY *head;
-    QUEUE_ENTRY *tail;
-    UINTVAL max_prio;
-    Parrot_mutex queue_mutex;
-    Parrot_cond queue_condition;
-};
-
-/* HEADERIZER BEGIN: src/tsq.c */
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-
-void insert_entry(ARGMOD(QUEUE *queue), ARGIN(QUEUE_ENTRY *entry))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*queue);
-
-void nosync_insert_entry(ARGMOD(QUEUE *queue), ARGIN(QUEUE_ENTRY *entry))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*queue);
-
-PARROT_CANNOT_RETURN_NULL
-QUEUE_ENTRY * nosync_pop_entry(ARGMOD(QUEUE *queue))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*queue);
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-QUEUE_ENTRY * peek_entry(ARGIN(const QUEUE *queue))
-        __attribute__nonnull__(1);
-
-PARROT_CAN_RETURN_NULL
-QUEUE_ENTRY * pop_entry(ARGMOD(QUEUE *queue))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*queue);
-
-void push_entry(ARGMOD(QUEUE *queue), ARGIN(QUEUE_ENTRY *entry))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*queue);
-
-void queue_broadcast(ARGMOD(QUEUE *queue))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*queue);
-
-void queue_destroy(ARGMOD(QUEUE *queue))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*queue);
-
-PARROT_CAN_RETURN_NULL
-PARROT_MALLOC
-QUEUE* queue_init(UINTVAL prio);
-
-void queue_lock(ARGMOD(QUEUE *queue))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*queue);
-
-void queue_signal(ARGMOD(QUEUE *queue))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*queue);
-
-void queue_timedwait(
-    ARGMOD(QUEUE *queue),
-    ARGIN(const struct timespec *abs_time))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*queue);
-
-void queue_unlock(ARGMOD(QUEUE *queue))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*queue);
-
-void queue_wait(ARGMOD(QUEUE *queue))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*queue);
-
-void unshift_entry(ARGMOD(QUEUE *queue), ARGIN(QUEUE_ENTRY *entry))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*queue);
-
-PARROT_CAN_RETURN_NULL
-QUEUE_ENTRY * wait_for_entry(ARGMOD(QUEUE *queue))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*queue);
-
-#define ASSERT_ARGS_insert_entry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue) \
-    , PARROT_ASSERT_ARG(entry))
-#define ASSERT_ARGS_nosync_insert_entry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue) \
-    , PARROT_ASSERT_ARG(entry))
-#define ASSERT_ARGS_nosync_pop_entry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue))
-#define ASSERT_ARGS_peek_entry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue))
-#define ASSERT_ARGS_pop_entry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue))
-#define ASSERT_ARGS_push_entry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue) \
-    , PARROT_ASSERT_ARG(entry))
-#define ASSERT_ARGS_queue_broadcast __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue))
-#define ASSERT_ARGS_queue_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue))
-#define ASSERT_ARGS_queue_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_queue_lock __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue))
-#define ASSERT_ARGS_queue_signal __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue))
-#define ASSERT_ARGS_queue_timedwait __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue) \
-    , PARROT_ASSERT_ARG(abs_time))
-#define ASSERT_ARGS_queue_unlock __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue))
-#define ASSERT_ARGS_queue_wait __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue))
-#define ASSERT_ARGS_unshift_entry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue) \
-    , PARROT_ASSERT_ARG(entry))
-#define ASSERT_ARGS_wait_for_entry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(queue))
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-/* HEADERIZER END: src/tsq.c */
-
-#endif /* PARROT_TSQ_H_GUARD */
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Modified: branches/ops_pct/lib/Parrot/Configure/Compiler.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Configure/Compiler.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Configure/Compiler.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -197,10 +197,15 @@
 
     $conf->genfile($source, $target, %options);
 
-Takes the specified source file, replacing entries like C<@FOO@> with
-C<FOO>'s value from the configuration system's data, and writes the results
+Takes the specified source file, replacing entries like C<@key@> with
+C<key>'s value from the configuration system's data, and writes the results
 to specified target file.
 
+If a C<::> is present in the C<@key@>, the replaced value will first try to
+use the full key, but if that is not present, the key up to the C<::> is used.
+For example, if C<@cc_warn::src/embed.c@> is used, and that key doesn't
+exist, the fallback key would be C<@cc_warn@>.
+
 Respects the following options when manipulating files (Note: most of the
 replacement syntax assumes the source text is on a single line.)
 
@@ -210,8 +215,8 @@
 
 If set to a C<makefile>, C<c> or C<perl> value, C<comment_type> will be set
 to corresponding value.
-Moreover, when set to a C<makefile> value, it will set C<replace_slashes> to
-enabled, and C<conditioned_lines> to enabled.
+Moreover, when set to a C<makefile> value, it will enable
+C<conditioned_lines>.
 
 Its value will be detected automatically by target file name unless you set
 it to a special value C<none>.
@@ -270,11 +275,6 @@
 
 will be used on "win32" and if "glut" is defined, but not on "cygwin".
 
-B<Legacy Syntax:>
-
-The old syntax #CONDITIONED_LINE(var): and
-#INVERSE_CONDITIONED_LINE(var): is still supported, but is deprecated.
-
 =item comment_type
 
 This option takes has two possible values, C<#> or C</*>. If present and
@@ -294,12 +294,6 @@
 this evaluation occurs, any substitution of @@ values is performed on the
 original text.
 
-=item replace_slashes
-
-If set to a true value, this causes any C</>s in the file to automatically
-be replaced with an architecture appropriate slash. C</> or C<\>. This is
-a very helpful option when writing Makefiles.
-
 =item expand_gmake_syntax
 
 If set to a true value, then certain types of I<gmake> syntax will be expanded
@@ -350,7 +344,7 @@
     open my $out, '>', "$target.tmp" or die "Can't open $target.tmp: $!";
 
     if ( !exists $options{file_type}) {
-        if ( $target =~ m/makefile$/i ) {
+        if ( $target =~ m/makefile$/i || $target =~ m/\.mak/) {
             $options{file_type} = 'makefile';
         }
         elsif ($target =~ m/\.p[lm]$/i ) {
@@ -378,7 +372,6 @@
                 $file_types_info{$options{file_type}}{comment_type};
         }
         if ( $options{file_type} eq 'makefile' ) {
-            $options{replace_slashes}   = 1;
             $options{conditioned_lines} = 1;
         }
     }
@@ -461,16 +454,6 @@
                 next LINE if $former_truth;
                 $line = $1;
             }
-            # Legacy, DEPRECATED.
-            elsif (($expr,$rest)=($line =~ m/^#CONDITIONED_LINE\(([^)]+)\):(.*)/s)) {
-                next LINE unless cond_eval($conf, $expr);
-                $line = $rest;
-            }
-            elsif (($expr,$rest)=($line =~ m/^#INVERSE_CONDITIONED_LINE\(([^)]+)\):(.*)/s )) {
-                next LINE if cond_eval($conf, $expr);
-                $line = $rest;
-            }
-
             else { # reset
                 $former_truth = -1; # ELSE must immediately follow a conditional.
             }
@@ -539,29 +522,29 @@
         # interpolate @foo@ values
         $line =~ s{ \@ (\w+) \@ }{
             if(defined(my $val=$conf->data->get($1))) {
-                #use Data::Dumper;warn Dumper("val for $1 is ",$val);
                 $val;
             }
             else {
-                warn "value for '$1' in $source is undef";
+                warn "value for '\@$1\@' in $source is undef";
                 '';
             }
         }egx;
 
-        if ( $options{replace_slashes} ) {
-            if ( $line =~ m{/$} ) {
-                croak "$source:$.: line ends in a slash\n";
+        # interpolate @foo::bar@ values
+        $line =~ s{ \@ (\w+) :: ([^\@]+) \@ }{
+            my $full = $1 . '::' . $2;
+            my $base = $1;
+            if(defined(my $val=$conf->data->get($full))) {
+                $val;
             }
-
-            $line =~ s{(/+)}{
-                my $len = length $1;
-                my $slash = $conf->data->get('slash');
-                '/' x ($len/2) . ($len%2 ? $slash : '');
-            }eg;
-
-            # replace \* with \\*, so make will not eat the \
-            $line =~ s{(\\\*)}{\\$1}g;
-        }
+            elsif(defined($val=$conf->data->get($base))) {
+                $val;
+            }
+            else {
+                warn "value for '\@$full\@' in $source is undef, no fallback";
+                '';
+            }
+        }egx;
 
         print $out $line;
     }
@@ -620,8 +603,6 @@
     }
 }
 
-sub truth { $_[0] ? "true" : "false"; }
-
 # Recursively evaluate boolean expressions with multiple keys and | & ! ops.
 # Order of precedence: Just "!" and "NOT" binds tighter than AND and OR.
 # There's no precedence for AND over OR defined, just left to right.

Modified: branches/ops_pct/lib/Parrot/Configure/Messages.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Configure/Messages.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Configure/Messages.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 package Parrot::Configure::Messages;
@@ -17,7 +17,7 @@
     my $parrot_version = shift;
     print <<"END";
 Parrot Version $parrot_version Configure 2.0
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 
 Hello, I'm Configure. My job is to poke and prod your system to figure out
 how to build Parrot. The process is completely automated, unless you passed in

Modified: branches/ops_pct/lib/Parrot/Configure/Step/List.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Configure/Step/List.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Configure/Step/List.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 package Parrot::Configure::Step::List;
 use strict;
@@ -23,6 +23,8 @@
     auto::msvc
     auto::attributes
     auto::warnings
+    auto::arch
+    auto::cpu
     init::optimize
     inter::shlibs
     inter::libparrot
@@ -37,10 +39,8 @@
     auto::va_ptr
     auto::format
     auto::isreg
-    auto::arch
     auto::jit
     auto::frames
-    auto::cpu
     auto::cgoto
     auto::inline
     auto::gc
@@ -67,7 +67,6 @@
     gen::core_pmcs
     gen::crypto
     gen::opengl
-    gen::call_list
     gen::makefiles
     gen::platform
     gen::config_pm

Modified: branches/ops_pct/lib/Parrot/Distribution.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Distribution.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Distribution.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -537,7 +537,7 @@
 
     # test files (.t) might need testing.
     # ignore everything else.
-    return 0 unless $filename !~ /\.t$/;
+    return 0 if $filename !~ /\.t$/;
 
     # Now let's check to see if there's a perl shebang.
 
@@ -608,7 +608,7 @@
 
     # test files (.t) files might need testing.
     # ignore everything else.
-    return 0 unless $filename !~ /\.t$/;
+    return 0 if $filename !~ /\.t$/;
 
     # Now let's check to see if there's a plain parrot shebang.
     open my $file_handle, '<', $filename

Modified: branches/ops_pct/lib/Parrot/Docs/File.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Docs/File.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Docs/File.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -109,7 +109,6 @@
 my %type_for_name = (
     'Artistic'             => 'Licence file',
     'BUGS'                 => 'Project info',
-    'CFLAGS'               => 'CFLAGS file',
     'ChangeLog'            => 'Project info',
     'Changes'              => 'Project info',
     'CREDITS'              => 'Project info',

Modified: branches/ops_pct/lib/Parrot/Docs/Section/C.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Docs/Section/C.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Docs/Section/C.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -218,11 +218,10 @@
             'Threads', '',
             $self->c_pair_item( '', 'thread' ),
             $self->c_header_item( '', 'thr_pthread' ),
-            $self->c_pair_item( '', 'tsq' ),
         ),
         $self->new_group(
             'Exceptions', '',
-            $self->c_pair_item( '', 'exceptions' ), $self->c_pair_item( '', 'events' ),
+            $self->c_pair_item( '', 'exceptions' )
         ),
         $self->new_group(
             'Memory', '',

Modified: branches/ops_pct/lib/Parrot/Docs/Section/Tools.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Docs/Section/Tools.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Docs/Section/Tools.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -45,8 +45,6 @@
             'Configuration',
             '',
             $self->new_item( '', 'tools/dev/as2c.pl' ),
-            $self->new_item( '', 'tools/build/cc_flags.pl' ),
-            $self->new_item( '', 'tools/build/nativecall.pl' ),
             $self->new_item( '', 'tools/build/vtable_h.pl' ),
             $self->new_item( '', 'tools/build/vtable_extend.pl' ),
         ),

Modified: branches/ops_pct/lib/Parrot/Harness/DefaultTests.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Harness/DefaultTests.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Harness/DefaultTests.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2008, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -72,8 +72,8 @@
 # core tests are run unless --runcore-tests is present.  Typically
 # this list and the list above are run in response to --core-tests
 @core_tests = qw(
-    t/run/*.t
     t/src/*.t
+    t/run/*.t
     t/perl/*.t
 );
 

Modified: branches/ops_pct/lib/Parrot/Op.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Op.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Op.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -300,23 +300,6 @@
     return $self->{JUMP};
 }
 
-=item C<full_body()>
-
-For manual ops, C<full_body()> is the same as C<body()>. For auto ops
-this method adds a final C<goto NEXT()> line to the code to represent
-the auto-computed return value. See the note on op types above.
-
-=cut
-
-sub full_body {
-    my $self = shift;
-    my $body = $self->body;
-
-    $body .= sprintf( "  {{+=%d}};\n", $self->size ) if $self->type eq 'auto';
-
-    return $body;
-}
-
 # Called from rewrite_body() to perform the actual substitutions.
 sub _substitute {
     my $self           = shift;
@@ -360,15 +343,6 @@
 sub rewrite_body {
     my ( $self, $body, $trans, $preamble_only ) = @_;
 
-    # use vtable macros
-    $body =~ s!
-        (?:
-            {{\@\d+\}}
-            |
-            \b\w+(?:->\w+)*
-        )->vtable->\s*(\w+)\(
-        !VTABLE_$1(!sgx;
-
     while (1) {
         my $new_body = $self->_substitute( $body, $trans, !!$preamble_only );
 
@@ -382,7 +356,7 @@
 
 =item C<source($trans)>
 
-Returns the L<C<full_body()>> of the op with substitutions made by
+Returns the L<C<body()>> of the op with substitutions made by
 C<$trans> (a subclass of C<Parrot::OpTrans>).
 
 =cut
@@ -402,7 +376,7 @@
                 ? $trans->add_body_prelude()
                 : '';
 
-    return $self->rewrite_body( $prelude . $self->full_body, $trans );
+    return $self->rewrite_body( $prelude . $self->body, $trans );
 }
 
 =item C<size()>

Modified: branches/ops_pct/lib/Parrot/OpTrans.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/OpTrans.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/OpTrans.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -76,22 +76,6 @@
     return '';
 }
 
-=item C<defines()>
-
-Implemented in subclasses to return the C C<#define> macros required.
-
-=item C<opsarraytype()>
-
-Returns the type for the array of opcodes. By default here it's an array
-C<opcode_t>, but the prederef runops core uses an array of C<void*> to
-do its clever tricks.
-
-=cut
-
-sub opsarraytype {
-    return 'opcode_t';
-}
-
 =item C<core_type()>
 
 Implemented in subclasses to return the type of core created by the

Modified: branches/ops_pct/lib/Parrot/OpTrans/CGoto.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/OpTrans/CGoto.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/OpTrans/CGoto.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -283,7 +283,6 @@
 
 sub run_core_after_addr_table {
     my ( $self, $bs ) = @_;
-    my $t = $self->opsarraytype;
     return <<END_C;
 
     if (!${bs}ops_addr)

Modified: branches/ops_pct/lib/Parrot/Ops2c/Utils.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Ops2c/Utils.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Ops2c/Utils.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 package Parrot::Ops2c::Utils;
 use strict;
@@ -186,7 +186,6 @@
     $argsref->{preamble}     = $preamble;
     $argsref->{init_func}    = $init_func;
     $argsref->{bs}           = "$argsref->{base}$argsref->{suffix}_";
-    $argsref->{opsarraytype} = $argsref->{trans}->opsarraytype();
 
     # Invoked as:  ${defines}
     $argsref->{defines} = $argsref->{trans}->defines();
@@ -197,7 +196,7 @@
 
     my ( $op_info, $op_func, $getop );
     $op_info = $op_func = 'NULL';
-    $getop = '( int (*)(const char *, int) )NULL';
+    $getop = '( int (*)(PARROT_INTERP, const char *, int) )NULL';
 
     if ($self->{suffix} eq '') {
         $op_func = $self->{bs} . "op_func_table";
@@ -477,7 +476,7 @@
 #include "parrot/parrot.h"
 #include "parrot/oplib.h"
 
-$self->{sym_export} op_lib_t *$self->{init_func}(long init);
+$self->{sym_export} op_lib_t *$self->{init_func}(PARROT_INTERP, long init);
 
 END_C
     return 1;
@@ -559,7 +558,7 @@
 
     if ( $self->{suffix} eq '' && !$self->{flag}->{dynamic} ) {
         print $fh <<END_C_2;
-static int get_op(const char * name, int full);
+static int get_op(PARROT_INTERP, const char * name, int full);
 
 END_C_2
     }
@@ -606,9 +605,8 @@
     $prev_src = '';
     foreach my $op ( $self->{ops}->ops ) {
         my $func_name = $op->func_name( $self->{trans} );
-        my $arg_types = "$self->{opsarraytype} *, PARROT_INTERP";
-        my $prototype = "$self->{sym_export} $self->{opsarraytype} * $func_name ($arg_types)";
-        my $args      = "$self->{opsarraytype} *cur_opcode, PARROT_INTERP";
+        my $prototype =
+          "$self->{sym_export} opcode_t * $func_name (opcode_t *, PARROT_INTERP)";
         my $definition;
         my $comment = '';
         my $one_op  = "";
@@ -622,7 +620,7 @@
             $comment    = "/* " . $op->full_name() . " */";
         }
         else {
-            $definition = "$self->{opsarraytype} *\n$func_name ($args)";
+            $definition = "opcode_t *\n$func_name (opcode_t *cur_opcode, PARROT_INTERP)";
         }
 
         my $src = $op->source( $self->{trans} );
@@ -814,13 +812,13 @@
                 . join( ", ",
                 scalar $op->arg_types
                 ? map { sprintf( "PARROT_ARG_%s", uc $_ ) } $op->arg_types
-                : 0 )
-                . " }";
+                : '(arg_type_t) 0'
+                ) . " }";
             my $arg_dirs = "{ "
                 . join(
                 ", ", scalar $op->arg_dirs
                 ? map { $arg_dir_mapping{$_} } $op->arg_dirs
-                : 0
+                : '(arg_dir_t) 0'
                 ) . " }";
             my $labels = "{ "
                 . join(
@@ -828,7 +826,6 @@
                 ? $op->labels
                 : 0
                 ) . " }";
-            my $flags = 0;
 
             print $fh <<END_C;
   { /* $self->{index} */
@@ -841,8 +838,7 @@
     $arg_count,
     $arg_types,
     $arg_dirs,
-    $labels,
-    $flags
+    $labels
   },
 END_C
 
@@ -892,14 +888,14 @@
 } HOP;
 static HOP **hop;
 
-static void hop_init(void);
+static void hop_init(PARROT_INTERP);
 static size_t hash_str(const char *str);
-static void store_op(op_info_t *info, int full);
+static void store_op(PARROT_INTERP, op_info_t *info, int full);
 
 /* XXX on changing interpreters, this should be called,
    through a hook */
 
-static void hop_deinit(void);
+static void hop_deinit(PARROT_INTERP);
 
 /*
  * find a short or full opcode
@@ -923,8 +919,8 @@
     return key;
 }
 
-static void store_op(op_info_t *info, int full) {
-    HOP * const p     = mem_allocate_typed(HOP);
+static void store_op(PARROT_INTERP, op_info_t *info, int full) {
+    HOP * const p     = mem_gc_allocate_zeroed_typed(interp, HOP);
     const size_t hidx =
         hash_str(full ? info->full_name : info->name) % OP_HASH_SIZE;
 
@@ -932,12 +928,12 @@
     p->next   = hop[hidx];
     hop[hidx] = p;
 }
-static int get_op(const char * name, int full) {
+static int get_op(PARROT_INTERP, const char * name, int full) {
     const HOP * p;
     const size_t hidx = hash_str(name) % OP_HASH_SIZE;
     if (!hop) {
-        hop = mem_allocate_n_zeroed_typed(OP_HASH_SIZE,HOP *);
-        hop_init();
+        hop = mem_gc_allocate_n_zeroed_typed(interp, OP_HASH_SIZE,HOP *);
+        hop_init(interp);
     }
     for (p = hop[hidx]; p; p = p->next) {
         if(STREQ(name, full ? p->info->full_name : p->info->name))
@@ -945,18 +941,18 @@
     }
     return -1;
 }
-static void hop_init(void) {
+static void hop_init(PARROT_INTERP) {
     size_t i;
     op_info_t * const info = $self->{bs}op_lib.op_info_table;
     /* store full names */
     for (i = 0; i < $self->{bs}op_lib.op_count; i++)
-        store_op(info + i, 1);
+        store_op(interp, info + i, 1);
     /* plus one short name */
     for (i = 0; i < $self->{bs}op_lib.op_count; i++)
-        if (get_op(info[i].name, 0) == -1)
-            store_op(info + i, 0);
+        if (get_op(interp, info[i].name, 0) == -1)
+            store_op(interp, info + i, 0);
 }
-static void hop_deinit(void)
+static void hop_deinit(PARROT_INTERP)
 {
     if (hop) {
         size_t i;
@@ -964,7 +960,7 @@
             HOP *p = hop[i];
             while (p) {
                 HOP * const next = p->next;
-                mem_sys_free(p);
+                mem_gc_free(interp, p);
                 p = next;
             }
         }
@@ -977,7 +973,7 @@
     }
     else {
         print $fh <<END_C;
-static void hop_deinit(void) {}
+static void hop_deinit(SHIM_INTERP) {}
 END_C
     }
     return 1;
@@ -1026,11 +1022,11 @@
 
     print $fh <<END_C;
 op_lib_t *
-$self->{init_func}(long init) {
+$self->{init_func}(PARROT_INTERP, long init) {
     /* initialize and return op_lib ptr */
     if (init == 1) {
 $init1_code
-    return &$self->{bs}op_lib;
+        return &$self->{bs}op_lib;
     }
     /* set op_lib to the passed ptr (in init) */
     else if (init) {
@@ -1038,7 +1034,7 @@
     }
     /* deinit - free resources */
     else {
-    hop_deinit();
+        hop_deinit(interp);
     }
     return NULL;
 }
@@ -1063,7 +1059,7 @@
 $self->{sym_export} PMC*
 $load_func(PARROT_INTERP)
 {
-    PMC *const lib      = pmc_new(interp, enum_class_ParrotLibrary);
+    PMC *const lib = Parrot_pmc_new(interp, enum_class_ParrotLibrary);
     ((Parrot_ParrotLibrary_attributes*)PMC_data(lib))->oplib_init = (void *) $self->{init_func};
     dynop_register(interp, lib);
     return lib;

Modified: branches/ops_pct/lib/Parrot/OpsFile.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/OpsFile.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/OpsFile.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -126,15 +126,6 @@
 
 Transforms to C<X>, an absolute address.
 
-=item C<OP_SIZE>
-
-Transforms to C<S>, the size of an op.
-
-=item C<HALT()>
-
-Transforms to C<PC' = 0>. Halts run loop, and resets the current
-position to the start of the Parrot code, without resuming.
-
 =item C<restart OFFSET(X)>
 
 Transforms to C<PC' = 0> and restarts at C<PC + X>.
@@ -462,11 +453,8 @@
         $argdirs, $line, $file, $labels,     $flags, $nolines
     ) = @_;
     my $counter  = 0;
-    my $absolute = 0;
     my $branch   = 0;
     my $pop      = 0;
-    my $next     = 0;
-    my $restart  = 0;
 
     if (exists($$flags{deprecated})) {
         $body = <<"END_CODE" . $body;
@@ -499,9 +487,6 @@
         #   expr OFFSET(X)     {{^+X}}  PC + X        Relative address
         #   expr NEXT()        {{^+S}}  PC + S        Where S is op size
         #   expr ADDRESS(X)    {{^X}}   X             Absolute address
-        #   OP_SIZE            {{^S}}   S             op size
-        #
-        #   HALT()             {{=0}}   PC' = 0       Halts run_ops loop, no resume
         #
         #   restart OFFSET(X)  {{=0,+=X}}   PC' = 0   Restarts at PC + X
         #   restart NEXT()     {{=0,+=S}}   PC' = 0   Restarts at PC + S
@@ -519,38 +504,27 @@
         # on the mode of operation (function calls, switch statements, gotos
         # with labels, etc.).
         #
-
-        $absolute ||= $body =~ s/\bgoto\s+ADDRESS\(\( (.*?) \)\)/{{=$1}}/mg;
-                      $body =~ s/\bexpr\s+ADDRESS\(\( (.*?) \)\)/{{^$1}}/mg;
-        $absolute ||= $body =~ s/\bgoto\s+ADDRESS\((.*?)\)/{{=$1}}/mg;
-                      $body =~ s/\bexpr\s+ADDRESS\((.*?)\)/{{^$1}}/mg;
-
-        $branch   ||= $short_name =~ /runinterp/;
-        $branch   ||= $body =~ s/\bgoto\s+OFFSET\(\( (.*?) \)\)/{{+=$1}}/mg;
-                      $body =~ s/\bexpr\s+OFFSET\(\( (.*?) \)\)/{{^+$1}}/mg;
-        $branch   ||= $body =~ s/\bgoto\s+OFFSET\((.*?)\)/{{+=$1}}/mg;
-                      $body =~ s/\bexpr\s+OFFSET\((.*?)\)/{{^+$1}}/mg;
-
-        $next     ||= $short_name =~ /runinterp/;
-        $next     ||= $body =~ s/\bexpr\s+NEXT\(\)/{{^+$op_size}}/mg;
-                      $body =~ s/\bgoto\s+NEXT\(\)/{{+=$op_size}}/mg;
-
-        $body =~ s/\bHALT\(\)/{{=0}}/mg;
-        $body =~ s/\bOP_SIZE\b/{{^$op_size}}/mg;
-
-        if ( $body =~ s/\brestart\s+OFFSET\((.*?)\)/{{=0,+=$1}}/mg ) {
-            $branch  = 1;
-            $restart = 1;
-        }
-        elsif ( $body =~ s/\brestart\s+NEXT\(\)/{{=0,+=$op_size}}/mg ) {
-            $restart = 1;
-            $next    = 1;
-        }
-        elsif ( $body =~ s/\brestart\s+ADDRESS\((.*?)\)/{{=$1}}/mg ) {
-            $next    = 0;
-            $restart = 1;
+        if ($body =~ /(goto|restart)\s+OFFSET\(.*?\)/ || $short_name =~ /runinterp/) {
+            $branch = 1;
         }
 
+        $body =~ s/\bgoto\s+ADDRESS\(\( (.*?) \)\)/{{=$1}}/mg;
+        $body =~ s/\bexpr\s+ADDRESS\(\( (.*?) \)\)/{{^$1}}/mg;
+        $body =~ s/\bgoto\s+ADDRESS\((.*?)\)/{{=$1}}/mg;
+        $body =~ s/\bexpr\s+ADDRESS\((.*?)\)/{{^$1}}/mg;
+
+        $body =~ s/\bgoto\s+OFFSET\(\( (.*?) \)\)/{{+=$1}}/mg;
+        $body =~ s/\bexpr\s+OFFSET\(\( (.*?) \)\)/{{^+$1}}/mg;
+        $body =~ s/\bgoto\s+OFFSET\((.*?)\)/{{+=$1}}/mg;
+        $body =~ s/\bexpr\s+OFFSET\((.*?)\)/{{^+$1}}/mg;
+
+        $body =~ s/\bexpr\s+NEXT\(\)/{{^+$op_size}}/mg;
+        $body =~ s/\bgoto\s+NEXT\(\)/{{+=$op_size}}/mg;
+
+        $body =~ s/\brestart\s+OFFSET\((.*?)\)/{{=0,+=$1}}/mg;
+        $body =~ s/\brestart\s+NEXT\(\)/{{=0,+=$op_size}}/mg;
+        $body =~ s/\brestart\s+ADDRESS\((.*?)\)/{{=$1}}/mg;
+
         $body =~ s/\$(\d+)/{{\@$1}}/mg;
 
         # We can only reference as many parameters as we declare
@@ -566,17 +540,7 @@
         $op->body( $nolines ? $body : qq{#line $line "$file_escaped"\n$body} );
 
         # Constants here are defined in include/parrot/op.h
-        or_flag( \$jumps, "PARROT_JUMP_ADDRESS"  ) if $absolute;
         or_flag( \$jumps, "PARROT_JUMP_RELATIVE" ) if $branch;
-        or_flag( \$jumps, "PARROT_JUMP_ENEXT"    ) if $next;
-        or_flag( \$jumps, "PARROT_JUMP_RESTART"  ) if $restart;
-
-        # I'm assuming the op branches to the value in the last argument.
-        if ( ($jumps)
-            && ( $fixedargs[ @fixedargs - 1 ] )
-            && ( $fixedargs[ @fixedargs - 1 ] eq 'i' ) ) {
-            or_flag( \$jumps, "PARROT_JUMP_GNEXT" );
-        }
 
         $op->jump($jumps);
         $self->push_op($op);
@@ -663,7 +627,6 @@
 
         #s/goto\s+NEXT\(\)/{{+=$op_size}}/mg;   #not supported--dependent on op size
         s/goto\s+ADDRESS\((.*)\)/{{=$1}}/mg;
-        s/HALT\(\)/{{=0}}/mg;
 
         $_ = Parrot::Op->rewrite_body( $_, $trans, 'preamble' );
     }

Modified: branches/ops_pct/lib/Parrot/Pmc2c/Attribute.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/Attribute.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Pmc2c/Attribute.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -207,7 +207,7 @@
     }
     elsif ($attrtype eq "INTVAL") {
         $decl .= <<"EOA";
-            PMC * const attr_value = pmc_new(interp, enum_class_Integer); \\
+            PMC * const attr_value = Parrot_pmc_new(interp, enum_class_Integer); \\
             VTABLE_set_integer_native(interp, attr_value, value); \\
             VTABLE_set_attr_str(interp, pmc, \\
                               Parrot_str_new_constant(interp, "$attrname"), attr_value); \\
@@ -215,7 +215,7 @@
     }
     elsif ($attrtype eq "FLOATVAL") {
         $decl .= <<"EOA";
-            PMC * const attr_value = pmc_new(interp, enum_class_Float); \\
+            PMC * const attr_value = Parrot_pmc_new(interp, enum_class_Float); \\
             VTABLE_set_number_native(interp, attr_value, value); \\
             VTABLE_set_attr_str(interp, pmc, \\
                               Parrot_str_new_constant(interp, "$attrname"), attr_value); \\
@@ -223,7 +223,7 @@
     }
     elsif ($attrtype =~ $isptrtostring) {
         $decl .= <<"EOA";
-            PMC * const attr_value = pmc_new(interp, enum_class_String); \\
+            PMC * const attr_value = Parrot_pmc_new(interp, enum_class_String); \\
             VTABLE_set_string_native(interp, attr_value, value); \\
             VTABLE_set_attr_str(interp, pmc, \\
                               Parrot_str_new_constant(interp, "$attrname"), attr_value); \\

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

Modified: branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -437,7 +437,6 @@
 
     } /* END PMETHOD BODY */
     } /* END PARAMS SCOPE */
-  no_return:
     return;
 END
     $self->return_type('void');

Modified: branches/ops_pct/lib/Parrot/Pmc2c/PMC.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/PMC.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Pmc2c/PMC.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2008, Parrot Foundation.
+# Copyright (C) 2004-2010, Parrot Foundation.
 # $Id$
 #
 
@@ -340,7 +340,6 @@
     my ( $self, $methodname ) = @_;
 
     return 1 if ($methodname =~ m/^
-                (?:i_)?
                 (?:add|subtract|multiply|divide|floor_divide|modulus)
                 (?:_int|_float)?
               $/x);

Modified: branches/ops_pct/lib/Parrot/Pmc2c/PMCEmitter.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/PMCEmitter.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Pmc2c/PMCEmitter.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -251,54 +251,6 @@
         unless $self->is_dynamic;
 }
 
-=item C<proto($type,$parameters)>
-
-Determines the prototype (argument signature) for a method body
-(see F<src/call_list>).
-
-=cut
-
-my %calltype = (
-    "char"     => "c",
-    "short"    => "s",
-    "char"     => "c",
-    "short"    => "s",
-    "int"      => "i",
-    "INTVAL"   => "I",
-    "float"    => "f",
-    "FLOATVAL" => "N",
-    "double"   => "d",
-    "STRING*"  => "S",
-    "char*"    => "t",
-    "PMC*"     => "P",
-    "short*"   => "2",
-    "int*"     => "3",
-    "long*"    => "4",
-    "void"     => "v",
-    "void*"    => "b",
-    "void**"   => "B",
-);
-
-sub proto {
-    my ( $type, $parameters ) = @_;
-
-    # reduce to a comma separated set of types
-    $parameters =~ s/\w+(,|$)/,/g;
-    $parameters =~ s/ //g;
-
-    # flatten whitespace before "*" in return value
-    $type =~ s/\s+\*$/\*/ if defined $type;
-
-    # type method(interp, self, parameters...)
-    my $ret = $calltype{ $type or "void" }
-        . "JO"
-        . join( '',
-            map { $calltype{$_} or die "Unknown signature type '$_'" }
-            split( /,/, $parameters ) );
-
-    return $ret;
-}
-
 =item C<pre_method_gen>
 
 Generate switch-bases VTABLE for MULTI
@@ -703,7 +655,7 @@
         }
 
         /* set up MRO and _namespace */
-        Parrot_create_mro(interp, entry);
+        Parrot_pmc_create_mro(interp, entry);
 EOC
 
     # declare each nci method for this class
@@ -778,16 +730,25 @@
     my $export = $self->is_dynamic ? 'PARROT_DYNEXT_EXPORT ' : 'PARROT_EXPORT';
 
     # Sets the attr_size field:
-    # If the auto_attrs flag is set, use the current data,
-    # else check if this PMC has init or init_pmc vtable functions,
+    # - If the auto_attrs flag is set, use the current data.
+    # - If manual_attrs is set, set to 0.
+    # - If none is set, check if this PMC has init or init_pmc vtable functions,
     # setting it to 0 in that case, and keeping the value from the
     # parent otherwise.
     my $set_attr_size = '';
-    if ( @{$self->attributes} && $self->{flags}{auto_attrs} ) {
+    my $flag_auto_attrs = $self->{flags}{auto_attrs};
+    my $flag_manual_attrs = $self->{flags}{manual_attrs};
+    die 'manual_attrs and auto_attrs can not be used together'
+        if ($flag_auto_attrs && $flag_manual_attrs);
+    warn 'PMC has attributes but no auto_attrs or manual_attrs'
+        if (@{$self->attributes} && ! ($flag_auto_attrs || $flag_manual_attrs));
+
+    if ( @{$self->attributes} &&  $flag_auto_attrs) {
         $set_attr_size .= "sizeof(Parrot_${classname}_attributes)";
     }
     else {
-        $set_attr_size .= "0" if exists($self->{has_method}{init}) ||
+        $set_attr_size .= "0" if $flag_manual_attrs ||
+                                 exists($self->{has_method}{init}) ||
                                  exists($self->{has_method}{init_pmc});
     }
     $set_attr_size =     "    vt->attr_size = " . $set_attr_size . ";\n"
@@ -870,7 +831,7 @@
 PARROT_WARN_UNUSED_RESULT
 PMC* Parrot_${classname}_get_mro(PARROT_INTERP, PMC* mro) {
     if (PMC_IS_NULL(mro)) {
-        mro = pmc_new(interp, enum_class_ResizableStringArray);
+        mro = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
     }
 $get_mro
     VTABLE_unshift_string(interp, mro,

Modified: branches/ops_pct/lib/Parrot/Pmc2c/UtilFunctions.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/UtilFunctions.pm	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/lib/Parrot/Pmc2c/UtilFunctions.pm	Sun Mar  7 19:33:20 2010	(r44743)
@@ -163,7 +163,7 @@
     int pass;
 
     /* create a library PMC */
-    pmc = constant_pmc_new(interp, enum_class_ParrotLibrary);
+    pmc = Parrot_pmc_new_constant(interp, enum_class_ParrotLibrary);
 
     /* TODO: stuff some info into this PMC's props */
 
@@ -173,7 +173,7 @@
         my $lhs = $info->{flags}{no_init} ? "" : "type$class = ";
         $cout .= <<"EOC";
     whoami = CONST_STRING_GEN(interp, "$class");
-    ${lhs}pmc_register(interp, whoami);
+    ${lhs}Parrot_pmc_register_new_type(interp, whoami);
 EOC
     }
     $cout .= <<"EOC";

Modified: branches/ops_pct/runtime/parrot/include/test_more.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/include/test_more.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/include/test_more.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -20,7 +20,7 @@
     .local pmc exports, curr_namespace, test_namespace
     curr_namespace = get_namespace
     test_namespace = get_root_namespace [ 'parrot'; 'Test'; 'More' ]
-    exports = split ' ', 'plan diag ok nok is is_deeply like substring isa_ok skip isnt todo throws_like lives_ok dies_ok throws_substring'
+    exports = split ' ', 'plan diag ok nok is is_deeply is_null like substring isa_ok skip isnt todo throws_like lives_ok dies_ok throws_substring'
 
     test_namespace.'export_to'(curr_namespace, exports)
 

Modified: branches/ops_pct/runtime/parrot/library/Configure/genfile.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Configure/genfile.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/Configure/genfile.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -44,15 +44,30 @@
     .param string tmpl
     .param string outfile
     .param pmc config
+    .param int verbose          :named('verbose') :optional
+    .param int has_verbose      :opt_flag
+    .local int flag_replace_slash
+    flag_replace_slash = 1
+    $I0 = index outfile, '.'
+    if $I0 < 0 goto L1
+    $S0 = substr outfile, $I0
+    $I0 = index '.c .h .pir .pmc .t', $S0
+    if $I0 < 0 goto L1
+    flag_replace_slash = 0
+  L1:
     $S0 = slurp(tmpl)
     $S0 = conditioned_line($S0, config)
     $S0 = interpolate_var($S0, config)
     $S1 = sysinfo .SYSINFO_PARROT_OS
+    unless flag_replace_slash goto L2
     $S0 = replace_slash($S0, $S1)
+  L2:
     spew(outfile, $S0)
-    printerr "\n\tGenerating '"
-    printerr outfile
-    printerr "'\n\n"
+    unless has_verbose goto L3
+    unless verbose goto L3
+    print "generate "
+    say outfile
+  L3:
 .end
 
 .sub 'slurp' :anon

Modified: branches/ops_pct/runtime/parrot/library/Data/Dumper.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Data/Dumper.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/Data/Dumper.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -3,19 +3,19 @@
 
 .sub __library_data_dumper_onload :load
     .local pmc dd_class
-    dd_class = get_class "Data::Dumper"
+    dd_class = get_class ['Data'; 'Dumper']
     if null dd_class goto load_library
 
     goto END
 
   load_library:
         load_bytecode "Data/Dumper/Default.pbc"
-        newclass $P0, "Data::Dumper"
+        newclass $P0, ['Data'; 'Dumper']
 END:
     .return ()
 .end
 
-.namespace ["Data::Dumper"]
+.namespace ['Data'; 'Dumper']
 
 .sub dumper :method
     .param pmc dump
@@ -36,7 +36,7 @@
     .local pmc ddd_class
 
     push_eh ERROR2
-        ddd_class = get_class "Data::Dumper::Default"
+        ddd_class = get_class ['Data'; 'Dumper'; 'Default']
         style     = ddd_class."new"()
     pop_eh
 
@@ -49,14 +49,14 @@
 
 ERROR2:
     pop_eh
-    print "can not find class Data::Dumper::Default!\n"
+    print "can not find class ['Data'; 'Dumper'; 'Default']!\n"
     end
     .return ( 0 )
 ERROR:
     print "Syntax:\n"
-    print "Data::Dumper::dumper( pmc )\n"
-    print "Data::Dumper::dumper( pmc, name )\n"
-    print "Data::Dumper::dumper( pmc, name, indent )\n"
+    print "dumper( pmc )\n"
+    print "dumper( pmc, name )\n"
+    print "dumper( pmc, name, indent )\n"
     .return ( 0 )
 .end
 

Modified: branches/ops_pct/runtime/parrot/library/Data/Dumper/Base.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Data/Dumper/Base.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/Data/Dumper/Base.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -28,12 +28,12 @@
 
 .sub __library_data_dumper_base_onload :load
     .local pmc ddb_class
-    ddb_class = get_class "Data::Dumper::Base"
+    ddb_class = get_class ['Data'; 'Dumper'; 'Base']
     if null ddb_class goto create_ddb
     goto END
 
   create_ddb:
-    newclass $P0, "Data::Dumper::Base"
+    newclass $P0, ['Data'; 'Dumper'; 'Base']
     addattribute $P0, "dumper"
     addattribute $P0, "level"
     addattribute $P0, "indention"
@@ -43,7 +43,7 @@
     .return ()
 .end
 
-.namespace ["Data::Dumper::Base"]
+.namespace ['Data'; 'Dumper'; 'Base']
 
 =item style."prepare"( dumper, indent )
 

Modified: branches/ops_pct/runtime/parrot/library/Data/Dumper/Default.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Data/Dumper/Default.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/Data/Dumper/Default.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -20,19 +20,19 @@
 
 .sub __library_data_dumper_default_onload :load
     .local pmc ddb_class
-    ddb_class = get_class "Data::Dumper::Default"
+    ddb_class = get_class ['Data'; 'Dumper'; 'Default']
     if null ddb_class goto create_ddb
     goto END
 
   create_ddb:
     load_bytecode 'Data/Dumper/Base.pbc'
-    get_class $P0, "Data::Dumper::Base"
-    subclass $P0, $P0, "Data::Dumper::Default"
+    get_class $P0, ['Data'; 'Dumper'; 'Base']
+    subclass $P0, $P0, ['Data'; 'Dumper'; 'Default']
 END:
     .return ()
 .end
 
-.namespace ["Data::Dumper::Default"]
+.namespace ['Data'; 'Dumper'; 'Default']
 
 =head1 METHODS
 

Modified: branches/ops_pct/runtime/parrot/library/HTTP/Daemon.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/HTTP/Daemon.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/HTTP/Daemon.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -433,7 +433,7 @@
 .end
 
 # close all sockets
-# this needs enabling of SIGHUP in src/events.c but still doesn't
+# this needs enabling of SIGHUP but still doesn't
 # help against FIN_WAIT2 / TIME_WAIT state of connections
 .sub 'shutdown' :method
     .local pmc active, sock

Modified: branches/ops_pct/runtime/parrot/library/Math/Rand.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Math/Rand.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/Math/Rand.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -52,9 +52,7 @@
 .namespace [ 'Math'; 'Rand' ]
 
 .sub '__onload' :anon :load
-#    print "__onload Math::Rand\n"
-    new $P0, 'Integer'
-    set $P0, 1
+    $P0 = box 1
     set_global 'next', $P0
 .end
 

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

Modified: branches/ops_pct/runtime/parrot/library/P6object.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/P6object.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/P6object.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -819,7 +819,7 @@
     # If this fails, and we want Any, and it's something form outside
     # of the Perl 6 world, we'd best just accept it.
     unless $S0 == 'Any' goto end
-    $I0 = isa topicwhat, 'Perl6Object'
+    $I0 = isa topicwhat, 'Mu'
     unless $I0 goto accept_anyway
     $I0 = 0
     goto end

Modified: branches/ops_pct/runtime/parrot/library/Parrot/Coroutine.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Parrot/Coroutine.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/Parrot/Coroutine.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -59,7 +59,7 @@
         .local int coro_class, idx
         .local pmc coro
         .const 'Sub' coro_sub = "enumerate_tree"
-        coro = new 'Parrot::Coroutine', coro_sub
+        coro = new ['Parrot'; 'Coroutine'], coro_sub
         ($P0 :optional, $I0 :opt_flag) = coro.'resume'(coro, tree)
         idx = 0
 
@@ -83,9 +83,9 @@
 =cut
 
 .sub onload_create_class :load
-    $P0 = get_class "Parrot::Coroutine"
+    $P0 = get_class ['Parrot'; 'Coroutine']
     unless null $P0 goto END
-    $P0 = newclass "Parrot::Coroutine"
+    $P0 = newclass ['Parrot'; 'Coroutine']
     addattribute $P0, "state"       ## State:  1 is new/valid, 0 is dead.
     addattribute $P0, "initial_sub" ## Initial sub.
     addattribute $P0, "yield_cont"  ## Continuation to for yielding.
@@ -94,7 +94,7 @@
     .return ()
 .end
 
-.namespace ["Parrot::Coroutine"]
+.namespace ['Parrot'; 'Coroutine']
 
 .include "interpinfo.pasm"
 
@@ -106,7 +106,7 @@
 
     .local pmc coro
     .const 'Sub' coro_sub = "enumerate_tree"
-    coro_class = get_class 'Parrot::Coroutine'
+    coro_class = get_class ['Parrot'; 'Coroutine']
     coro = coro_class.'new'('initial_sub' => coro_sub)
 
 Given a sub, it initializes a new C<Parrot::Coroutine> object.
@@ -125,8 +125,7 @@
 
 ## [it would be nice to include a pointer value.  -- rgr, 8-Oct-06.]
 .sub get_string :vtable :method
-    $S0 = '<Parrot::Coroutine ?>'
-    .return ($S0)
+    .return ('<Parrot::Coroutine ?>')
 .end
 
 =head3 B<coro.resume(args...)>

Modified: branches/ops_pct/runtime/parrot/library/SDL.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -53,9 +53,9 @@
 .include 'datatypes.pasm'
 
 .macro store_nci_func( func_name, signature )
-    c_func_name = prefix . .func_name
+    c_func_name = 'SDL_' . .func_name
     dlfunc c_function, libsdl, c_func_name, .signature
-    set_hll_global ['SDL::NCI'], .func_name, c_function
+    set_hll_global ['SDL'; 'NCI'], .func_name, c_function
 .endm
 
 .sub _sdl_init :load
@@ -63,7 +63,7 @@
 
     .local pmc layouts
     layouts = new 'OrderedHash'
-    set_hll_global ['SDL::NCI'], 'layouts', layouts
+    set_hll_global ['SDL'; 'NCI'], 'layouts', layouts
 
     # this order matters; trust me!
     _set_Event_layout(        layouts )
@@ -88,6 +88,18 @@
     .local pmc libsdl
     .local pmc sdl_function
 
+    .local pmc env
+    env = new 'Env'
+    .local string sdlpath
+    say'Hu'
+    sdlpath = env['SDLLIBPATH']
+    if sdlpath == '' goto default_locations
+    say sdlpath
+    loadlib libsdl, sdlpath
+    if libsdl goto OK
+    goto failed
+
+default_locations:
     loadlib libsdl, 'libSDL'
     if libsdl goto OK
 
@@ -103,6 +115,7 @@
     loadlib libsdl, 'cygSDL-1-2-0'
     if libsdl goto OK
 
+failed:
     # failed to load libSDL
     $P0 = new 'Exception'
     $P0 = "libSDL not found!"
@@ -114,11 +127,6 @@
   OK_HINT2:
     printerr "Hint: create a link from libSDL-1.2.so.0 to libSDL_image.so to disable the error messages.\n"
   OK:
-    .local string namespace
-    namespace = 'SDL::NCI'
-
-    .local string prefix
-    prefix    = 'SDL_'
 
     .local string c_func_name
     .local pmc    c_function
@@ -126,43 +134,43 @@
     .store_nci_func( 'Init', 'ii' )
 
 #    dlfunc sdl_function, libsdl, 'SDL_Init', 'ii'
-#    set_hll_global ['SDL::NCI'], 'Init', sdl_function
+#    set_hll_global ['SDL'; 'NCI'], 'Init', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_SetVideoMode', 'piiil'
-    set_hll_global ['SDL::NCI'], 'SetVideoMode', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'SetVideoMode', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_Quit', 'v'
-    set_hll_global ['SDL::NCI'], 'Quit', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'Quit', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_FillRect', 'ippi'
-    set_hll_global ['SDL::NCI'], 'FillRect', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'FillRect', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_UpdateRect', 'vpiiii'
-    set_hll_global ['SDL::NCI'], 'UpdateRect', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'UpdateRect', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_UpdateRects', 'vpip'
-    set_hll_global ['SDL::NCI'], 'UpdateRects', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'UpdateRects', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_Flip', 'ip'
-    set_hll_global ['SDL::NCI'], 'Flip', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'Flip', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_FreeSurface', 'vp'
-    set_hll_global ['SDL::NCI'], 'FreeSurface', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'FreeSurface', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_LoadBMP_RW', 'ppi'
-    set_hll_global ['SDL::NCI'], 'LoadBMP_RW', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'LoadBMP_RW', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_DisplayFormat', 'pp'
-    set_hll_global ['SDL::NCI'], 'DisplayFormat', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'DisplayFormat', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_UpperBlit', 'ipppp'
-    set_hll_global ['SDL::NCI'], 'BlitSurface', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'BlitSurface', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_WaitEvent', 'ip'
-    set_hll_global ['SDL::NCI'], 'WaitEvent', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'WaitEvent', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_PollEvent', 'ip'
-    set_hll_global ['SDL::NCI'], 'PollEvent', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'PollEvent', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_GetKeyName', 'ti'
-    set_hll_global ['SDL::NCI'], 'GetKeyName', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'GetKeyName', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_GetError', 'tv'
-    set_hll_global ['SDL::NCI'], 'GetError', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'GetError', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_SetColorKey', 'ipii'
-    set_hll_global ['SDL::NCI'], 'SetColorKey', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'SetColorKey', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_LockSurface', 'ip'
-    set_hll_global ['SDL::NCI'], 'LockSurface', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'LockSurface', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_UnlockSurface', 'vp'
-    set_hll_global ['SDL::NCI'], 'UnlockSurface', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'UnlockSurface', sdl_function
     dlfunc sdl_function, libsdl, 'SDL_CreateRGBSurface', 'piiiiiiii'
-    set_hll_global ['SDL::NCI'], 'CreateRGBSurface', sdl_function
+    set_hll_global ['SDL'; 'NCI'], 'CreateRGBSurface', sdl_function
 .end
 
 =item _init_image()
@@ -201,7 +209,7 @@
     printerr "Hint: create a link from libSDL_image-1.2.so.0 to libSDL_image.so to disable the error messages.\n"
   OK:
     dlfunc nci_sub, image_lib, 'IMG_Load', 'pt'
-    set_hll_global ['SDL::NCI'], 'IMG_Load', nci_sub
+    set_hll_global ['SDL'; 'NCI'], 'IMG_Load', nci_sub
 .end
 
 =item _init_ttf()
@@ -224,10 +232,10 @@
 
   initialize:
     .local pmc nci_sub
-    dlfunc nci_sub, ttf_lib, 'TTF_Init', 'iv'
+    dlfunc nci_sub, ttf_lib, 'TTF_Init', 'i'
     unless nci_sub goto error
 
-    set_hll_global ['SDL::NCI::TTF'], 'Init', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'Init', nci_sub
 
     # TTF_init() returns 0 if successful, -1 on error
     .local int initialized
@@ -238,41 +246,41 @@
   error:
     .local pmc e
     e    = new 'Exception'
-    e[0] = "SDL_ttf not initialized\n"
+    e['message'] = "SDL_ttf not initialized\n"
     throw e
 
   success:
     dlfunc nci_sub, ttf_lib, 'TTF_OpenFont', 'pti'
-    set_hll_global ['SDL::NCI::TTF'], 'OpenFont', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'OpenFont', nci_sub
 #RNH changes: all text routines expect an integer, not a pmc, for color parameter
     dlfunc nci_sub, ttf_lib, 'TTF_RenderText_Solid', 'ppti'
-    set_hll_global ['SDL::NCI::TTF'], 'RenderText_Solid', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'RenderText_Solid', nci_sub
     dlfunc nci_sub, ttf_lib, 'TTF_RenderUTF8_Solid', 'ppti'
-    set_hll_global ['SDL::NCI::TTF'], 'RenderUTF8_Solid', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'RenderUTF8_Solid', nci_sub
 
     # this one could be wrong
     dlfunc nci_sub, ttf_lib, 'TTF_RenderUNICODE_Solid', 'ppti'
-    set_hll_global ['SDL::NCI::TTF'], 'RenderUNICODE_Solid', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'RenderUNICODE_Solid', nci_sub
 # RNH Additions. Add UTF8_Shaded and FontLine skip
     dlfunc nci_sub, ttf_lib, 'TTF_RenderUTF8_Shaded', 'pptii'
-    set_hll_global ['SDL::NCI::TTF'], 'RenderUTF8_Shaded', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'RenderUTF8_Shaded', nci_sub
     dlfunc nci_sub, ttf_lib, 'TTF_FontLineSkip', 'ip'
-    set_hll_global ['SDL::NCI::TTF'], 'FontLineSkip', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'FontLineSkip', nci_sub
 #end additions
 
     dlfunc nci_sub, ttf_lib, 'TTF_SizeText', 'ipt33'
-    set_hll_global ['SDL::NCI::TTF'], 'SizeText', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'SizeText', nci_sub
     dlfunc nci_sub, ttf_lib, 'TTF_SizeUTF8', 'ipt33'
-    set_hll_global ['SDL::NCI::TTF'], 'SizeUTF8', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'SizeUTF8', nci_sub
     dlfunc nci_sub, ttf_lib, 'TTF_SizeUNICODE', 'ipt33'
-    set_hll_global ['SDL::NCI::TTF'], 'SizeUNICODE', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'SizeUNICODE', nci_sub
 
     dlfunc nci_sub, ttf_lib, 'TTF_CloseFont', 'vp'
-    set_hll_global ['SDL::NCI::TTF'], 'CloseFont', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'CloseFont', nci_sub
     dlfunc nci_sub, ttf_lib, 'TTF_Quit', 'vv'
-    set_hll_global ['SDL::NCI::TTF'], 'Quit', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'Quit', nci_sub
     dlfunc nci_sub, ttf_lib, 'TTF_WasInit', 'iv'
-    set_hll_global ['SDL::NCI::TTF'], 'WasInit', nci_sub
+    set_hll_global ['SDL'; 'NCI'; 'TTF'], 'WasInit', nci_sub
 .end
 
 .sub _set_Event_layout
@@ -416,7 +424,7 @@
     .param pmc layouts
 
     .local pmc fetch_struct
-    fetch_struct = get_hll_global ['SDL::NCI'], 'fetch_struct'
+    fetch_struct = get_hll_global ['SDL'; 'NCI'], 'fetch_struct'
 
     .local pmc rect
     rect   = fetch_struct( 'Rect', 0 )
@@ -440,7 +448,7 @@
     .param pmc layouts
 
     .local pmc fetch_struct
-    fetch_struct = get_hll_global ['SDL::NCI'], 'fetch_struct'
+    fetch_struct = get_hll_global ['SDL'; 'NCI'], 'fetch_struct'
 
     # SDL_PixelFormat struct pointer
     .local pmc pixelformat
@@ -540,7 +548,7 @@
     .param pmc layouts
 
     .local pmc fetch_struct
-    fetch_struct = get_hll_global ['SDL::NCI'], 'fetch_struct'
+    fetch_struct = get_hll_global ['SDL'; 'NCI'], 'fetch_struct'
 
     .local pmc palette
     palette = fetch_struct( 'Palette', 0 )
@@ -612,7 +620,7 @@
     .param pmc layouts
 
     .local pmc fetch_struct
-    fetch_struct = get_hll_global ['SDL::NCI'], 'fetch_struct'
+    fetch_struct = get_hll_global ['SDL'; 'NCI'], 'fetch_struct'
 
     .local pmc color
     color  = fetch_struct( 'Color', 0 )
@@ -703,7 +711,7 @@
 
 =cut
 
-.namespace [ 'SDL::NCI' ]
+.namespace [ 'SDL'; 'NCI' ]
 
 .sub fetch_struct
     .param string struct_name
@@ -713,7 +721,7 @@
     .local pmc struct
 
 #    .local pmc fetch_layout
-#    fetch_layout = get_hll_global ['SDL::NCI'], 'fetch_layout'
+#    fetch_layout = get_hll_global ['SDL'; 'NCI'], 'fetch_layout'
     initializer  = fetch_layout( struct_name )
 
     if managed == 1 goto build_managed
@@ -733,7 +741,7 @@
     .local pmc layouts
     .local pmc layout
 
-    layouts = get_hll_global ['SDL::NCI'], 'layouts'
+    layouts = get_hll_global ['SDL'; 'NCI'], 'layouts'
 
     exists $I0, layouts[ layout_name ]
     if $I0 goto found

Modified: branches/ops_pct/runtime/parrot/library/SDL/App.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/App.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/App.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -13,7 +13,7 @@
     # create a new SDL::App object
     .local pmc app
 
-    app = new 'SDL::App'
+    app = new ['SDL'; 'App']
 
     # set the app's arguments
     .local pmc app_args
@@ -62,7 +62,7 @@
 
 =cut
 
-.namespace [ 'SDL::App' ]
+.namespace [ 'SDL'; 'App' ]
 
 .sub _initialize :load
 
@@ -73,7 +73,7 @@
 
     .local pmc app_class
 
-    newclass     app_class, 'SDL::App'
+    newclass     app_class, ['SDL'; 'App']
     addattribute app_class, 'height'
     addattribute app_class, 'width'
     addattribute app_class, 'bpp'
@@ -121,7 +121,7 @@
     .param int flags  :named('flags')
 
     .local pmc SetVideoMode
-    SetVideoMode = get_hll_global ['SDL::NCI'], 'SetVideoMode'
+    SetVideoMode = get_hll_global ['SDL'; 'NCI'], 'SetVideoMode'
 
     .local pmc screen
     screen = SetVideoMode( width, height, bpp, flags )
@@ -129,7 +129,7 @@
     # defined $I0, screen
 
     .local pmc main_surface
-    new main_surface, 'SDL::Surface'
+    new main_surface, ['SDL'; 'Surface']
 
     main_surface.'wrap_surface'( screen )
 
@@ -178,7 +178,7 @@
 
 .sub quit :method
     .local pmc SDL_Quit
-    SDL_Quit = get_hll_global ['SDL::NCI'], 'Quit'
+    SDL_Quit = get_hll_global ['SDL'; 'NCI'], 'Quit'
     SDL_Quit()
 .end
 

Modified: branches/ops_pct/runtime/parrot/library/SDL/Button.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/Button.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/Button.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -11,7 +11,7 @@
     $P0 = "filename/to/image.png"
 
     # create the button
-    button = new 'SDL::Button', $P0
+    button = new ['SDL'; 'Button'], $P0
 
     # set the position
     button.'xpos'( 10 )
@@ -41,16 +41,16 @@
 
 =cut
 
-.namespace ['SDL::Button']
+.namespace ['SDL'; 'Button']
 
 .sub __onload :load
     .local pmc class
-    class = get_class 'SDL::Button'
+    class = get_class ['SDL'; 'Button']
     if_null class, define_class
     .return()
 
   define_class:
-    newclass     class, 'SDL::Button'
+    newclass     class, ['SDL'; 'Button']
     addattribute class, 'image'
     addattribute class, 'status'
     addattribute class, 'states'
@@ -66,7 +66,7 @@
 .sub init_pmc :vtable :method
     .param pmc name
 
-    $P0 = new 'SDL::Image', name
+    $P0 = new ['SDL'; 'Image'], name
     setattribute self, 'image', $P0
 
     $P0 = new 'Integer'
@@ -77,7 +77,7 @@
     $P0 = 1
     setattribute self, 'states', $P0
 
-    $P0 = new 'SDL::Rect'
+    $P0 = new ['SDL'; 'Rect']
     setattribute self, 'rect', $P0
 
     $P0 = new 'Integer'
@@ -173,7 +173,7 @@
     drect   = getattribute self, 'rect'
     clicked = getattribute self, 'clicked'
 
-    srect   = new 'SDL::Rect'
+    srect   = new ['SDL'; 'Rect']
 
     $I1 = drect.'height'()
     srect.'height'( $I1 )

Modified: branches/ops_pct/runtime/parrot/library/SDL/Color.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/Color.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/Color.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -11,7 +11,7 @@
 
     # create a new SDL::Color object
     .local pmc color
-    color = new 'SDL::Color'
+    color = new ['SDL'; 'Color']
 
     # set the color values; this one's blue
     color.'init'( 'r' => 0, 'g' => 0, 'b' => 255 )
@@ -41,13 +41,13 @@
 
 =cut
 
-.namespace [ 'SDL::Color' ]
+.namespace [ 'SDL'; 'Color' ]
 
 .sub _initialize  :load
 
     .local pmc color_class
 
-    newclass color_class, 'SDL::Color'
+    newclass color_class, ['SDL'; 'Color']
 
     addattribute color_class, 'color'
     addattribute color_class, 'r'
@@ -86,7 +86,7 @@
     .param int blue  :named( 'b' )
 
     .local pmc fetch_layout
-    get_hll_global fetch_layout, ['SDL::NCI'], 'fetch_layout'
+    get_hll_global fetch_layout, ['SDL'; 'NCI'], 'fetch_layout'
 
     .local pmc layout
     layout = fetch_layout( 'Color' )

Modified: branches/ops_pct/runtime/parrot/library/SDL/Constants.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/Constants.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/Constants.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -24,7 +24,7 @@
 
 =cut
 
-.namespace [ 'SDL::Constants' ]
+.namespace [ 'SDL'; 'Constants' ]
 
 .sub _initialize :load
 
@@ -47,7 +47,7 @@
 
 	key_names = new 'FixedPMCArray'
 	key_names = 323
-	set_hll_global ['SDL::Constants'], 'key_names', key_names
+	set_hll_global ['SDL'; 'Constants'], 'key_names', key_names
 
 	# list created with:
 	# $ cat /usr/include/SDL/SDL_keysym.h |

Modified: branches/ops_pct/runtime/parrot/library/SDL/Event.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/Event.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/Event.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -12,7 +12,7 @@
 
     # create a new SDL::Event object
     .local pmc event
-    event = new 'SDL::Event'
+    event = new ['SDL'; 'Event']
 
     # ... create a new event_handler and its hander_args
 
@@ -39,12 +39,12 @@
 
 =cut
 
-.namespace [ 'SDL::Event' ]
+.namespace [ 'SDL'; 'Event' ]
 
 .sub _initialize :load
     .local pmc   event_class
 
-    newclass     event_class, 'SDL::Event'
+    newclass     event_class, ['SDL'; 'Event']
     addattribute event_class, 'event'
 .end
 
@@ -60,7 +60,7 @@
 
 .sub 'init' :method
     .local pmc  fetch_layout
-    get_hll_global fetch_layout, ['SDL::NCI'], 'fetch_layout'
+    get_hll_global fetch_layout, ['SDL'; 'NCI'], 'fetch_layout'
 
     .local pmc layout
     layout = fetch_layout( 'Event::Generic' )
@@ -92,7 +92,7 @@
 
   assign_event:
     .local pmc  fetch_layout
-    get_hll_global fetch_layout, ['SDL::NCI'], 'fetch_layout'
+    get_hll_global fetch_layout, ['SDL'; 'NCI'], 'fetch_layout'
 
     .local pmc layout
     .local string ename
@@ -189,7 +189,7 @@
     key_sym = event['sym']
 
     .local pmc key_names
-    get_hll_global key_names, ['SDL::Constants'], 'key_names'
+    get_hll_global key_names, ['SDL'; 'Constants'], 'key_names'
 
     .local string key_name
     key_name = key_names[ key_sym ]
@@ -241,13 +241,13 @@
 
     if check_interval < 0.0001 goto use_wait
     polling  = 1
-    GetEvent = get_hll_global ['SDL::NCI'], 'PollEvent'
+    GetEvent = get_hll_global ['SDL'; 'NCI'], 'PollEvent'
 
     branch loop
 
 use_wait:
     polling  = 0
-    GetEvent = get_hll_global ['SDL::NCI'], 'WaitEvent'
+    GetEvent = get_hll_global ['SDL'; 'NCI'], 'WaitEvent'
 
 loop:
     event    = self.'event'( 'Generic' )
@@ -288,7 +288,7 @@
     event = self.'event'()
 
     .local pmc  PollEvent
-    get_hll_global PollEvent, ['SDL::NCI'], 'PollEvent'
+    get_hll_global PollEvent, ['SDL'; 'NCI'], 'PollEvent'
 
     .local int event_waiting
     event_waiting = PollEvent( event )

Modified: branches/ops_pct/runtime/parrot/library/SDL/EventHandler.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/EventHandler.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/EventHandler.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -15,8 +15,8 @@
     .local pmc parent_class
     .local pmc class_type
 
-    get_class parent_class, 'SDL::EventHandler'
-    subclass class_type, parent_class, 'My::Event::Handler'
+    get_class parent_class, ['SDL'; 'EventHandler']
+    subclass class_type, parent_class, ['My'; 'Event'; 'Handler']
 
     # define your overridden methods
     .sub key_down_down :method
@@ -40,7 +40,7 @@
 
     # create a new event object
     .local pmc event
-    event = new 'SDL::Event'
+    event = new ['SDL'; 'Event']
 
     # ... and process events
     event.'process_events'( event_handler, handler_args )
@@ -59,12 +59,12 @@
 
 =cut
 
-.namespace [ 'SDL::EventHandler' ]
+.namespace [ 'SDL'; 'EventHandler' ]
 
 .sub _initialize :load
     .local pmc   handler_class
 
-    newclass     handler_class, 'SDL::EventHandler'
+    newclass     handler_class, ['SDL'; 'EventHandler']
     addattribute handler_class, 'args'
 
     .return()

Modified: branches/ops_pct/runtime/parrot/library/SDL/Font.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/Font.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/Font.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -12,7 +12,7 @@
 
     # create a new SDL::Font object
     .local pmc font
-    font = new 'SDL::Font'
+    font = new ['SDL'; 'Font']
 
     font.'init'( 'font_file'  => 'myfont.ttf', 'point_size' => 48 )
 
@@ -35,7 +35,7 @@
 
 =cut
 
-.namespace [ 'SDL::Font' ]
+.namespace [ 'SDL'; 'Font' ]
 
 .sub _sdl_init :load
     .local pmc init_ttf
@@ -44,7 +44,7 @@
 
     .local pmc   font_class
 
-    newclass     font_class, 'SDL::Font'
+    newclass     font_class, ['SDL'; 'Font']
     addattribute font_class, 'font'
     addattribute font_class, 'size'
 
@@ -65,7 +65,7 @@
     .param int    font_size :named( 'point_size' )
 
     .local pmc OpenFont
-    OpenFont = get_hll_global ['SDL::NCI::TTF'], 'OpenFont'
+    OpenFont = get_hll_global ['SDL'; 'NCI'; 'TTF'], 'OpenFont'
 
     .local pmc font
     font = OpenFont( font_name, font_size )
@@ -106,7 +106,7 @@
     h = font_surface.'height'()
 
     .local pmc rect
-    rect = new 'SDL::Rect'
+    rect = new ['SDL'; 'Rect']
 
     rect.'init'( 'x' => 0, 'y' => 0, 'height' => h, 'width' => w )
 
@@ -133,12 +133,12 @@
     font = self.'font'()
 
     .local pmc font_surface
-    font_surface = new 'SDL::Surface'
+    font_surface = new ['SDL'; 'Surface']
     font_surface.'init'( 'height' => 0, 'width' => 0 )
 
 # RNH use RenderUTF8 in preference to RenderText by default
     .local pmc RenderUTF8_Solid
-    get_hll_global RenderUTF8_Solid, ['SDL::NCI::TTF'], 'RenderUTF8_Solid'
+    get_hll_global RenderUTF8_Solid, ['SDL'; 'NCI'; 'TTF'], 'RenderUTF8_Solid'
 
     .local int color
 # RNH font routine takes color in the order rgb rather than bgr used by surface.pir hence cannot rely on color.get_integer

Modified: branches/ops_pct/runtime/parrot/library/SDL/Image.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/Image.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/Image.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -12,7 +12,7 @@
 
     # create a new SDL::Image object
     .local pmc image
-    image = new 'SDL::Image'
+    image = new ['SDL'; 'Image']
     image.'init'( file => 'examples/sdl/parrot_small.png' )
 
     # blit and update this object as you like!
@@ -33,12 +33,12 @@
 
 =cut
 
-.namespace [ 'SDL::Image' ]
+.namespace [ 'SDL'; 'Image' ]
 
 .sub _initialize :load
     .local pmc image_class
 
-    image_class = get_class 'SDL::Image'
+    image_class = get_class ['SDL'; 'Image']
     if_null image_class, create_class
     .return()
 
@@ -47,7 +47,7 @@
     init_image = get_hll_global ['SDL'], '_init_image'
     init_image()
 
-    subclass image_class, 'SDL::Surface', 'SDL::Image'
+    subclass image_class, ['SDL'; 'Surface'], ['SDL'; 'Image']
     .return()
 .end
 
@@ -62,7 +62,7 @@
     .param string filename :named( 'file' )
 
     .local pmc IMG_Load
-    IMG_Load = get_hll_global ['SDL::NCI'], 'IMG_Load'
+    IMG_Load = get_hll_global ['SDL'; 'NCI'], 'IMG_Load'
 
     .local pmc image
 

Modified: branches/ops_pct/runtime/parrot/library/SDL/LCD.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/LCD.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/LCD.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -8,7 +8,7 @@
 =head1 SYNOPSIS
 
     # create an LCD
-    lcd = new 'SDL::LCD'
+    lcd = new ['SDL'; 'LCD']
 
     # set the LCD position
     lcd."xpos"( 10 )
@@ -36,11 +36,11 @@
 
 =cut
 
-.namespace ["SDL::LCD"]
+.namespace ['SDL'; 'LCD']
 
 .sub __onload :load
     .local pmc class
-    class = get_class 'SDL::LCD'
+    class = get_class ['SDL'; 'LCD']
     if_null class, create_class
     .return()
 
@@ -49,11 +49,11 @@
     load_bytecode 'SDL/Rect.pir'
 
     .local pmc digits
-    digits = new 'SDL::Image'
+    digits = new ['SDL'; 'Image']
     digits.'init'( 'runtime/parrot/library/SDL/LCD.png' )
     set_global 'digits', digits
 
-    newclass class, 'SDL::LCD'
+    newclass class, ['SDL'; 'LCD']
     addattribute class, 'value'
     addattribute class, 'numdigits'
     addattribute class, 'xpos'
@@ -162,14 +162,14 @@
     val = $S0
 LEN_OK:
 
-    rect           = new 'SDL::Rect'
+    rect           = new ['SDL'; 'Rect']
     rect.'init'()
     rect.'width'( 21 )
     rect.'height'( 21 )
     rect.'x'( 0 )
     rect.'y'( 0 )
 
-    drect          = new 'SDL::Rect'
+    drect          = new ['SDL'; 'Rect']
     drect.'init'()
     drect.'width'( 10 )
     drect.'height'( 21 )

Modified: branches/ops_pct/runtime/parrot/library/SDL/Rect.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/Rect.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/Rect.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -12,7 +12,7 @@
 
     # create a new SDL::Rect object
     .local pmc rect
-    rect = new 'SDL::Rect'
+    rect = new ['SDL'; 'Rect']
 
     # now set the arguments on the object
     rect.'init'( 'x' => 270, 'y' => 190, 'height' => 100, 'width'=> 100 )
@@ -33,16 +33,16 @@
 
 =cut
 
-.namespace [ 'SDL::Rect' ]
+.namespace [ 'SDL'; 'Rect' ]
 
 .sub _initialize :load
     .local pmc class
-    class = get_class 'SDL::Rect'
+    class = get_class ['SDL'; 'Rect']
     if_null class, create_class
     .return()
 
   create_class:
-    newclass     class, 'SDL::Rect'
+    newclass     class, ['SDL'; 'Rect']
     addattribute class, '_rect'
     .return ()
 .end
@@ -105,7 +105,7 @@
 
   check_done:
     .local pmc  fetch_layout
-    get_hll_global fetch_layout, ['SDL::NCI'], 'fetch_layout'
+    get_hll_global fetch_layout, ['SDL'; 'NCI'], 'fetch_layout'
 
     .local pmc layout
     layout = fetch_layout( 'Rect' )

Modified: branches/ops_pct/runtime/parrot/library/SDL/Sprite.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/Sprite.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/Sprite.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -14,7 +14,7 @@
 
     # create a new SDL::Sprite object
     .local pmc sprite
-    sprite = new 'SDL::Sprite'
+    sprite = new ['SDL'; 'Sprite']
 
     # set the sprite's arguments
     sprite.'init'( 'surface'  => image, 'source_x' =>     0, 'source_y' =>     0, 'dest_x'   =>   270, 'dest_y'   =>   212, 'bgcolor'  => black )
@@ -43,12 +43,12 @@
 
 =cut
 
-.namespace [ 'SDL::Sprite' ]
+.namespace [ 'SDL'; 'Sprite' ]
 
 .sub _initialize :load
 
     .local   pmc sprite_class
-    newclass     sprite_class, 'SDL::Sprite'
+    newclass     sprite_class, ['SDL'; 'Sprite']
 
     addattribute sprite_class, 'surface'
     addattribute sprite_class, 'source_rect'
@@ -143,14 +143,14 @@
 done:
     # first the source rectangle
     .local pmc source_rect
-    source_rect = new 'SDL::Rect'
+    source_rect = new ['SDL'; 'Rect']
     source_rect.'init'( 'x' => source_x, 'y' => source_y, 'height' => height, 'width' => width )
 
     setattribute self, 'source_rect', source_rect
 
     # now the dest rectangle
     .local pmc rect
-    rect = new 'SDL::Rect'
+    rect = new ['SDL'; 'Rect']
     rect.'init'( 'x' => dest_x, 'y' => dest_y )
 
     setattribute self, 'rect', rect
@@ -158,7 +158,7 @@
 
     # and now the previous rect
     .local pmc prev_rect
-    prev_rect = new 'SDL::Rect'
+    prev_rect = new ['SDL'; 'Rect']
     prev_rect.'init'( 'x' => source_x, 'y' => source_y, 'height' => height, 'width' => width )
 
     setattribute self, 'prev_rect', prev_rect
@@ -170,13 +170,13 @@
 
     # the drawn rect
     .local pmc drawn_rect
-    drawn_rect = new 'SDL::Rect'
+    drawn_rect = new ['SDL'; 'Rect']
     drawn_rect.'init'( 'x' => source_x, 'y' => source_y, 'height' => height, 'width' => width )
     setattribute self, 'drawn_rect', drawn_rect
 
     # the undrawn rect
     .local pmc undrawn_rect
-    undrawn_rect = new 'SDL::Rect'
+    undrawn_rect = new ['SDL'; 'Rect']
     undrawn_rect.'init'( 'x' => source_x, 'y' => source_y, 'height' => height, 'width' => width )
     setattribute self, 'undrawn_rect', undrawn_rect
 

Modified: branches/ops_pct/runtime/parrot/library/SDL/StopWatch.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/StopWatch.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/StopWatch.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -8,7 +8,7 @@
 =head1 SYNOPSIS
 
     # create the stopwatch
-    watch = new 'SDL::StopWatch', screen
+    watch = new ['SDL'; 'StopWatch'], screen
 
     # set its position
     watch.'xpos'( 5 )
@@ -33,18 +33,18 @@
 
 .include "timer.pasm"
 .include "iterator.pasm"
-.namespace ['SDL::StopWatch']
+.namespace ['SDL'; 'StopWatch']
 
 .sub __onload :load
     .local pmc class
-    class = get_class 'SDL::StopWatch'
+    class = get_class ['SDL'; 'StopWatch']
     if_null class, create_class
     .return()
 
   create_class:
     load_bytecode "SDL/LCD.pir"
-    class = get_class 'SDL::LCD'
-    class = subclass class, 'SDL::StopWatch'
+    class = get_class ['SDL'; 'LCD']
+    class = subclass class, ['SDL'; 'StopWatch']
     addattribute $P0, 'time'
     addattribute $P0, 'precision'
     addattribute $P0, 'start'
@@ -125,7 +125,7 @@
     time $N0
     start = $N0
 
-    $P0 = find_global "SDL::StopWatch::Timer", "addWatch"
+    $P0 = find_global ['SDL'; 'StopWatch'; 'Timer'], "addWatch"
     $P0( self )
 END:
 .end
@@ -161,7 +161,7 @@
     total = $N0
     start = 0
 
-    $P0   = find_global "SDL::StopWatch::Timer", "removeWatch"
+    $P0   = find_global ['SDL'; 'StopWatch'; 'Timer'], "removeWatch"
     $P0( self )
 END:
 .end
@@ -244,20 +244,20 @@
 
     .local pmc screen
     screen = getattribute self, 'screen'
-    $P0    = find_global "SDL::LCD", "draw"
+    $P0    = find_global ['SDL'; 'LCD'], "draw"
 
     $P0( screen )
 .end
 
-.namespace ["SDL::StopWatch::Timer"]
+.namespace ['SDL'; 'StopWatch'; 'Timer']
 
 .sub __onload :load
     # XXX: an old array will be overwritten when loading this file again
     $P0 = new 'ResizablePMCArray'
-    store_global "SDL::StopWatch::Timer", "array", $P0
+    store_global ['SDL'; 'StopWatch'; 'Timer'], "array", $P0
 
     $P0 = new 'FixedPMCArray'
-    $P1 = find_global "SDL::StopWatch::Timer", "tick"
+    $P1 = find_global ['SDL'; 'StopWatch'; 'Timer'], "tick"
     $P0 = 8
     $P0[0] = .PARROT_TIMER_NSEC
     $P0[1] = 0.1
@@ -269,15 +269,15 @@
     $P0[7] = 0
 
     $P0 = new 'Timer', $P0
-    store_global "SDL::StopWatch::Timer", "timer", $P0
+    store_global ['SDL'; 'StopWatch'; 'Timer'], "timer", $P0
 .end
 
 .sub tick
     .local pmc timer
     .local pmc array
 
-    timer = find_global "SDL::StopWatch::Timer", "timer"
-    array = find_global "SDL::StopWatch::Timer", "array"
+    timer = find_global ['SDL'; 'StopWatch'; 'Timer'], "timer"
+    array = find_global ['SDL'; 'StopWatch'; 'Timer'], "array"
 
     $I0 = array
     if $I0 == 0 goto DISABLE
@@ -303,8 +303,8 @@
     .local pmc timer
     .local pmc array
 
-    timer = find_global "SDL::StopWatch::Timer", "timer"
-    array = find_global "SDL::StopWatch::Timer", "array"
+    timer = find_global ['SDL'; 'StopWatch'; 'Timer'], "timer"
+    array = find_global ['SDL'; 'StopWatch'; 'Timer'], "array"
 
     push array, obj
     timer[.PARROT_TIMER_RUNNING] = 1
@@ -315,8 +315,8 @@
     .local pmc timer
     .local pmc array
 
-    timer = find_global "SDL::StopWatch::Timer", "timer"
-    array = find_global "SDL::StopWatch::Timer", "array"
+    timer = find_global ['SDL'; 'StopWatch'; 'Timer'], "timer"
+    array = find_global ['SDL'; 'StopWatch'; 'Timer'], "array"
 
     # XXX: stops all watches ATM; just remove the timer from the array
     timer[.PARROT_TIMER_RUNNING] = 0

Modified: branches/ops_pct/runtime/parrot/library/SDL/Surface.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SDL/Surface.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/SDL/Surface.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -11,7 +11,7 @@
     load_bytecode 'SDL/Surface.pir'
 
     # create a new SDL::Surface object
-    surface = new 'SDL::Surface'
+    surface = new ['SDL'; 'Surface']
     surface.'init'( 'height' => 480, 'width' => 640 )
 
     # ... blit to, fill, update, and flip this surface as necessary
@@ -32,16 +32,16 @@
 
 =cut
 
-.namespace [ 'SDL::Surface' ]
+.namespace [ 'SDL'; 'Surface' ]
 
 .sub _initialize :load
     .local pmc class
-    class = get_class 'SDL::Surface'
+    class = get_class ['SDL'; 'Surface']
     if_null class, create_class
     .return()
 
   create_class:
-    newclass     class, 'SDL::Surface'
+    newclass     class, ['SDL'; 'Surface']
     addattribute class, 'surface'
 .end
 
@@ -92,7 +92,7 @@
     alpha = 0
 
   create_surface:
-    SDL_CreateRGBSurface = get_hll_global ['SDL::NCI'], 'CreateRGBSurface'
+    SDL_CreateRGBSurface = get_hll_global ['SDL'; 'NCI'], 'CreateRGBSurface'
 
     .local pmc surface
     surface = SDL_CreateRGBSurface( flags, width, height, depth, red, green, blue, alpha )
@@ -115,7 +115,7 @@
     .param pmc surface_struct
 
     .local pmc  fetch_layout
-    get_hll_global fetch_layout, ['SDL::NCI'], 'fetch_layout'
+    get_hll_global fetch_layout, ['SDL'; 'NCI'], 'fetch_layout'
 
     .local pmc layout
     layout = fetch_layout( 'Surface' )
@@ -207,7 +207,7 @@
     .param pmc color_object
 
     .local pmc SDL_FillRect
-    SDL_FillRect = get_hll_global ['SDL::NCI'], 'FillRect'
+    SDL_FillRect = get_hll_global ['SDL'; 'NCI'], 'FillRect'
 
     .local pmc surface
     getattribute surface, self, 'surface'
@@ -248,7 +248,7 @@
     width  = rect.'width'()
 
     .local pmc SDL_UpdateRect
-    SDL_UpdateRect = get_hll_global ['SDL::NCI'], 'UpdateRect'
+    SDL_UpdateRect = get_hll_global ['SDL'; 'NCI'], 'UpdateRect'
 
     SDL_UpdateRect( surface, x, y, width, height )
 .end
@@ -267,7 +267,7 @@
     set count, rects
 
     .local pmc  fetch_layout
-    get_hll_global fetch_layout, ['SDL::NCI'], 'fetch_layout'
+    get_hll_global fetch_layout, ['SDL'; 'NCI'], 'fetch_layout'
 
     .local pmc rect_array_layout
 
@@ -309,7 +309,7 @@
     getattribute surface, self, 'surface'
 
     .local pmc UpdateRects
-    UpdateRects = get_hll_global ['SDL::NCI'], 'UpdateRects'
+    UpdateRects = get_hll_global ['SDL'; 'NCI'], 'UpdateRects'
 
     UpdateRects( surface, count, rect_array )
 .end
@@ -327,7 +327,7 @@
     getattribute surface, self, 'surface'
 
     .local pmc SDL_Flip
-    SDL_Flip = get_hll_global ['SDL::NCI'], 'Flip'
+    SDL_Flip = get_hll_global ['SDL'; 'NCI'], 'Flip'
 
     SDL_Flip( surface )
 
@@ -351,7 +351,7 @@
     .param pmc dest
 
     .local pmc SDL_BlitSurface
-    SDL_BlitSurface = get_hll_global ['SDL::NCI'], 'BlitSurface'
+    SDL_BlitSurface = get_hll_global ['SDL'; 'NCI'], 'BlitSurface'
 
     .local pmc source_surface
     .local pmc dest_surface
@@ -400,7 +400,7 @@
     getattribute surface, self, 'surface'
 
     .local pmc SetColorKey
-    SetColorKey = get_hll_global ['SDL::NCI'], 'SetColorKey'
+    SetColorKey = get_hll_global ['SDL'; 'NCI'], 'SetColorKey'
 
     SetColorKey( surface, 8, color_value )
 .end
@@ -435,7 +435,7 @@
     surface = self.'surface'()
 
     .local pmc  LockSurface
-    get_hll_global LockSurface, ['SDL::NCI'], 'LockSurface'
+    get_hll_global LockSurface, ['SDL'; 'NCI'], 'LockSurface'
 
     LockSurface( surface )
 
@@ -453,7 +453,7 @@
     surface = self.'surface'()
 
     .local pmc  UnlockSurface
-    get_hll_global UnlockSurface, ['SDL::NCI'], 'UnlockSurface'
+    get_hll_global UnlockSurface, ['SDL'; 'NCI'], 'UnlockSurface'
 
     UnlockSurface( surface )
 

Modified: branches/ops_pct/runtime/parrot/library/Test/Builder/Test.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Test/Builder/Test.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/Test/Builder/Test.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -30,20 +30,20 @@
     addattribute tbtb_class, 'todo'
 
     .local pmc tbtp_class
-    subclass tbtp_class, tbtb_class, 'Test::Builder::Test::Pass'
+    subclass tbtp_class, tbtb_class, ['Test'; 'Builder'; 'Test'; 'Pass']
 
     .local pmc tbtf_class
-    subclass tbtf_class, tbtb_class, 'Test::Builder::Test::Fail'
+    subclass tbtf_class, tbtb_class, ['Test'; 'Builder'; 'Test'; 'Fail']
 
     .local pmc tbtwr_class
-    subclass tbtwr_class, tbtb_class, 'Test::Builder::Test::WithReason'
+    subclass tbtwr_class, tbtb_class, ['Test'; 'Builder'; 'Test'; 'WithReason']
     addattribute tbtwr_class, 'reason'
 
     .local pmc tbts_class
-    subclass tbts_class, tbtwr_class, 'Test::Builder::Test::Skip'
+    subclass tbts_class, tbtwr_class, ['Test'; 'Builder'; 'Test'; 'Skip']
 
     .local pmc tbtt_class
-    subclass tbtt_class, tbtwr_class, 'Test::Builder::Test::TODO'
+    subclass tbtt_class, tbtwr_class, ['Test'; 'Builder'; 'Test'; 'TODO']
 .end
 
 =item C<create( args_hash )>
@@ -86,37 +86,32 @@
 .sub create
     .param pmc args
 
-    .local string test_class
+    .local pmc test
     .local int type_flag
 
   CHECK_TODO:
     type_flag = args['todo']
     unless type_flag goto CHECK_SKIP
 
-    test_class = 'Test::Builder::Test::TODO'
-    goto CREATE_TEST
+    test = new ['Test'; 'Builder'; 'Test'; 'TODO'], args
+    .return( test )
 
   CHECK_SKIP:
     type_flag = args['skip']
     unless type_flag goto CHECK_PASS
 
-    test_class = 'Test::Builder::Test::Skip'
-    goto CREATE_TEST
+    test = new ['Test'; 'Builder'; 'Test'; 'Skip'], args
+    .return( test )
 
   CHECK_PASS:
     type_flag = args['passed']
     unless type_flag goto CHECK_FAIL
 
-    test_class = 'Test::Builder::Test::Pass'
-    goto CREATE_TEST
+    test = new ['Test'; 'Builder'; 'Test'; 'Pass'], args
+    .return( test )
 
   CHECK_FAIL:
-    test_class = 'Test::Builder::Test::Fail'
-    goto CREATE_TEST
-
-  CREATE_TEST:
-    .local pmc test
-    test = new test_class, args
+    test = new ['Test'; 'Builder'; 'Test'; 'Fail'], args
     .return( test )
 .end
 
@@ -246,12 +241,12 @@
 .end
 
 # no code here
-.namespace [ 'Test::Builder::Test::Pass' ]
+.namespace [ 'Test'; 'Builder'; 'Test'; 'Pass' ]
 
 # no code here either
-.namespace [ 'Test::Builder::Test::Fail' ]
+.namespace [ 'Test'; 'Builder'; 'Test'; 'Fail' ]
 
-.namespace [ 'Test::Builder::Test::WithReason' ]
+.namespace [ 'Test'; 'Builder'; 'Test'; 'WithReason' ]
 
 .sub init_pmc :vtable :method
     .param pmc args
@@ -282,7 +277,7 @@
     .local pmc status
     .local pmc parent_status
 
-    parent_status = get_hll_global ['Test::Builder::Test::WithReason'], 'status'
+    parent_status = get_hll_global ['Test'; 'Builder'; 'Test'; 'WithReason'], 'status'
     status        = parent_status()
     reason        = self.'reason'()
 
@@ -291,7 +286,7 @@
     .return( status )
 .end
 
-.namespace [ 'Test::Builder::Test::Skip' ]
+.namespace [ 'Test'; 'Builder'; 'Test'; 'Skip' ]
 
 .sub report :method
     .local pmc    reason
@@ -317,14 +312,14 @@
     .local pmc status
     .local pmc parent_status
 
-    parent_status = get_hll_global ['Test::Builder::Test::WithReason'], 'status'
+    parent_status = get_hll_global ['Test'; 'Builder'; 'Test'; 'WithReason'], 'status'
     status        = parent_status()
 
     set status['skip'], 1
     .return( status )
 .end
 
-.namespace [ 'Test::Builder::Test::TODO' ]
+.namespace [ 'Test'; 'Builder'; 'Test'; 'TODO' ]
 
 .sub report :method
     .local pmc    passed
@@ -362,7 +357,7 @@
     .local pmc status
     .local pmc parent_status
 
-    parent_status = get_hll_global ['Test::Builder::Test::WithReason'], 'status'
+    parent_status = get_hll_global ['Test'; 'Builder'; 'Test'; 'WithReason'], 'status'
     status        = parent_status()
     passed        = self.'passed'()
 
@@ -384,7 +379,7 @@
 
 =head1 COPYRIGHT
 
-Copyright (C) 2005-2008, Parrot Foundation.
+Copyright (C) 2005-2010, Parrot Foundation.
 
 =cut
 

Modified: branches/ops_pct/runtime/parrot/library/Test/More.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Test/More.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/Test/More.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -35,6 +35,8 @@
 
     is( some_pmc, another_pmc, 'pmc comparison uses "eq" op' )
 
+    is_null( some_pmc, 'pmc was null' )
+
     diag( 'this may take a while' )
     is_deeply( some_deep_pmc, another_deep_pmc, 'deep structure comparison' )
 
@@ -155,6 +157,20 @@
 
 =cut
 
+.sub one_or_both_null
+    .param pmc left
+    .param pmc right
+
+    .local int one
+    .local int both
+
+    $I0 = isnull left
+    $I1 = isnull right
+    or one, $I0, $I1
+    and both, $I0, $I1
+    .return (one, both)
+.end
+
 .sub is :multi(PMC, Integer)
     .param pmc left
     .param pmc right
@@ -164,11 +180,17 @@
     .local pmc test
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
-    .local int l, r, pass
+    .local int pass
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
+
+    .local int l, r
     l    = left
     r    = right
+
     pass = iseq l, r
 
+report:
     test.'ok'( pass, description )
     if pass goto done
 
@@ -176,17 +198,27 @@
     .local string l_string
     .local string r_string
 
+    l_string    = 'null'
+    if null left goto r_str
     l_string    = left
+
+r_str:
+    r_string    = 'null'
+    if null right goto diag
     r_string    = right
 
+diag:
     diagnostic = _make_diagnostic( l_string, r_string )
     test.'diag'( diagnostic )
   done:
 .end
 
-.sub is :multi(_, Float)
-    .param num    left
-    .param num    right
+#.sub is :multi(_, Float)
+#    .param num    left
+#    .param num    right
+.sub is :multi(PMC, Float)
+    .param pmc left
+    .param pmc right
     .param string description :optional
     .param int    have_desc   :opt_flag
     .param num    precision   :optional
@@ -195,15 +227,23 @@
     .local pmc test
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
+    .local int pass
+
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
+
+    .local num l, r
+    l = left
+    r = right
+
     if have_prec goto check_precision
 
-    .local int pass
-    pass = iseq left, right
+    pass = iseq l, r
     goto report
 
   check_precision:
     .local num diff
-    diff = left - right
+    diff = l - r
     diff = abs diff
     pass = isle diff, precision
 
@@ -215,10 +255,17 @@
     .local string l_string
     .local string r_string
 
+    l_string    = 'null'
+    if null left goto r_str
     l_string    = left
+
+r_str:
+    r_string    = 'null'
+    if null right goto diag
     r_string    = right
 
-    diagnostic = _make_diagnostic( left, right )
+diag:
+    diagnostic = _make_diagnostic( l_string, r_string )
     test.'diag'( diagnostic )
   done:
 .end
@@ -232,12 +279,16 @@
     .local pmc test
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
-    .local string l, r
     .local int pass
-    l    = left
-    r    = right
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
+
+    .local string l, r
+    l = left
+    r = right
     pass = iseq l, r
 
+report:
     test.'ok'( pass, description )
     if pass goto done
 
@@ -245,9 +296,16 @@
     .local string l_string
     .local string r_string
 
+    l_string    = 'null'
+    if null left goto r_str
     l_string    = left
+
+r_str:
+    r_string    = 'null'
+    if null right goto diag
     r_string    = right
 
+diag:
     diagnostic = _make_diagnostic( l_string, r_string )
     test.'diag'( diagnostic )
   done:
@@ -263,8 +321,11 @@
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
     .local int pass
-    .local int does_type
 
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto result
+
+    .local int does_type
     does_type = does right, 'String'
     if does_type goto check_string
 
@@ -300,9 +361,16 @@
     .local string l_string
     .local string r_string
 
+    l_string    = 'null'
+    if null left goto r_str
     l_string    = left
+
+r_str:
+    r_string    = 'null'
+    if null right goto diag
     r_string    = right
 
+diag:
     diagnostic = _make_diagnostic( l_string, r_string )
     test.'diag'( diagnostic )
   done:
@@ -324,7 +392,9 @@
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
     .local int pass
-    pass       = 0
+
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
 
     if left != right goto pass_it
     goto report
@@ -359,7 +429,9 @@
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
     .local int pass
-    pass = 0
+
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
 
     ne left, right, pass_it
     goto report
@@ -394,7 +466,9 @@
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
     .local int pass
-    pass = 0
+
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
 
     ne left, right, pass_it
     goto report
@@ -428,8 +502,12 @@
     .local pmc test
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
-    # this comparison may not work in general, but it's worth trying
     .local int pass
+
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
+
+    # this comparison may not work in general, but it's worth trying
     pass = isne left, right
 
   report:
@@ -848,6 +926,37 @@
     .return( equal )
 .end
 
+=item C<is_null( pmc, description )>
+
+Records a passing test if the PMC passed in is null, fails otherwise.
+
+=cut
+
+.sub is_null
+    .param pmc victim
+    .param string description :optional
+
+    .local pmc test
+    get_hll_global test, [ 'Test'; 'More' ], '_test'
+
+    .local int passed
+    passed = isnull victim
+
+    test.'ok'( passed, description )
+    if passed goto done
+
+    .local string v_string
+    v_string    = 'null'
+    if null victim goto diag
+    v_string    = victim
+
+  diag:
+    .local string diagnostic
+    diagnostic = _make_diagnostic( v_string, 'null')
+    test.'diag'( diagnostic )
+  done:
+.end
+
 =item C<dies_ok( codestring, description )>
 
 Takes PIR code in C<codestring> and an optional message in C<description>.

Modified: branches/ops_pct/runtime/parrot/library/YAML/Dumper.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/YAML/Dumper.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/YAML/Dumper.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -3,19 +3,19 @@
 
 .sub __library_data_dumper_onload :load
     .local pmc yd_class
-    yd_class = get_class "YAML::Dumper"
+    yd_class = get_class ['YAML'; 'Dumper']
     if null yd_class goto load_library
 
     goto END
 
   load_library:
         load_bytecode 'YAML/Dumper/Default.pbc'
-        newclass $P0, "YAML::Dumper"
+        newclass $P0, ['YAML'; 'Dumper']
 END:
     .return ()
 .end
 
-.namespace ["YAML::Dumper"]
+.namespace ['YAML'; 'Dumper']
 
 .sub yaml :method
     .param pmc dump
@@ -36,7 +36,7 @@
     .local pmc ydd_class
 
     push_eh ERROR2
-        ydd_class = get_class "YAML::Dumper::Default"
+        ydd_class = get_class ['YAML'; 'Dumper'; 'Default']
         style     = ydd_class."new"()
     pop_eh
 
@@ -52,14 +52,14 @@
 
 ERROR2:
     pop_eh
-    print "can not find class YAML::Dumper::Default!\n"
+    print "can not find class ['YAML'; 'Dumper'; 'Default']!\n"
     end
     .return ( 0 )
 ERROR:
     print "Syntax:\n"
-    print "YAML::Dumper::yaml( pmc )\n"
-    print "YAML::Dumper::yaml( pmc, name )\n"
-    print "YAML::Dumper::yaml( pmc, name, indent )\n"
+    print "yaml( pmc )\n"
+    print "yaml( pmc, name )\n"
+    print "yaml( pmc, name, indent )\n"
     .return ( 0 )
 .end
 

Modified: branches/ops_pct/runtime/parrot/library/YAML/Dumper/Base.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/YAML/Dumper/Base.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/YAML/Dumper/Base.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -28,12 +28,12 @@
 
 .sub __library_data_dumper_base_onload :load
     .local pmc ydb_class
-    ydb_class = get_class "YAML::Dumper::Base"
+    ydb_class = get_class ['YAML'; 'Dumper'; 'Base']
     if null ydb_class goto create_ydb
     goto END
 
   create_ydb:
-    newclass $P0, "YAML::Dumper::Base"
+    newclass $P0, ['YAML'; 'Dumper'; 'Base']
     addattribute $P0, "yaml"
     addattribute $P0, "level"
     addattribute $P0, "indention"
@@ -43,7 +43,7 @@
     .return ()
 .end
 
-.namespace ["YAML::Dumper::Base"]
+.namespace ['YAML'; 'Dumper'; 'Base']
 
 =item style."prepare"( yaml, indent )
 

Modified: branches/ops_pct/runtime/parrot/library/YAML/Dumper/Default.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/YAML/Dumper/Default.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/YAML/Dumper/Default.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -20,19 +20,19 @@
 
 .sub __library_data_dumper_default_onload :load
     .local pmc ydb_class
-    ydb_class = get_class "YAML::Dumper::Default"
+    ydb_class = get_class ['YAML'; 'Dumper'; 'Default']
     if null ydb_class goto create_ydb
     goto END
 
   create_ydb:
     load_bytecode 'YAML/Dumper/Base.pbc'
-    get_class $P0, "YAML::Dumper::Base"
-    subclass $P0, $P0, "YAML::Dumper::Default"
+    get_class $P0, ['YAML'; 'Dumper'; 'Base']
+    subclass $P0, $P0, ['YAML'; 'Dumper'; 'Default']
 END:
     .return ()
 .end
 
-.namespace ["YAML::Dumper::Default"]
+.namespace ['YAML'; 'Dumper'; 'Default']
 
 =head1 METHODS
 

Modified: branches/ops_pct/runtime/parrot/library/distutils.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/distutils.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/distutils.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,4 @@
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -14,7 +14,7 @@
 to a wider audience with very little overhead for build/release/install mechanics.
 
 All the rules needed (dynops, dynpmc, pbc_to_exe, nqp, ...) are coded in this module distutils.
-A module author just must write a script C<setup.pir> (or C<setup.nqp> in future).
+A module author just must write a script C<setup.pir> or C<setup.nqp>.
 
 A setup script can be as simple as this:
 
@@ -194,6 +194,8 @@
 
 L<http://bitbucket.org/riffraff/shakespeare-parrot/src/tip/setup.pir>
 
+L<http://gitorious.org/kakapo/kakapo/blobs/master/setup.nqp>
+
 =cut
 
 .sub '__onload' :load :init :anon
@@ -212,6 +214,8 @@
     register_step_after('build', _build_pir_nqp)
     .const 'Sub' _build_pir_nqp_rx = '_build_pir_nqp_rx'
     register_step_after('build', _build_pir_nqp_rx)
+    .const 'Sub' _build_pir_pir = '_build_pir_pir'
+    register_step_after('build', _build_pir_pir)
     .const 'Sub' _build_pbc_pir = '_build_pbc_pir'
     register_step_after('build', _build_pbc_pir)
     .const 'Sub' _build_pbc_pbc = '_build_pbc_pbc'
@@ -235,6 +239,8 @@
     register_step_after('clean', _clean_pir_nqp)
     .const 'Sub' _clean_pir_nqp_rx = '_clean_pir_nqp_rx'
     register_step_after('clean', _clean_pir_nqp_rx)
+    .const 'Sub' _clean_pir_pir = '_clean_pir_pir'
+    register_step_after('clean', _clean_pir_pir)
     .const 'Sub' _clean_pbc_pir = '_clean_pbc_pir'
     register_step_after('clean', _clean_pbc_pir)
     .const 'Sub' _clean_pbc_pbc = '_clean_pbc_pbc'
@@ -322,7 +328,7 @@
 
 =cut
 
-.sub 'setup'
+.sub 'setup' :multi()
     .param pmc args :slurpy
     .param pmc kv :slurpy :named
     .local pmc steps
@@ -358,7 +364,7 @@
     if $I0 goto L11
     print "unknown target : "
     say $S0
-    run_step('usage')
+    run_step('usage', kv :flat :named)
   L12:
     pop_eh
     end
@@ -368,6 +374,12 @@
     rethrow ex
 .end
 
+.sub 'setup' :multi(ResizableStringArray,Hash)
+    .param pmc array
+    .param pmc hash
+    .tailcall setup(array :flat, hash :flat :named)
+.end
+
 =item run_step
 
 Call a step by its name.
@@ -450,15 +462,27 @@
 
 Overload the default message
 
+=item setup
+
+the default value is setup.pir
+
 =back
 
 =cut
 
 .sub '_usage' :anon
     .param pmc kv :slurpy :named
-    .local string msg
-    msg = <<'USAGE'
-usage: parrot setup.pir [target|--key value]*
+    .local string setup
+    setup = get_value('setup', "setup.pir" :named('default'), kv :flat :named)
+    .local string command
+    command = _command_setup(setup)
+
+    $P0 = new 'FixedStringArray'
+    set $P0, 1
+    $P0[0] = command
+
+    $S0 = <<'USAGE'
+usage: %s [target|--key value]*
 
     Default targets are :
 
@@ -482,7 +506,8 @@
 
         help:           Print this help message.
 USAGE
-    $S0 = get_value('usage', msg :named('default'), kv :flat :named)
+    $S0 = sprintf $S0, $P0
+    $S0 = get_value('usage', $S0 :named('default'), kv :flat :named)
     say $S0
 .end
 
@@ -695,7 +720,7 @@
   L2:
 .end
 
-=item pir_nqp-rx
+=item pir_nqp-rx / pir_nqprx
 
 hash
 
@@ -712,6 +737,11 @@
     $P0 = kv['pir_nqp-rx']
     build_pir_nqp_rx($P0)
   L1:
+    $I0 = exists kv['pir_nqprx']
+    unless $I0 goto L2
+    $P0 = kv['pir_nqprx']
+    build_pir_nqp_rx($P0)
+  L2:
 .end
 
 .sub 'build_pir_nqp_rx'
@@ -735,6 +765,50 @@
   L2:
 .end
 
+=item pir_pir (concat)
+
+hash
+
+the key is the PIR pathname
+
+the value is an array of PIR pathname
+
+=cut
+
+.sub '_build_pir_pir' :anon
+    .param pmc kv :slurpy :named
+    $I0 = exists kv['pir_pir']
+    unless $I0 goto L1
+    $P0 = kv['pir_pir']
+    build_pir_pir($P0)
+  L1:
+.end
+
+.sub 'build_pir_pir'
+    .param pmc hash
+    $P0 = iter hash
+  L1:
+    unless $P0 goto L2
+    .local string pir, src
+    pir = shift $P0
+    .local pmc srcs
+    srcs = hash[pir]
+    $I0 = newer(pir, srcs)
+    if $I0 goto L1
+    spew(pir, '', 1 :named('verbose'))
+    $P1 = iter srcs
+  L3:
+    unless $P1 goto L4
+    .local string src
+    src = shift $P1
+    $S0 = slurp(src)
+    append(pir, $S0)
+    goto L3
+  L4:
+    goto L1
+  L2:
+.end
+
 =item pbc_pbc
 
 hash
@@ -1075,9 +1149,11 @@
 
 hash
 
-the key is the group name
+the key is the PMC name
 
-the value is an array of PMC pathname
+the value is an array of PMC pathname or a single PPC pathname
+
+an array creates a PMC group
 
 =item dynpmc_cflags
 
@@ -1108,10 +1184,12 @@
     $P0 = iter hash
   L1:
     unless $P0 goto L2
-    .local string group
-    group = shift $P0
+    .local string name
+    name = shift $P0
     .local pmc srcs
-    srcs = hash[group]
+    srcs = hash[name]
+    $I0 = does srcs, 'array'
+    unless $I0 goto L5
     $P1 = iter srcs
   L3:
     unless $P1 goto L4
@@ -1123,11 +1201,18 @@
     __build_dynpmc(src, cflags)
     goto L3
   L4:
-    if group == '' goto L1
-    $S0 = _mk_path_dynpmc(group, load_ext)
+    $S0 = _mk_path_dynpmc(name, load_ext)
     $I0 = newer($S0, srcs)
     if $I0 goto L1
-    __build_dynpmc_group(srcs, group, cflags, ldflags)
+    __build_dynpmc_group(srcs, name, cflags, ldflags)
+    goto L1
+  L5:
+    src = srcs
+    $S0 = _mk_path_dynpmc(name, load_ext)
+    $I0 = newer($S0, src)
+    if $I0 goto L1
+    __build_dynpmc(src, cflags)
+    __build_dynpmc_alone(src, name, cflags, ldflags)
     goto L1
   L2:
 .end
@@ -1269,6 +1354,50 @@
   L6:
 .end
 
+.sub '__build_dynpmc_alone' :anon
+    .param string src
+    .param string name
+    .param string cflags
+    .param string ldflags
+    .local pmc config
+    config = get_config()
+
+    .local string dynext
+    $S0 = config['load_ext']
+    dynext = _mk_path_dynpmc(name, $S0)
+    .local string cmd
+    cmd = config['ld']
+    cmd .= " "
+    $S0 = config['ld_out']
+    cmd .= $S0
+    cmd .= dynext
+    cmd .= " "
+    $S0 = config['o']
+    $S0 = _mk_path_gen_dynpmc(src, $S0)
+    cmd .= $S0
+    cmd .= " "
+    $S0 = get_ldflags()
+    cmd .= $S0
+    cmd .= " "
+    $S0 = config['ld_load_flags']
+    cmd .= $S0
+    cmd .= " "
+    $I0 = config['parrot_is_shared']
+    unless $I0 goto L5
+    $S0 = config['inst_libparrot_ldflags']
+    cmd .= $S0
+    cmd .= " "
+  L5:
+    cmd .= ldflags
+    system(cmd, 1 :named('verbose'))
+
+    $I0 = _has_strip(cflags)
+    unless $I0 goto L6
+    cmd = "strip " . dynext
+    system(cmd, 1 :named('verbose'))
+  L6:
+.end
+
 .sub '_mk_path_dynpmc' :anon
     .param string group
     .param string load_ext
@@ -1375,6 +1504,19 @@
   L2:
 .end
 
+=item pir_pir
+
+=cut
+
+.sub '_clean_pir_pir' :anon
+    .param pmc kv :slurpy :named
+    $I0 = exists kv['pir_pir']
+    unless $I0 goto L1
+    $P0 = kv['pir_pir']
+    clean_key($P0)
+  L1:
+.end
+
 =item pir_pge
 
 =cut
@@ -1414,7 +1556,7 @@
   L1:
 .end
 
-=item pir_nqp-rx
+=item pir_nqp-rx / pir_nqprx
 
 =cut
 
@@ -1425,6 +1567,11 @@
     $P0 = kv['pir_nqp-rx']
     clean_key($P0)
   L1:
+    $I0 = exists kv['pir_nqprx']
+    unless $I0 goto L2
+    $P0 = kv['pir_nqprx']
+    clean_key($P0)
+  L2:
 .end
 
 =item pbc_pbc
@@ -1580,12 +1727,14 @@
     $P0 = iter hash
   L1:
     unless $P0 goto L2
-    .local string group
-    group = shift $P0
+    .local string name
+    name = shift $P0
     .local pmc srcs
-    srcs = hash[group]
-    $S0 = _mk_path_dynpmc(group, load_ext)
+    srcs = hash[name]
+    $S0 = _mk_path_dynpmc(name, load_ext)
     unlink($S0, 1 :named('verbose'))
+    $I0 = does srcs, 'array'
+    unless $I0 goto L5
     $P1 = iter srcs
   L3:
     unless $P1 goto L4
@@ -1602,11 +1751,22 @@
     goto L3
   L4:
     src = srcs[0]
-    $S0 = _mk_path_gen_dynpmc_group(src, group, '.c')
+    $S0 = _mk_path_gen_dynpmc_group(src, name, '.c')
     unlink($S0, 1 :named('verbose'))
-    $S0 = _mk_path_gen_dynpmc_group(src, group, '.h')
+    $S0 = _mk_path_gen_dynpmc_group(src, name, '.h')
     unlink($S0, 1 :named('verbose'))
-    $S0 = _mk_path_gen_dynpmc_group(src, group, obj)
+    $S0 = _mk_path_gen_dynpmc_group(src, name, obj)
+    unlink($S0, 1 :named('verbose'))
+    goto L1
+  L5:
+    src = srcs
+    $S0 = _mk_path_gen_dynpmc(src, '.c')
+    unlink($S0, 1 :named('verbose'))
+    $S0 = _mk_path_gen_dynpmc(src, '.h')
+    unlink($S0, 1 :named('verbose'))
+    $S0 = _mk_path_gen_dynpmc(src, '.dump')
+    unlink($S0, 1 :named('verbose'))
+    $S0 = _mk_path_gen_dynpmc(src, obj)
     unlink($S0, 1 :named('verbose'))
     goto L1
   L2:
@@ -2348,6 +2508,10 @@
 
 =item project_uri
 
+=item setup
+
+the default value is setup.pir
+
 =back
 
 =cut
@@ -2421,6 +2585,11 @@
     keywords .= "\""
   L10:
 
+    .local string setup
+    setup = get_value('setup', "setup.pir" :named('default'), kv :flat :named)
+    .local string instruction
+    instruction = _plumage_instruction(setup)
+
     .local string vcs
     vcs = get_vcs()
 
@@ -2434,7 +2603,7 @@
     project_uri =get_value('project_uri', kv :flat :named)
 
     $P0 = new 'FixedStringArray'
-    set $P0, 16
+    set $P0, 23
     $P0[0] = name
     $P0[1] = abstract
     $P0[2] = authority
@@ -2445,12 +2614,19 @@
     $P0[7] = packager
     $P0[8] = keywords
     $P0[9] = description
-    $P0[10] = name
-    $P0[11] = vcs
-    $P0[12] = vcs
-    $P0[13] = checkout_uri
-    $P0[14] = browser_uri
-    $P0[15] = project_uri
+    $P0[10] = instruction
+    $P0[11] = instruction
+    $P0[12] = instruction
+    $P0[13] = instruction
+    $P0[14] = instruction
+    $P0[15] = instruction
+    $P0[16] = instruction
+    $P0[17] = name
+    $P0[18] = vcs
+    $P0[19] = vcs
+    $P0[20] = checkout_uri
+    $P0[21] = browser_uri
+    $P0[22] = project_uri
 
     $S0 = <<'TEMPLATE'
 {
@@ -2477,25 +2653,25 @@
             "type" : "repository"
         },
         "update"   : {
-            "type" : "parrot_setup"
+            "type" : "%s"
         },
         "build"    : {
-            "type" : "parrot_setup"
+            "type" : "%s"
         },
         "test"     : {
-            "type" : "parrot_setup"
+            "type" : "%s"
         },
         "smoke"    : {
-            "type" : "parrot_setup"
+            "type" : "%s"
         },
         "install"  : {
-            "type" : "parrot_setup"
+            "type" : "%s"
         },
         "uninstall": {
-            "type" : "parrot_setup"
+            "type" : "%s"
         },
         "clean"    : {
-            "type" : "parrot_setup"
+            "type" : "%s"
         }
     },
     "dependency-info"  : {
@@ -2531,6 +2707,18 @@
     .return (str)
 .end
 
+.sub '_plumage_instruction' :anon
+    .param string setup
+    .local string instruction
+    instruction = "parrot_setup"
+    $I0 = index setup, "."
+    $S0 = substr setup, $I0
+    unless $S0 == '.nqp' goto L1
+    instruction = "nqp_setup"
+  L1:
+    .return (instruction)
+.end
+
 =head3 Step manifest
 
 =over 4
@@ -2547,13 +2735,17 @@
 
 array of pathname or a single pathname
 
-=item pbc_pir, pir_pge, pir_tge, pir_nqp, pir_nqp-rx, pbc_pbc, exe_pbc,
-installable_pbc, dynops, dynpmc, html_pod
+=item pbc_pir, pir_pge, pir_tge, pir_nqp, pir_nqp-rx, pir_nqprx, pir_pir
+pbc_pbc, exe_pbc, installable_pbc, dynops, dynpmc, html_pod
 
 =item inst_bin, inst_dynext, inst_inc, inst_lang, inst_lib
 
 =item harness_files, prove_files
 
+=item setup
+
+the default value is setup.pir
+
 =back
 
 =cut
@@ -2579,7 +2771,7 @@
     needed = new 'Hash'
     generated = new 'Hash'
 
-    $P0 = split ' ', 'pbc_pir pir_pge pir_tge pir_nqp pir_nqp-rx pbc_pbc exe_pbc installable_pbc dynops dynpmc html_pod'
+    $P0 = split ' ', 'pbc_pir pir_pge pir_tge pir_nqp pir_nqp-rx pir_nqprx pir_pir pbc_pbc exe_pbc installable_pbc dynops dynpmc html_pod'
   L1:
     unless $P0 goto L2
     $S0 = shift $P0
@@ -2617,7 +2809,9 @@
     _manifest_add_glob(needed, 't/*.t')
   L7:
 
-    $P0 = split ' ', 'setup.pir setup.nqp t/harness'
+    $P0 = split ' ', 't/harness'
+    $S0 = get_value('setup', 'setup.pir' :named('default'), kv :flat :named)
+    push $P0, $S0
   L8:
     unless $P0 goto L9
     $S0 = shift $P0
@@ -2984,6 +3178,10 @@
 
 =item inst_bin, inst_dynext, inst_inc, inst_lang, inst_lib
 
+=item setup
+
+the default value is setup.pir
+
 =back
 
 =cut
@@ -3059,8 +3257,13 @@
     .local string packager
     packager = get_value('packager', "you <you at you.org>" :named('default'), kv :flat :named)
 
+    .local string setup
+    setup = get_value('setup', "setup.pir" :named('default'), kv :flat :named)
+    .local string command
+    command = _command_setup(setup)
+
     $P0 = new 'FixedStringArray'
-    set $P0, 9
+    set $P0, 12
     $P0[0] = parrot_version
     $P0[1] = name
     $P0[2] = version
@@ -3070,6 +3273,9 @@
     $P0[6] = project_uri
     $P0[7] = tarball
     $P0[8] = description
+    $P0[9] = command
+    $P0[10] = command
+    $P0[11] = command
 
     $S0 = <<'TEMPLATE'
 %%define parrot_version %s
@@ -3093,14 +3299,14 @@
 %%setup -n %%{name}-%%{version}
 
 %%build
-parrot setup.pir
+%s
 
 %%install
 rm -rf $RPM_BUILD_ROOT
-parrot setup.pir --root $RPM_BUILD_ROOT install
+%s --root $RPM_BUILD_ROOT install
 
 %%check
-parrot setup.pir test
+%s test
 
 %%clean
 rm -rf $RPM_BUILD_ROOT
@@ -3142,6 +3348,19 @@
     .return (spec)
 .end
 
+.sub '_command_setup' :anon
+    .param string setup
+    .local string command
+    command = "parrot "
+    $I0 = index setup, '.'
+    $S0 = substr setup, $I0
+    unless $S0 == '.nqp' goto L1
+    command = "parrot-nqp "
+  L1:
+    command .= setup
+    .return (command)
+.end
+
 =head3 Step bdist_rpm
 
 =cut
@@ -3202,6 +3421,10 @@
 
 =item inst_bin, inst_dynext, inst_inc, inst_lang, inst_lib
 
+=item setup
+
+the default value is setup.pir
+
 =back
 
 =cut
@@ -3417,6 +3640,17 @@
 .sub 'mk_deb_rules' :anon
     .param pmc kv :slurpy :named
 
+    .local string setup
+    setup = get_value('setup', "setup.pir" :named('default'), kv :flat :named)
+    .local string command
+    command = _command_setup(setup)
+
+    $P0 = new 'FixedStringArray'
+    set $P0, 3
+    $P0[0] = command
+    $P0[1] = command
+    $P0[2] = command
+
     $S0 = <<'TEMPLATE'
 #!/usr/bin/make -f
 # -*- makefile -*-
@@ -3431,14 +3665,14 @@
 build: build-stamp
 build-stamp: configure-stamp
 	dh_testdir
-	parrot setup.pir build
+	%s build
 	touch $@
 
 clean:
 	dh_testdir
 	dh_testroot
 	rm -f build-stamp configure-stamp
-	parrot setup.pir clean
+	%s clean
 	dh_clean
 
 install: build
@@ -3446,7 +3680,7 @@
 	dh_testroot
 	dh_prep
 	dh_installdirs
-	parrot setup.pir --root $(CURDIR)/debian/tmp install
+	%s --root $(CURDIR)/debian/tmp install
 	dh_install --sourcedir=$(CURDIR)/debian/tmp --list-missing
 
 # Build architecture-independent files here.
@@ -3475,6 +3709,7 @@
 .PHONY: build clean binary-indep binary-arch binary install configure
 
 TEMPLATE
+    $S0 = sprintf $S0, $P0
     .return ($S0)
 .end
 
@@ -3544,6 +3779,10 @@
 
 =item doc_files
 
+=item setup
+
+the default value is setup.pir
+
 =back
 
 =cut
@@ -3590,6 +3829,11 @@
     .local string license_type
     license_type = get_value('license_type', kv :flat :named)
 
+    .local string setup
+    setup = get_value('setup', "setup.pir" :named('default'), kv :flat :named)
+    .local string command
+    command = _command_setup(setup)
+
     .local string doc
     doc = ''
     $I0 = exists kv['doc_files']
@@ -3608,11 +3852,14 @@
   L1:
 
     $P0 = new 'FixedStringArray'
-    set $P0, 4
+    set $P0, 7
     $P0[0] = description
     $P0[1] = project_uri
     $P0[2] = license_type
-    $P0[3] = doc
+    $P0[3] = command
+    $P0[4] = command
+    $P0[5] = doc
+    $P0[6] = command
 
     $S0 = <<'TEMPLATE'
 
@@ -3629,16 +3876,16 @@
 #RDEPEND=""
 
 src_compile() {
-    parrot setup.pir build || die "build failed"
+    %s build || die "build failed"
 }
 
 src_install() {
-    parrot setup.pir --root ${D} install || die "install failed"
+    %s --root ${D} install || die "install failed"
 %s
 }
 
 src_test() {
-    parrot setup.pir test || die "test failed"
+    %s test || die "test failed"
 }
 TEMPLATE
     $S0 = sprintf $S0, $P0
@@ -4264,39 +4511,29 @@
     .return ($S0)
 .end
 
-=item probe_include
+=item cc_run
 
 =cut
 
-.sub 'probe_include'
-    .param string include
-    .param int verbose          :named('verbose') :optional
+.sub 'cc_run'
+    .param string source
     .param string cflags        :named('cflags') :optional
     .param int has_cflags       :opt_flag
-
-    $S0 = <<'SOURCE_C'
-#include <%s>
-#include <stdio.h>
-
-int
-main(int argc, char* argv[])
-{
-    printf("%s OK\n");
-    return 0;
-}
-SOURCE_C
-    $P0 = new 'FixedStringArray'
-    set $P0, 2
-    $P0[0] = include
-    $P0[1] = include
-    $S0 = sprintf $S0, $P0
-    spew('probe.c', $S0)
-
-    .local string probe
-    $S0 = get_exe()
-    probe = "probe" . $S0
+    .param string ldflags       :named('ldflags') :optional
+    .param int has_ldflags      :opt_flag
+    .param int verbose          :named('verbose') :optional
+    .const string srcname = 'tmp.c'
+    spew(srcname, source)
+    .local string exename
+    exename = 'tmp'
     .local pmc config
     config = get_config()
+    $S0 = config['osname']
+    if $S0 == 'MSWin32' goto L0
+    exename = './' . exename
+  L0:
+    $S0 = get_exe()
+    exename .= $S0
     .local string cmd
     cmd = config['cc']
     cmd .= " "
@@ -4306,15 +4543,54 @@
     cmd .= " "
     cmd .= cflags
   L1:
-    cmd .= " probe.c -o "
-    cmd .= probe
+    cmd .= " "
+    cmd .= srcname
+    cmd .= " "
+    $S0 = get_ldflags()
+    cmd .= $S0
+    unless has_ldflags goto L2
+    cmd .= " "
+    cmd .= ldflags
+  L2:
+    cmd .= " -o "
+    cmd .= exename
     system(cmd, verbose :named('verbose'), 1 :named('ignore_error'))
+    unlink(srcname, verbose :named('verbose'))
+
+    $P0 = open exename, 'rp'
+    $S0 = $P0.'readall'()
+    $P0.'close'()
+
+    unlink(exename, verbose :named('verbose'))
+    .return ($S0)
+.end
+
+
+=item probe_include
 
-    cmd = "./" . probe
-    $I0 = system(cmd, verbose :named('verbose'), 1 :named('ignore_error'))
+=cut
 
-    unlink('probe.c', verbose :named('verbose'))
-    unlink(probe, verbose :named('verbose'))
+.sub 'probe_include'
+    .param string include
+    .param string cflags        :named('cflags') :optional
+    .param int verbose          :named('verbose') :optional
+    $P0 = new 'FixedStringArray'
+    set $P0, 2
+    $P0[0] = include
+    $P0[1] = include
+    $S0 = sprintf <<'SOURCE_C', $P0
+#include <%s>
+#include <stdio.h>
+
+int
+main(int argc, char* argv[])
+{
+    printf("OK %s\n");
+    return 0;
+}
+SOURCE_C
+    $S0 = cc_run($S0, cflags :named('cflags'), verbose :named('verbose'))
+    $I0 = index $S0, 'OK '
     .return ($I0)
 .end
 
@@ -4412,6 +4688,13 @@
     .return ($I0)
 .end
 
+.sub 'newer' :multi(pmc, pmc)
+    .param pmc target
+    .param pmc depend
+    $S0 = target
+    .tailcall newer($S0, depend)
+.end
+
 =item mkpath
 
 =cut

Modified: branches/ops_pct/runtime/parrot/library/dumper.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/dumper.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/dumper.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -34,7 +34,7 @@
     say ''
     say "    .local pmc foo, dumper"
     say "    foo    = new 'ResizablePMCArray'"
-    say "    dumper = new 'Data::Dumper'"
+    say "    dumper = new ['Data'; 'Dumper']"
     say ''
     say "    dumper.'dumper'( foo, 'foo' )"
     say ".end"
@@ -148,13 +148,13 @@
     .local pmc dd_class
     .local int is_defined
 
-    get_class dd_class, "Data::Dumper"
+    get_class dd_class, ['Data'; 'Dumper']
     if null dd_class goto load_dd_pir
     goto TYPE_OK
 
   load_dd_pir:
     load_bytecode "Data/Dumper.pbc"
-    get_class dd_class, "Data::Dumper"
+    get_class dd_class, ['Data'; 'Dumper']
     if null dd_class goto no_class
     goto TYPE_OK
 
@@ -164,13 +164,13 @@
 TYPE_OK:
 
     errorsoff .PARROT_ERRORS_GLOBALS_FLAG
-    self = get_hll_global ['Data::Dumper'], 'global'
+    self = get_hll_global ['Data'; 'Dumper'], 'global'
     errorson .PARROT_ERRORS_GLOBALS_FLAG
     if null self goto create_type
 
 create_type:
-    new self, "Data::Dumper"
-    set_hll_global ['Data::Dumper'], 'global', self
+    new self, ['Data'; 'Dumper']
+    set_hll_global ['Data'; 'Dumper'], 'global', self
 
 END:
     .return( self )

Modified: branches/ops_pct/runtime/parrot/library/libpcre.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/libpcre.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/libpcre.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -12,7 +12,7 @@
 =cut
 
 
-.namespace ['PCRE::NCI']
+.namespace ['PCRE'; 'NCI']
 
 
 .sub compile
@@ -35,7 +35,7 @@
     ## allocate space in string for error message
     repeat error, " ", error_size
 
-    PCRE_NCI_compile = get_hll_global ['PCRE::NCI'], 'PCRE_compile'
+    PCRE_NCI_compile = get_hll_global ['PCRE'; 'NCI'], 'PCRE_compile'
 
     .local pmc code
 
@@ -81,7 +81,7 @@
 
     ## on 32 bit systems
     .local pmc PCRE_NCI_exec
-    PCRE_NCI_exec = get_hll_global ['PCRE::NCI'], 'PCRE_exec'
+    PCRE_NCI_exec = get_hll_global ['PCRE'; 'NCI'], 'PCRE_exec'
 
     .local int ok
 

Modified: branches/ops_pct/runtime/parrot/library/pcre.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/pcre.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/pcre.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -105,23 +105,23 @@
     #            const char **errptr, int *erroffset,
     #            const unsigned char *tableptr
     dlfunc pcre_function, libpcre, 'pcre_compile', 'ptiB3P'
-    set_hll_global ['PCRE::NCI'], 'PCRE_compile', pcre_function
+    set_hll_global ['PCRE'; 'NCI'], 'PCRE_compile', pcre_function
 
     #int pcre_exec(const pcre *code, const pcre_extra *extra,
     #        const char *subject, int length, int startoffset,
     #        int options, int *ovector, int ovecsize);
     dlfunc pcre_function, libpcre, 'pcre_exec', 'ipPtiiipi'
-    set_hll_global ['PCRE::NCI'], 'PCRE_exec', pcre_function
+    set_hll_global ['PCRE'; 'NCI'], 'PCRE_exec', pcre_function
 
     #int pcre_copy_substring(const char *subject, int *ovector,
     #        int stringcount, int stringnumber, char *buffer,
     #        int buffersize);
     dlfunc pcre_function, libpcre, 'pcre_copy_substring', 'itpiibi'
-    set_hll_global ['PCRE::NCI'], 'PCRE_copy_substring', pcre_function
+    set_hll_global ['PCRE'; 'NCI'], 'PCRE_copy_substring', pcre_function
 
     # const char *pcre_version(void);
     dlfunc pcre_function, libpcre, 'pcre_version', 't'
-    set_hll_global ['PCRE::NCI'], 'PCRE_version', pcre_function
+    set_hll_global ['PCRE'; 'NCI'], 'PCRE_version', pcre_function
 
     .return( libpcre )
 
@@ -142,7 +142,7 @@
     .param int options
     .local pmc pcre_function
 
-    pcre_function= get_hll_global ['PCRE::NCI'], 'compile'
+    pcre_function= get_hll_global ['PCRE'; 'NCI'], 'compile'
 
     .local pmc regex
     .local string error
@@ -170,7 +170,7 @@
     .param int options
     .local pmc pcre_function
 
-    pcre_function= get_hll_global ['PCRE::NCI'], 'exec'
+    pcre_function= get_hll_global ['PCRE'; 'NCI'], 'exec'
 
     .local int ok
     .local pmc res
@@ -195,7 +195,7 @@
     .param int n
     .local pmc pcre_function
 
-    pcre_function= get_hll_global ['PCRE::NCI'], 'result'
+    pcre_function= get_hll_global ['PCRE'; 'NCI'], 'result'
 
     .local string matched
 
@@ -212,7 +212,7 @@
 .sub version
     .local pmc pcre_function
 
-    pcre_function = get_hll_global ['PCRE::NCI'], 'PCRE_version'
+    pcre_function = get_hll_global ['PCRE'; 'NCI'], 'PCRE_version'
 
     .local string ver
 

Modified: branches/ops_pct/runtime/parrot/library/yaml_dumper.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/yaml_dumper.pir	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/runtime/parrot/library/yaml_dumper.pir	Sun Mar  7 19:33:20 2010	(r44743)
@@ -34,7 +34,7 @@
     say ''
     say "    .local pmc foo, yaml_dumper"
     say "    foo         = new 'ResizablePMCArray'"
-    say "    yaml_dumper =  new 'YAML::Dumper'"
+    say "    yaml_dumper =  new ['YAML'; 'Dumper']"
     say ''
     say "    yaml_dumper.'yaml'( foo, 'foo' )"
     say ".end"
@@ -148,13 +148,13 @@
     .local pmc yd_class
     .local int is_defined
 
-    get_class yd_class, "YAML::Dumper"
+    get_class yd_class, ['YAML'; 'Dumper']
     if null yd_class goto load_yd_pir
     goto TYPE_OK
 
   load_yd_pir:
     load_bytecode "YAML/Dumper.pbc"
-    get_class yd_class, "YAML::Dumper"
+    get_class yd_class, ['YAML'; 'Dumper']
     if null yd_class goto no_class
     goto TYPE_OK
 
@@ -164,13 +164,13 @@
 TYPE_OK:
 
     errorsoff .PARROT_ERRORS_GLOBALS_FLAG
-    self = get_global ['YAML::Dumper'], 'global'
+    self = get_global ['YAML'; 'Dumper'], 'global'
     errorson .PARROT_ERRORS_GLOBALS_FLAG
     if null self goto create_type
 
 create_type:
-    new self, "YAML::Dumper"
-    set_global ['YAML::Dumper'], 'global', self
+    new self, ['YAML'; 'Dumper']
+    set_global ['YAML'; 'Dumper'], 'global', self
 
 END:
     .return( self )

Modified: branches/ops_pct/src/atomic/gcc_x86.c
==============================================================================
--- branches/ops_pct/src/atomic/gcc_x86.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/atomic/gcc_x86.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /* atomic/gcc_x86.c
- *  Copyright (C) 2006, Parrot Foundation.
+ *  Copyright (C) 2006-2010, Parrot Foundation.
  *  SVN Info
  *     $Id$
  */
@@ -34,7 +34,8 @@
  */
 /*
 
-=item C<void * parrot_i386_cmpxchg>
+=item C<void * parrot_i386_cmpxchg(void *volatile *ptr, void *expect, void
+*update)>
 
 The CMPXCHG assembly instruction is a single cycle x86 instruction
 that compares C<expect> and C<*ptr>. If they are equal, sets
@@ -68,7 +69,7 @@
 
 /*
 
-=item C<long parrot_i386_xadd>
+=item C<long parrot_i386_xadd(volatile long *l, long amount)>
 
 C<xadd> is an x86 instruction that performs the following operation:
 Temporary = C<result>;

Modified: branches/ops_pct/src/call/args.c
==============================================================================
--- branches/ops_pct/src/call/args.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/call/args.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -567,13 +567,13 @@
 {
     ASSERT_ARGS(Parrot_pcc_build_sig_object_from_op)
     PMC            *call_object;
-    PMC            *ctx        = CURRENT_CONTEXT(interp);
+    PMC            * const ctx = CURRENT_CONTEXT(interp);
     INTVAL         *int_array;
     INTVAL          arg_count;
     INTVAL          arg_index;
 
     if (PMC_IS_NULL(signature))
-        call_object = pmc_new(interp, enum_class_CallContext);
+        call_object = Parrot_pmc_new(interp, enum_class_CallContext);
     else
         call_object = signature;
 
@@ -583,8 +583,7 @@
     GETATTR_FixedIntegerArray_int_array(interp, raw_sig, int_array);
 
     for (arg_index = 0; arg_index < arg_count; arg_index++) {
-        INTVAL arg_flags = int_array[arg_index];
-
+        const INTVAL arg_flags = int_array[arg_index];
         const INTVAL constant  = PARROT_ARG_CONSTANT_ISSET(arg_flags);
         const INTVAL raw_index = raw_args[arg_index + 2];
 
@@ -676,10 +675,8 @@
         INTVAL arg_index)
 {
     ASSERT_ARGS(extract_named_arg_from_op)
-    PMC   *ctx       = CURRENT_CONTEXT(interp);
-    INTVAL arg_flags = VTABLE_get_integer_keyed_int(interp,
-                    raw_sig, arg_index);
-
+    PMC   * const ctx = CURRENT_CONTEXT(interp);
+    const INTVAL arg_flags = VTABLE_get_integer_keyed_int(interp, raw_sig, arg_index);
     const INTVAL constant  = PARROT_ARG_CONSTANT_ISSET(arg_flags);
     const INTVAL raw_index = raw_args[arg_index + 2];
 
@@ -742,7 +739,7 @@
 {
     ASSERT_ARGS(dissect_aggregate_arg)
     if (VTABLE_does(interp, aggregate, CONST_STRING(interp, "array"))) {
-        INTVAL elements = VTABLE_elements(interp, aggregate);
+        const INTVAL elements = VTABLE_elements(interp, aggregate);
         INTVAL index;
         for (index = 0; index < elements; index++) {
             VTABLE_push_pmc(interp, call_object,
@@ -750,16 +747,16 @@
         }
     }
     else if (VTABLE_does(interp, aggregate, CONST_STRING(interp, "hash"))) {
-        INTVAL elements = VTABLE_elements(interp, aggregate);
+        const INTVAL elements = VTABLE_elements(interp, aggregate);
         INTVAL index;
-        PMC *key = pmc_new(interp, enum_class_Key);
+        PMC * const key = Parrot_pmc_new(interp, enum_class_Key);
         VTABLE_set_integer_native(interp, key, 0);
         SETATTR_Key_next_key(interp, key, (PMC *)INITBucketIndex);
 
         /* Low-level hash iteration. */
         for (index = 0; index < elements; index++) {
             if (!PMC_IS_NULL(key)) {
-                STRING *name = (STRING *)parrot_hash_get_idx(interp,
+                STRING * const name = (STRING *)parrot_hash_get_idx(interp,
                                 (Hash *)VTABLE_get_pointer(interp, aggregate), key);
                 PARROT_ASSERT(name);
                 VTABLE_set_pmc_keyed_str(interp, call_object, name,
@@ -796,13 +793,12 @@
     ASSERT_ARGS(Parrot_pcc_build_sig_object_returns_from_op)
     PMC            *call_object;
     INTVAL         *int_array;
-    PMC            *ctx         = CURRENT_CONTEXT(interp);
-    INTVAL          returns_pos = 0;
+    PMC            * const ctx  = CURRENT_CONTEXT(interp);
     INTVAL          arg_index;
     INTVAL          arg_count;
 
     if (PMC_IS_NULL(signature))
-        call_object = pmc_new(interp, enum_class_CallContext);
+        call_object = Parrot_pmc_new(interp, enum_class_CallContext);
     /* A hack to support 'get_results' as the way of fetching the
      * exception object inside an exception handler. The first argument
      * in the call object is the exception, stick it directly into the
@@ -823,7 +819,6 @@
     GETATTR_FixedIntegerArray_int_array(interp, raw_sig, int_array);
 
     for (arg_index = 0; arg_index < arg_count; arg_index++) {
-        STRING * const signature = CONST_STRING(interp, "signature");
         const INTVAL arg_flags = int_array[arg_index];
         const INTVAL raw_index = raw_args[arg_index + 2];
 
@@ -884,10 +879,9 @@
         ARGIN(const char *sig), va_list args)
 {
     ASSERT_ARGS(Parrot_pcc_build_sig_object_from_varargs)
-    PMC         *type_tuple         = PMCNULL;
     PMC         *arg_flags     = PMCNULL;
     PMC         *return_flags  = PMCNULL;
-    PMC         * const call_object = pmc_new(interp, enum_class_CallContext);
+    PMC         * const call_object = Parrot_pmc_new(interp, enum_class_CallContext);
     const INTVAL sig_len            = strlen(sig);
     INTVAL       in_return_sig      = 0;
     INTVAL       i;
@@ -905,7 +899,6 @@
         const INTVAL type = sig[i];
 
         if (in_return_sig) {
-            STRING * const signature = CONST_STRING(interp, "signature");
             /* Returns store the original passed-in pointer so they can pass
              * the result back to the caller. */
             switch (type) {
@@ -945,7 +938,7 @@
                 break;
               case 'P':
                 {
-                    INTVAL type_lookahead = sig[i+1];
+                    const INTVAL type_lookahead = sig[i+1];
                     PMC * const pmc_arg = va_arg(args, PMC *);
                     if (type_lookahead == 'f') {
                          dissect_aggregate_arg(interp, call_object, pmc_arg);
@@ -1003,15 +996,17 @@
         ARGIN(PMC *raw_sig), ARGIN(void *arg_info), ARGIN(struct pcc_set_funcs *accessor))
 {
     ASSERT_ARGS(fill_params)
-    PMC    *named_used_list = PMCNULL;
     INTVAL *raw_params;
-    INTVAL  param_count     = VTABLE_elements(interp, raw_sig);
+    PMC    *named_used_list = PMCNULL;
+    INTVAL  param_count     = 0;
     INTVAL  param_index     = 0;
     INTVAL  arg_index       = 0;
     INTVAL  named_count     = 0;
     INTVAL  err_check       = 0;
     INTVAL  positional_args;
 
+    GETATTR_FixedIntegerArray_size(interp, raw_sig, param_count);
+
     /* Check if we should be throwing errors. This is configured separately
      * for parameters and return values. */
     if (PARROT_ERRORS_test(interp, PARROT_ERRORS_PARAM_COUNT_FLAG))
@@ -1090,7 +1085,7 @@
                         EXCEPTION_INVALID_OPERATION,
                         "named parameters must follow all positional parameters");
 
-            collect_positional = pmc_new(interp,
+            collect_positional = Parrot_pmc_new(interp,
                     Parrot_get_ctx_HLL_type(interp, enum_class_ResizablePMCArray));
             for (; arg_index < positional_args; arg_index++) {
                 VTABLE_push_pmc(interp, collect_positional,
@@ -1122,7 +1117,7 @@
 
                 /* Mark the name as used, cannot be filled again. */
                 if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
-                    named_used_list = pmc_new(interp, enum_class_Hash);
+                    named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
 
                 VTABLE_set_integer_keyed_str(interp, named_used_list, param_name, 1);
             }
@@ -1159,10 +1154,8 @@
 
             /* Mark the option flag for the filled parameter. */
             if (param_flags & PARROT_ARG_OPTIONAL) {
-                INTVAL next_param_flags;
-
                 if (param_index + 1 < param_count) {
-                    next_param_flags = raw_params[param_index + 1];
+                    const int next_param_flags = raw_params[param_index + 1];
 
                     if (next_param_flags & PARROT_ARG_OPT_FLAG) {
                         param_index++;
@@ -1174,8 +1167,6 @@
         /* We have no more positional arguments, fill the optional parameter
          * with a default value. */
         else if (param_flags & PARROT_ARG_OPTIONAL) {
-            INTVAL next_param_flags;
-
             /* We don't handle optional named params here, handle them in the
              * next loop. */
             if (param_flags & PARROT_ARG_NAME)
@@ -1187,7 +1178,7 @@
             /* Mark the option flag for the parameter to FALSE, it was filled
              * with a default value. */
             if (param_index + 1 < param_count) {
-                next_param_flags = raw_params[param_index + 1];
+                const INTVAL next_param_flags = raw_params[param_index + 1];
 
                 if (next_param_flags & PARROT_ARG_OPT_FLAG) {
                     param_index++;
@@ -1249,16 +1240,16 @@
 
         /* Collected ("slurpy") named parameter */
         if (param_flags & PARROT_ARG_SLURPY_ARRAY) {
-            PMC * const collect_named = pmc_new(interp,
+            PMC * const collect_named = Parrot_pmc_new(interp,
                     Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
-            PMC *named_arg_list = VTABLE_get_attr_str(interp, call_object, CONST_STRING(interp, "named"));
+            PMC * const named_arg_list = VTABLE_get_attr_str(interp, call_object, CONST_STRING(interp, "named"));
             if (!PMC_IS_NULL(named_arg_list)) {
                 INTVAL named_arg_count = VTABLE_elements(interp, named_arg_list);
                 INTVAL named_arg_index;
 
                 /* Named argument iteration. */
                 for (named_arg_index = 0; named_arg_index < named_arg_count; named_arg_index++) {
-                    STRING *name = VTABLE_get_string_keyed_int(interp,
+                    STRING * const name = VTABLE_get_string_keyed_int(interp,
                             named_arg_list, named_arg_index);
 
                     if ((PMC_IS_NULL(named_used_list)) ||
@@ -1267,7 +1258,7 @@
                                 VTABLE_get_pmc_keyed_str(interp, call_object, name));
                         /* Mark the name as used, cannot be filled again. */
                         if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
-                            named_used_list = pmc_new(interp, enum_class_Hash);
+                            named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
                         VTABLE_set_integer_keyed_str(interp, named_used_list, name, 1);
                         named_count++;
                     }
@@ -1298,7 +1289,7 @@
 
                 /* Mark the name as used, cannot be filled again. */
                 if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
-                    named_used_list = pmc_new(interp, enum_class_Hash);
+                    named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
                 VTABLE_set_integer_keyed_str(interp, named_used_list, param_name, 1);
                 named_count++;
 
@@ -1328,10 +1319,8 @@
 
                 /* Mark the option flag for the filled parameter. */
                 if (param_flags & PARROT_ARG_OPTIONAL) {
-                    INTVAL next_param_flags;
-
                     if (param_index + 1 < param_count) {
-                        next_param_flags = raw_params[param_index + 1];
+                        const INTVAL next_param_flags = raw_params[param_index + 1];
 
                         if (next_param_flags & PARROT_ARG_OPT_FLAG) {
                             param_index++;
@@ -1341,15 +1330,13 @@
                 }
             }
             else if (param_flags & PARROT_ARG_OPTIONAL) {
-                INTVAL next_param_flags;
-
                 assign_default_param_value(interp, param_index, param_flags,
                         arg_info, accessor);
 
                 /* Mark the option flag for the parameter to FALSE, it was filled
                  * with a default value. */
                 if (param_index + 1 < param_count) {
-                    next_param_flags = raw_params[param_index + 1];
+                    const INTVAL next_param_flags = raw_params[param_index + 1];
 
                     if (next_param_flags & PARROT_ARG_OPT_FLAG) {
                         param_index++;
@@ -1381,7 +1368,7 @@
 
         named_arg_list = VTABLE_get_attr_str(interp, call_object, CONST_STRING(interp, "named"));
         if (!PMC_IS_NULL(named_arg_list)) {
-            INTVAL named_arg_count = VTABLE_elements(interp, named_arg_list);
+            const INTVAL named_arg_count = VTABLE_elements(interp, named_arg_list);
             if (PMC_IS_NULL(named_used_list))
                 return;
                 /* The 'return' above is a temporary hack to duplicate an old bug,
@@ -1593,16 +1580,14 @@
         ARGIN(PMC *raw_sig), ARGIN(void *return_info), ARGIN(struct pcc_get_funcs *accessor))
 {
     ASSERT_ARGS(fill_results)
-    INTVAL *return_array;
-    INTVAL *result_array;
+    INTVAL *return_array       = NULL;
+    INTVAL *result_array       = NULL;
     PMC    *result_sig         = NULL;
-    PMC    *ctx                = CURRENT_CONTEXT(interp);
     PMC    *named_used_list    = PMCNULL;
     PMC    *named_return_list  = PMCNULL;
     INTVAL  return_index       = 0;
     INTVAL  return_subindex    = 0;
     INTVAL  result_index       = 0;
-    INTVAL  positional_index   = 0;
     INTVAL  named_count        = 0;
     INTVAL  err_check          = 0;
     INTVAL  positional_returns = 0; /* initialized by a loop later */
@@ -1621,7 +1606,7 @@
     if (PMC_IS_NULL(call_object)) {
         /* If the return_count is 0, then there are no return values waiting to
          * fill the results, so no error. */
-        if (return_count > 0 && (err_check))
+        if (return_count > 0 && err_check)
             Parrot_ex_throw_from_c_args(interp, NULL,
                 EXCEPTION_INVALID_OPERATION,
                 "too few returns: 0 passed, %d expected", return_count);
@@ -1641,7 +1626,7 @@
     /* the call obj doesn't have the returns as positionals.
      * instead count number of returns before first named return */
     for (i = 0; i < return_count; i++) {
-        INTVAL flags = return_array[i];
+        const INTVAL flags = return_array[i];
         if (flags & PARROT_ARG_NAME)
             break;
 
@@ -1691,7 +1676,7 @@
                         EXCEPTION_INVALID_OPERATION,
                         "named results must follow all positional results");
 
-            collect_positional = pmc_new(interp,
+            collect_positional = Parrot_pmc_new(interp,
                     Parrot_get_ctx_HLL_type(interp, enum_class_ResizablePMCArray));
 
             /* Iterate over all positional returns in the list. */
@@ -1779,7 +1764,7 @@
 
                 /* Mark the name as used, cannot be filled again. */
                 if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
-                    named_used_list = pmc_new(interp,
+                    named_used_list = Parrot_pmc_new(interp,
                             Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
                 VTABLE_set_integer_keyed_str(interp, named_used_list, result_name, 1);
             }
@@ -1857,10 +1842,8 @@
 
             /* Mark the option flag for the filled result. */
             if (result_flags & PARROT_ARG_OPTIONAL) {
-                INTVAL next_result_flags;
-
                 if (result_index + 1 < result_count) {
-                    next_result_flags = result_array[result_index + 1];
+                    const INTVAL next_result_flags = result_array[result_index + 1];
                     if (next_result_flags & PARROT_ARG_OPT_FLAG) {
                         result_index++;
                         csr_fill_integer(interp, call_object, result_index, 1);
@@ -1871,8 +1854,6 @@
         /* We have no more positional returns, fill the optional result
          * with a default value. */
         else if (result_flags & PARROT_ARG_OPTIONAL) {
-            INTVAL next_result_flags;
-
             /* We don't handle optional named results here, handle them in the
              * next loop. */
             if (result_flags & PARROT_ARG_NAME)
@@ -1883,7 +1864,7 @@
             /* Mark the option flag for the result to FALSE, it was filled
              * with a default value. */
             if (result_index + 1 < result_count) {
-                next_result_flags = result_array[result_index + 1];
+                const INTVAL next_result_flags = result_array[result_index + 1];
                 if (next_result_flags & PARROT_ARG_OPT_FLAG) {
                     result_index++;
                     csr_fill_integer(interp, call_object, result_index, 0);
@@ -1936,7 +1917,7 @@
         return_flags = return_array[return_index];
 
         if (PMC_IS_NULL(named_return_list)) /* Only created if needed. */
-            named_return_list = pmc_new(interp,
+            named_return_list = Parrot_pmc_new(interp,
                     Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
 
         if (VTABLE_exists_keyed_str(interp, named_return_list, return_name))
@@ -1964,7 +1945,7 @@
             break;
           case PARROT_ARG_PMC:
             if (0) {
-                PMC *return_item = (constant)
+                PMC * const return_item = (constant)
                                  ? accessor->pmc_constant(interp, return_info, return_index)
                                  : accessor->pmc(interp, return_info, return_index);
                 if (return_flags & PARROT_ARG_FLATTEN) {
@@ -2002,7 +1983,7 @@
         /* Collected ("slurpy") named result */
         if (result_flags & PARROT_ARG_SLURPY_ARRAY) {
             if (PMC_IS_NULL(named_return_list))
-                named_return_list = pmc_new(interp,
+                named_return_list = Parrot_pmc_new(interp,
                         Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
 
             csr_fill_pmc(interp, call_object, result_index, named_return_list);
@@ -2053,10 +2034,8 @@
 
                 /* Mark the option flag for the filled result. */
                 if (result_flags & PARROT_ARG_OPTIONAL) {
-                    INTVAL next_result_flags;
-
                     if (result_index + 1 < result_count) {
-                        next_result_flags = return_array[result_index + 1];
+                        const INTVAL next_result_flags = return_array[result_index + 1];
                         if (next_result_flags & PARROT_ARG_OPT_FLAG) {
                             result_index++;
                             csr_fill_integer(interp, call_object, result_index, 1);
@@ -2065,14 +2044,12 @@
                 }
             }
             else if (result_flags & PARROT_ARG_OPTIONAL) {
-                INTVAL next_result_flags;
-
                 assign_default_result_value(interp, call_object, result_index, result_flags);
 
                 /* Mark the option flag for the result to FALSE, it was filled
                  * with a default value. */
                 if (result_index + 1 < result_count) {
-                    next_result_flags = result_array[result_index + 1];
+                    const INTVAL next_result_flags = result_array[result_index + 1];
                     if (next_result_flags & PARROT_ARG_OPT_FLAG) {
                         result_index++;
                         csr_fill_integer(interp, call_object, result_index, 1);
@@ -2095,7 +2072,7 @@
     /* Double check that all named returns were assigned to results. */
     if (err_check) {
         if (!PMC_IS_NULL(named_return_list)) {
-            INTVAL named_return_count = VTABLE_elements(interp, named_return_list);
+            const INTVAL named_return_count = VTABLE_elements(interp, named_return_list);
             if (named_return_count > 0)
                     Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
                             "too many named returns: %d passed, %d used",
@@ -2123,8 +2100,7 @@
         ARGIN(PMC *raw_sig), ARGIN(opcode_t *raw_returns))
 {
     ASSERT_ARGS(Parrot_pcc_fill_returns_from_op)
-    INTVAL raw_return_count     = VTABLE_elements(interp, raw_sig);
-    INTVAL err_check      = 0;
+
     static pcc_get_funcs function_pointers = {
         (intval_func_t)intval_arg_from_op,
         (numval_func_t)numval_arg_from_op,
@@ -2137,20 +2113,21 @@
         (pmc_func_t)pmc_constant_from_op,
     };
 
+    INTVAL raw_return_count = 0;
 
-    /* Check if we should be throwing errors. This is configured separately
-     * for parameters and return values. */
-    if (PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
-            err_check = 1;
+    GETATTR_FixedIntegerArray_size(interp, raw_sig, raw_return_count);
 
     /* A null call object is fine if there are no arguments and no returns. */
     if (PMC_IS_NULL(call_object)) {
-        if (raw_return_count > 0) {
-            if (err_check)
-                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
-                        "too many return values: %d passed, 0 expected",
-                        raw_return_count);
-        }
+
+        /* Check if we should be throwing errors. This is configured separately
+         * for parameters and return values. */
+        if (raw_return_count > 0
+        &&  PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
+            Parrot_ex_throw_from_c_args(interp, NULL,
+                EXCEPTION_INVALID_OPERATION,
+                "too many return values: %d passed, 0 expected",
+                raw_return_count);
         return;
     }
 
@@ -2158,6 +2135,8 @@
 
     return;
 }
+
+
 /*
 
 =item C<void Parrot_pcc_fill_returns_from_continuation(PARROT_INTERP, PMC
@@ -2176,8 +2155,8 @@
         ARGIN(PMC *raw_sig), ARGIN(PMC *from_call_obj))
 {
     ASSERT_ARGS(Parrot_pcc_fill_returns_from_continuation)
-    INTVAL raw_return_count     = VTABLE_elements(interp, raw_sig);
-    INTVAL err_check      = 0;
+    const INTVAL raw_return_count = VTABLE_elements(interp, raw_sig);
+
     static pcc_get_funcs function_pointers = {
         (intval_func_t)intval_arg_from_continuation,
         (numval_func_t)numval_arg_from_continuation,
@@ -2190,20 +2169,17 @@
         (pmc_func_t)pmc_arg_from_continuation,
     };
 
-
-    /* Check if we should be throwing errors. This is configured separately
-     * for parameters and return values. */
-    if (PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
-            err_check = 1;
-
     /* A null call object is fine if there are no arguments and no returns. */
     if (PMC_IS_NULL(call_object)) {
-        if (raw_return_count > 0) {
-            if (err_check)
-                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
-                        "too many return values: %d passed, 0 expected",
-                        raw_return_count);
-        }
+
+        /* Check if we should be throwing errors. This is configured separately
+         * for parameters and return values. */
+        if (raw_return_count > 0
+        &&  PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
+                Parrot_ex_throw_from_c_args(interp, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "too many return values: %d passed, 0 expected",
+                    raw_return_count);
         return;
     }
 
@@ -2212,6 +2188,7 @@
     return;
 }
 
+
 /*
 
 =item C<void Parrot_pcc_fill_returns_from_c_args(PARROT_INTERP, PMC
@@ -2238,7 +2215,6 @@
     ASSERT_ARGS(Parrot_pcc_fill_returns_from_c_args)
     va_list args;
     INTVAL raw_return_count = 0;
-    INTVAL err_check        = 0;
     PMC    *raw_sig         = PMCNULL;
     PMC    *invalid_sig     = PMCNULL;
 
@@ -2255,21 +2231,20 @@
     };
 
     parse_signature_string(interp, signature, &raw_sig, &invalid_sig);
+
     if (!PMC_IS_NULL(invalid_sig))
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
                 "parameters should not be included in the return signature");
 
     raw_return_count = VTABLE_elements(interp, raw_sig);
 
-    /* Check if we should be throwing errors. This is configured separately
-     * for parameters and return values. */
-    if (PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
-            err_check = 1;
-
     /* A null call object is fine if there are no arguments and no returns. */
     if (PMC_IS_NULL(call_object)) {
-        if (raw_return_count > 0)
-            if (err_check)
+
+        /* Check if we should be throwing errors. This is configured separately
+         * for parameters and return values. */
+        if (raw_return_count > 0
+        &&  PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
                 Parrot_ex_throw_from_c_args(interp, NULL,
                     EXCEPTION_INVALID_OPERATION,
                     "too many return values: %d passed, 0 expected",
@@ -2282,6 +2257,7 @@
     va_end(args);
 }
 
+
 /*
 
 =item C<static void parse_signature_string(PARROT_INTERP, const char *signature,
@@ -2307,7 +2283,7 @@
     INTVAL set = 0;
 
     if (PMC_IS_NULL(*arg_flags))
-        *arg_flags = pmc_new(interp, enum_class_ResizableIntegerArray);
+        *arg_flags = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
     current_array = *arg_flags;
 
     for (x = signature; *x != '\0'; x++) {
@@ -2326,7 +2302,7 @@
 
             /* Switch to the return argument flags. */
             if (PMC_IS_NULL(*return_flags))
-                *return_flags = pmc_new(interp, enum_class_ResizableIntegerArray);
+                *return_flags = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
             current_array = *return_flags;
         }
         /* parse arg type */
@@ -2393,7 +2369,7 @@
         ARGMOD(PMC **arg_flags), ARGMOD(PMC **return_flags))
 {
     ASSERT_ARGS(Parrot_pcc_parse_signature_string)
-    char *s        = Parrot_str_to_cstring(interp, signature);
+    char * const s = Parrot_str_to_cstring(interp, signature);
     *arg_flags    = PMCNULL;
     *return_flags = PMCNULL;
     parse_signature_string(interp, s, arg_flags, return_flags);
@@ -2571,7 +2547,7 @@
 string_arg_from_continuation(PARROT_INTERP, ARGIN(PMC *cs), INTVAL arg_index)
 {
     ASSERT_ARGS(string_arg_from_continuation)
-    STRING *ret      = VTABLE_get_string_keyed_int(interp, cs, arg_index);
+    STRING * const ret = VTABLE_get_string_keyed_int(interp, cs, arg_index);
     return ret;
 }
 
@@ -2580,7 +2556,7 @@
 pmc_arg_from_continuation(PARROT_INTERP, ARGIN(PMC *cs), INTVAL arg_index)
 {
     ASSERT_ARGS(pmc_arg_from_continuation)
-    PMC *ret      = VTABLE_get_pmc_keyed_int(interp, cs, arg_index);
+    PMC * const ret = VTABLE_get_pmc_keyed_int(interp, cs, arg_index);
     return ret;
 }
 
@@ -2758,6 +2734,7 @@
 intval_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
 {
     ASSERT_ARGS(intval_constant_from_varargs)
+    UNUSED(index);
     PARROT_ASSERT(!"Wrong call");
     return 0;
 }
@@ -2766,6 +2743,7 @@
 numval_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
 {
     ASSERT_ARGS(numval_constant_from_varargs)
+    UNUSED(index);
     PARROT_ASSERT(!"Wrong call");
     return 0.0;
 }
@@ -2775,6 +2753,7 @@
 string_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
 {
     ASSERT_ARGS(string_constant_from_varargs)
+    UNUSED(index);
     PARROT_ASSERT(!"Wrong call");
     return NULL;
 }
@@ -2784,6 +2763,7 @@
 pmc_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
 {
     ASSERT_ARGS(pmc_constant_from_varargs)
+    UNUSED(index);
     PARROT_ASSERT(!"Wrong call");
     return PMCNULL;
 }
@@ -2873,13 +2853,13 @@
         SETATTR_CallContext_returns_size(interp, self, size);
     }
     else {
-        void   *old_values;
         INTVAL  cur = resize_threshold;
 
         /* Switch to system allocator */
         if (cur == 8) {
-            old_values = values;
-            values     = mem_allocate_n_typed(8, void *);
+            void * const old_values = values;
+
+            values     = mem_gc_allocate_n_typed(interp, 8, void *);
             memcpy(values, old_values, 8 * sizeof (void *));
             Parrot_gc_free_fixed_size_storage(interp,
                 8 * sizeof (void *), old_values);
@@ -2888,12 +2868,13 @@
         if (cur < 8192)
             cur = size < 2 * cur ? 2 * cur : size;
         else {
-            INTVAL needed = size - cur;
+            const INTVAL needed = size - cur;
             cur          += needed + 4096;
             cur          &= ~0xfff;
         }
 
-        mem_realloc_n_typed(values, cur, void *);
+        values = mem_gc_realloc_n_typed_zeroed(interp, values,
+                cur, resize_threshold, void *);
 
         SETATTR_CallContext_returns_values(interp, self, values);
         SETATTR_CallContext_returns_size(interp, self, size);
@@ -2979,8 +2960,8 @@
 csr_fill_integer(PARROT_INTERP, ARGIN(PMC *self), INTVAL key, INTVAL value)
 {
     ASSERT_ARGS(csr_fill_integer)
-    void *cell = csr_get_pointer_keyed_int(interp, self, key);
-    void *ptr  = UNTAG_CELL(cell);
+    void * const cell = csr_get_pointer_keyed_int(interp, self, key);
+    void * const ptr  = UNTAG_CELL(cell);
 
     switch ((Call_bits_enum_t)CELL_TYPE_MASK(cell)) {
       case PARROT_ARG_INTVAL:
@@ -3004,8 +2985,8 @@
 csr_fill_number(PARROT_INTERP, ARGIN(PMC *self), INTVAL key, FLOATVAL value)
 {
     ASSERT_ARGS(csr_fill_number)
-    void *cell = csr_get_pointer_keyed_int(interp, self, key);
-    void *ptr  = UNTAG_CELL(cell);
+    void * const cell = csr_get_pointer_keyed_int(interp, self, key);
+    void * const ptr  = UNTAG_CELL(cell);
 
     switch ((Call_bits_enum_t)CELL_TYPE_MASK(cell)) {
       case PARROT_ARG_INTVAL:
@@ -3029,8 +3010,8 @@
 csr_fill_string(PARROT_INTERP, ARGIN(PMC *self), INTVAL key, ARGIN_NULLOK(STRING *value))
 {
     ASSERT_ARGS(csr_fill_string)
-    void *cell = csr_get_pointer_keyed_int(interp, self, key);
-    void *ptr  = UNTAG_CELL(cell);
+    void * const cell = csr_get_pointer_keyed_int(interp, self, key);
+    void * const ptr  = UNTAG_CELL(cell);
 
     switch ((Call_bits_enum_t)CELL_TYPE_MASK(cell)) {
       case PARROT_ARG_INTVAL:
@@ -3056,8 +3037,8 @@
 csr_fill_pmc(PARROT_INTERP, ARGIN(PMC *self), INTVAL key, ARGIN_NULLOK(PMC *value))
 {
     ASSERT_ARGS(csr_fill_pmc)
-    void *cell = csr_get_pointer_keyed_int(interp, self, key);
-    void *ptr  = UNTAG_CELL(cell);
+    void * const cell = csr_get_pointer_keyed_int(interp, self, key);
+    void * const ptr  = UNTAG_CELL(cell);
 
     switch ((Call_bits_enum_t)CELL_TYPE_MASK(cell)) {
       case PARROT_ARG_INTVAL:
@@ -3093,8 +3074,8 @@
 csr_get_string_keyed_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL key)
 {
     ASSERT_ARGS(csr_get_string_keyed_int)
-    void *cell  = csr_get_pointer_keyed_int(interp, self, key);
-    void *ptr   = UNTAG_CELL(cell);
+    void * const cell  = csr_get_pointer_keyed_int(interp, self, key);
+    void * const ptr   = UNTAG_CELL(cell);
     return (STRING *)ptr;
 }
 
@@ -3150,7 +3131,6 @@
     INTVAL  int_type;
 
     Parrot_String return_flags_name = Parrot_str_new_constant(interp, "return_flags");
-    Parrot_String sig_name          = Parrot_str_new_constant(interp, "signature");
 
     full_sig = VTABLE_get_string(interp, sig_object);
     /* Append ->[T] */
@@ -3161,7 +3141,7 @@
     return_flags = VTABLE_get_attr_str(interp, sig_object, return_flags_name);
     if (PMC_IS_NULL(return_flags)) {
         /* Create return_flags for single element */
-        return_flags = pmc_new(interp, enum_class_FixedIntegerArray);
+        return_flags = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
         return_flags_size = 0;
         VTABLE_set_integer_native(interp, return_flags, 1);
         VTABLE_set_attr_str(interp, sig_object, return_flags_name, return_flags);

Modified: branches/ops_pct/src/call/context.c
==============================================================================
--- branches/ops_pct/src/call/context.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/call/context.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -315,7 +315,6 @@
     if (!PMC_IS_NULL(ctx->current_sub))
         return;
 
-    ctx->current_results   = NULL;
     ctx->results_signature = NULL;
     ctx->lex_pad           = PMCNULL;
     ctx->outer_ctx         = NULL;
@@ -567,7 +566,7 @@
     ARGIN_NULLOK(PMC *old))
 {
     ASSERT_ARGS(Parrot_alloc_context)
-    PMC            *pmcctx = pmc_new(interp, enum_class_CallContext);
+    PMC            *pmcctx = Parrot_pmc_new(interp, enum_class_CallContext);
 
     allocate_registers(interp, pmcctx, number_regs_used);
     init_context(interp, pmcctx, old);
@@ -593,7 +592,7 @@
 Parrot_pcc_allocate_empty_context(PARROT_INTERP, ARGIN_NULLOK(PMC *old))
 {
     ASSERT_ARGS(Parrot_pcc_allocate_empty_context)
-    PMC            *pmcctx = pmc_new(interp, enum_class_CallContext);
+    PMC            *pmcctx = Parrot_pmc_new(interp, enum_class_CallContext);
 
     init_context(interp, pmcctx, old);
 

Modified: branches/ops_pct/src/call/context_accessors.c
==============================================================================
--- branches/ops_pct/src/call/context_accessors.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/call/context_accessors.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -471,37 +471,6 @@
 
 /*
 
-=item C<opcode_t* Parrot_pcc_get_results_func(PARROT_INTERP, PMC *ctx)>
-
-=item C<void Parrot_pcc_set_results_func(PARROT_INTERP, PMC *ctx, opcode_t *pc)>
-
-Get/set ptr into code with get_results opcode.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CAN_RETURN_NULL
-opcode_t*
-Parrot_pcc_get_results_func(PARROT_INTERP, ARGIN(PMC *ctx))
-{
-    ASSERT_ARGS(Parrot_pcc_get_results_func)
-    Parrot_Context const *c = get_context_struct_fast(interp, ctx);
-    return c->current_results;
-}
-
-PARROT_EXPORT
-void
-Parrot_pcc_set_results_func(PARROT_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(opcode_t *pc))
-{
-    ASSERT_ARGS(Parrot_pcc_set_results_func)
-    Parrot_Context *c = get_context_struct_fast(interp, ctx);
-    c->current_results = pc;
-}
-
-/*
-
 =item C<PMC* Parrot_pcc_get_results_signature_func(PARROT_INTERP, PMC *ctx)>
 
 =item C<void Parrot_pcc_set_results_signature_func(PARROT_INTERP, PMC *ctx, PMC

Modified: branches/ops_pct/src/call/ops.c
==============================================================================
--- branches/ops_pct/src/call/ops.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/call/ops.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -31,6 +31,19 @@
 static int
 runloop_id_counter = 0;          /* for synthesizing runloop ids. */
 
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static void really_destroy_runloop_jump_points(PARROT_INTERP,
+    ARGFREE(Parrot_runloop *jump_point))
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_really_destroy_runloop_jump_points \
+     __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 */
+
 /*
 
 =item C<void runops(PARROT_INTERP, size_t offs)>
@@ -142,7 +155,7 @@
         interp->runloop_jmp_free_list = jump_point->prev;
     }
     else
-        jump_point = mem_allocate_typed(Parrot_runloop);
+        jump_point = mem_gc_allocate_zeroed_typed(interp, Parrot_runloop);
 
     jump_point->prev        = interp->current_runloop;
     interp->current_runloop = jump_point;
@@ -184,13 +197,14 @@
 destroy_runloop_jump_points(PARROT_INTERP)
 {
     ASSERT_ARGS(destroy_runloop_jump_points)
-    really_destroy_runloop_jump_points(interp->current_runloop);
-    really_destroy_runloop_jump_points(interp->runloop_jmp_free_list);
+    really_destroy_runloop_jump_points(interp, interp->current_runloop);
+    really_destroy_runloop_jump_points(interp, interp->runloop_jmp_free_list);
 }
 
 /*
 
-=item C<void really_destroy_runloop_jump_points(Parrot_runloop *jump_point)>
+=item C<static void really_destroy_runloop_jump_points(PARROT_INTERP,
+Parrot_runloop *jump_point)>
 
 Takes a pointer to a runloop jump point (which had better be the last one in
 the list). Walks back through the list, freeing the memory of each one, until
@@ -200,13 +214,14 @@
 
 */
 
-void
-really_destroy_runloop_jump_points(ARGIN_NULLOK(Parrot_runloop *jump_point))
+static void
+really_destroy_runloop_jump_points(PARROT_INTERP,
+        ARGFREE(Parrot_runloop *jump_point))
 {
     ASSERT_ARGS(really_destroy_runloop_jump_points)
     while (jump_point) {
         Parrot_runloop * const prev = jump_point->prev;
-        mem_sys_free(jump_point);
+        mem_gc_free(interp, jump_point);
         jump_point = prev;
     }
 }

Modified: branches/ops_pct/src/debug.c
==============================================================================
--- branches/ops_pct/src/debug.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/debug.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -111,46 +111,11 @@
 static void list_breakpoints(ARGIN(PDB_t *pdb))
         __attribute__nonnull__(1);
 
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char * nextarg(ARGIN_NULLOK(const char *command));
-
 static void no_such_register(PARROT_INTERP,
     char register_type,
     UINTVAL register_num)
         __attribute__nonnull__(1);
 
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char * parse_int(ARGIN(const char *str), ARGOUT(int *intP))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*intP);
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char* parse_key(PARROT_INTERP,
-    ARGIN(const char *str),
-    ARGOUT(PMC **keyP))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*keyP);
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char * parse_string(PARROT_INTERP,
-    ARGIN(const char *str),
-    ARGOUT(STRING **strP))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*strP);
-
-PARROT_CANNOT_RETURN_NULL
-static const char * skip_command(ARGIN(const char *str))
-        __attribute__nonnull__(1);
-
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static const char * skip_whitespace(ARGIN(const char *cmd))
@@ -178,22 +143,8 @@
        PARROT_ASSERT_ARG(cmd))
 #define ASSERT_ARGS_list_breakpoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(pdb))
-#define ASSERT_ARGS_nextarg __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_no_such_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_parse_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(str) \
-    , PARROT_ASSERT_ARG(intP))
-#define ASSERT_ARGS_parse_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(str) \
-    , PARROT_ASSERT_ARG(keyP))
-#define ASSERT_ARGS_parse_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(str) \
-    , PARROT_ASSERT_ARG(strP))
-#define ASSERT_ARGS_skip_command __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(str))
 #define ASSERT_ARGS_skip_whitespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(cmd))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
@@ -603,6 +554,9 @@
 
 =item C<static const DebuggerCmd * get_cmd(const char **cmd)>
 
+Parse the debuggger command indicated by C<**cmd>.  Return a pointer to the
+matching function for known commands, or a NULL pointer otherwise.
+
 =cut
 
 */
@@ -658,6 +612,8 @@
 
 =item C<static const char * skip_whitespace(const char *cmd)>
 
+Return a pointer to the first non-whitespace character in C<cmd>.
+
 =cut
 
 */
@@ -677,6 +633,8 @@
 
 =item C<static unsigned long get_uint(const char **cmd, unsigned int def)>
 
+Get an unsigned int from C<**cmd>.
+
 =cut
 
 */
@@ -700,6 +658,8 @@
 
 =item C<static unsigned long get_ulong(const char **cmd, unsigned long def)>
 
+Get an unsigned long from C<**cmd>.
+
 =cut
 
 */
@@ -741,193 +701,6 @@
 
 /*
 
-=item C<static const char * nextarg(const char *command)>
-
-Returns the position just past the current argument in the PASM instruction
-C<command>. This is not the same as C<skip_command()>, which is intended for
-debugger commands. This function is used for C<eval>.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char *
-nextarg(ARGIN_NULLOK(const char *command))
-{
-    ASSERT_ARGS(nextarg)
-    /* as long as the character pointed to by command is not NULL,
-     * and it is either alphanumeric, a comma or a closing bracket,
-     * continue looking for the next argument.
-     */
-    if (command) {
-        while (isalnum((unsigned char) *command) || *command == ',' || *command == ']')
-            command++;
-
-        /* eat as much space as possible */
-        command = skip_whitespace(command);
-    }
-
-    return command;
-}
-
-/*
-
-=item C<static const char * skip_command(const char *str)>
-
-Returns the pointer past the current debugger command. (This is an
-alternative to the C<skip_command()> macro above.)
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static const char *
-skip_command(ARGIN(const char *str))
-{
-    ASSERT_ARGS(skip_command)
-    /* while str is not null and it contains a command (no spaces),
-     * skip the character
-     */
-    while (*str && !isspace((unsigned char) *str))
-        str++;
-
-    /* eat all space after that */
-    return skip_whitespace(str);
-}
-
-/*
-
-=item C<static const char * parse_int(const char *str, int *intP)>
-
-Parse an C<int> out of a string and return a pointer to just after the C<int>.
-The output parameter C<intP> contains the parsed value.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char *
-parse_int(ARGIN(const char *str), ARGOUT(int *intP))
-{
-    ASSERT_ARGS(parse_int)
-    char *end;
-
-    *intP = strtol(str, &end, 0);
-
-    return end;
-}
-
-/*
-
-=item C<static const char * parse_string(PARROT_INTERP, const char *str, STRING
-**strP)>
-
-Parse a double-quoted string out of a C string and return a pointer to
-just after the string. The parsed string is converted to a Parrot
-C<STRING> and placed in the output parameter C<strP>.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char *
-parse_string(PARROT_INTERP, ARGIN(const char *str), ARGOUT(STRING **strP))
-{
-    ASSERT_ARGS(parse_string)
-    const char *string_start;
-
-    /* if this is not a quoted string, there's nothing to parse */
-    if (*str != '"')
-        return NULL;
-
-    /* skip the quote */
-    str++;
-
-    string_start = str;
-
-    /* parse while there's no closing quote */
-    while (*str && *str != '"') {
-        /* skip any potentially escaped quotes */
-        if (*str == '\\' && str[1])
-            str += 2;
-        else
-            str++;
-    }
-
-    /* create the output STRING */
-    *strP = string_make(interp, string_start, (UINTVAL)(str - string_start),
-        NULL, 0);
-
-    /* skip the closing quote */
-    if (*str)
-        str++;
-
-    return str;
-}
-
-/*
-
-=item C<static const char* parse_key(PARROT_INTERP, const char *str, PMC
-**keyP)>
-
-Parse an aggregate key out of a string and return a pointer to just
-after the key. Currently only string and integer keys are allowed.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char*
-parse_key(PARROT_INTERP, ARGIN(const char *str), ARGOUT(PMC **keyP))
-{
-    ASSERT_ARGS(parse_key)
-    /* clear output parameter */
-    *keyP = NULL;
-
-    /* make sure it's a key */
-    if (*str != '[')
-        return NULL;
-
-    /* Skip [ */
-    str++;
-
-    /* if this is a string key, create a Parrot STRING */
-    if (*str == '"') {
-        STRING *parrot_string;
-        str   = parse_string(interp, str, &parrot_string);
-        *keyP = key_new_string(interp, parrot_string);
-    }
-    /* if this is a numeric key */
-    else if (isdigit((unsigned char) *str)) {
-        int value;
-        str   = parse_int(str, &value);
-        *keyP = key_new_integer(interp, (INTVAL) value);
-    }
-    /* unsupported case; neither a string nor a numeric key */
-    else {
-        return NULL;
-    }
-
-    /* hm, but if this doesn't match, it's probably an error */
-    /* XXX str can be NULL from parse_string() */
-    if (*str != ']')
-        return NULL;
-
-    /* skip the closing brace on the key */
-    return ++str;
-}
-
-/*
-
 =item C<static void debugger_cmdline(PARROT_INTERP)>
 
 Debugger command line.
@@ -1001,7 +774,7 @@
     TRACEDEB_MSG("Parrot_debugger_init");
 
     if (! interp->pdb) {
-        PDB_t          *pdb      = mem_allocate_zeroed_typed(PDB_t);
+        PDB_t          *pdb      = mem_gc_allocate_zeroed_typed(interp, PDB_t);
         Parrot_Interp   debugger = Parrot_new(interp);
         interp->pdb              = pdb;
         debugger->pdb            = pdb;
@@ -1009,9 +782,9 @@
         pdb->debugger            = debugger;
 
         /* Allocate space for command line buffers, NUL terminated c strings */
-        pdb->cur_command = (char *)mem_sys_allocate_zeroed(DEBUG_CMD_BUFFER_LENGTH + 1);
-        pdb->last_command = (char *)mem_sys_allocate_zeroed(DEBUG_CMD_BUFFER_LENGTH + 1);
-        pdb->file = mem_allocate_zeroed_typed(PDB_file_t);
+        pdb->cur_command = mem_gc_allocate_n_typed(interp, DEBUG_CMD_BUFFER_LENGTH + 1, char);
+        pdb->last_command = mem_gc_allocate_n_typed(interp, DEBUG_CMD_BUFFER_LENGTH + 1, char);
+        pdb->file = mem_gc_allocate_zeroed_typed(interp, PDB_file_t);
     }
 
     /* PDB_disassemble(interp, NULL); */
@@ -1044,10 +817,10 @@
     PARROT_ASSERT(pdb);
     PARROT_ASSERT(pdb->debugee == interp);
 
-    mem_sys_free(pdb->last_command);
-    mem_sys_free(pdb->cur_command);
+    mem_gc_free(interp, pdb->last_command);
+    mem_gc_free(interp, pdb->cur_command);
 
-    mem_sys_free(pdb);
+    mem_gc_free(interp, pdb);
     interp->pdb = NULL;
 }
 
@@ -1245,7 +1018,6 @@
         strcpy(pdb->cur_command, buf);
     }
     else {
-
         /* update the last command */
         if (pdb->cur_command[0] != '\0')
             strcpy(pdb->last_command, pdb->cur_command);
@@ -1254,44 +1026,26 @@
 
         c = pdb->cur_command;
 
-        /*Parrot_io_eprintf(pdb->debugger, "\n(pdb) ");*/
         Parrot_io_eprintf(pdb->debugger, "\n");
 
-        /* skip leading whitespace */
-/*
-        do {
-            ch = fgetc(stdin);
-        } while (isspace((unsigned char)ch) && ch != '\n');
-*/
         {
-        Interp * interpdeb = interp->pdb->debugger;
-        STRING * readline = CONST_STRING(interpdeb, "readline_interactive");
-        STRING * prompt = CONST_STRING(interpdeb, "(pdb) ");
-        STRING *s= Parrot_str_new(interpdeb, NULL, 0);
-        PMC *tmp_stdin = Parrot_io_stdhandle(interpdeb, 0, NULL);
-
-        Parrot_pcc_invoke_method_from_c_args(interpdeb,
-            tmp_stdin, readline,
-            "S->S", prompt, & s);
-        {
-        char * const aux = Parrot_str_to_cstring(interpdeb, s);
-        strcpy(c, aux);
-        Parrot_str_free_cstring(aux);
-        }
-        ch = '\n';
-        }
+            Interp *interpdeb = interp->pdb->debugger;
+            STRING *readline  = CONST_STRING(interpdeb, "readline_interactive");
+            STRING *prompt    = CONST_STRING(interpdeb, "(pdb) ");
+            STRING *s         = Parrot_str_new(interpdeb, NULL, 0);
+            PMC    *tmp_stdin = Parrot_io_stdhandle(interpdeb, 0, NULL);
+
+            Parrot_pcc_invoke_method_from_c_args(interpdeb,
+                tmp_stdin, readline,
+                "S->S", prompt, & s);
+            {
+                char * const aux = Parrot_str_to_cstring(interpdeb, s);
+                strcpy(c, aux);
+                Parrot_str_free_cstring(aux);
+            }
 
-        /* generate string (no more than buffer length) */
-/*
-        while (ch != EOF && ch != '\n' && (i < DEBUG_CMD_BUFFER_LENGTH)) {
-            c[i++] = (char)ch;
-            ch     = fgetc(tmp_stdin);
+            ch = '\n';
         }
-
-        c[i] = '\0';
-*/
-        if (ch == -1)
-            strcpy(c, "quit");
     }
 }
 
@@ -1500,6 +1254,8 @@
 
 =item C<static unsigned short condition_regtype(const char *cmd)>
 
+Return the type of the register represented by C<*cmd>.
+
 =cut
 
 */
@@ -1627,7 +1383,7 @@
     }
 
     /* Allocate new condition */
-    condition = mem_allocate_zeroed_typed(PDB_condition_t);
+    condition = mem_gc_allocate_zeroed_typed(interp, PDB_condition_t);
 
     condition->type = cond_argleft | cond_type;
 
@@ -1640,7 +1396,7 @@
 
             if (cond_argright != cond_argleft) {
                 Parrot_io_eprintf(interp->pdb->debugger, "Register types don't agree\n");
-                mem_sys_free(condition);
+                mem_gc_free(interp, condition);
                 return NULL;
             }
 
@@ -1649,28 +1405,28 @@
             reg_number = (int)get_uint(&command, 0);
             if (auxcmd == command) {
                 Parrot_io_eprintf(interp->pdb->debugger, "Invalid register\n");
-                    mem_sys_free(condition);
+                    mem_gc_free(interp, condition);
                     return NULL;
             }
 
             if (reg_number < 0) {
                 Parrot_io_eprintf(interp->pdb->debugger, "Out-of-bounds register\n");
-                mem_sys_free(condition);
+                mem_gc_free(interp, condition);
                 return NULL;
             }
 
-            condition->value         = mem_allocate_typed(int);
+            condition->value         = mem_gc_allocate_typed(interp, int);
             *(int *)condition->value = reg_number;
         }
         /* If the first argument was an integer */
         else if (condition->type & PDB_cond_int) {
             /* This must be either an integer constant or register */
-            condition->value             = mem_allocate_typed(INTVAL);
+            condition->value             = mem_gc_allocate_typed(interp, INTVAL);
             *(INTVAL *)condition->value  = (INTVAL)atoi(command);
             condition->type             |= PDB_cond_const;
         }
         else if (condition->type & PDB_cond_num) {
-            condition->value               = mem_allocate_typed(FLOATVAL);
+            condition->value               = mem_gc_allocate_typed(interp, FLOATVAL);
             *(FLOATVAL *)condition->value  = (FLOATVAL)atof(command);
             condition->type               |= PDB_cond_const;
         }
@@ -1690,7 +1446,7 @@
             /* TT #1259: Need to figure out what to do in this case.
              * For the time being, we just bail. */
             Parrot_io_eprintf(interp->pdb->debugger, "Can't compare PMC with constant\n");
-            mem_sys_free(condition);
+            mem_gc_free(interp, condition);
             return NULL;
         }
 
@@ -1753,16 +1509,9 @@
 
     /* If there is a source file use line number, else opcode position */
 
-
-    if (pdb->file) {
+    if (pdb->file && pdb->file->size) {
         TRACEDEB_MSG("PDB_set_break file");
 
-        if (!pdb->file->size) {
-            Parrot_io_eprintf(pdb->debugger,
-                "Can't set a breakpoint in empty file\n");
-            return;
-        }
-
         /* If no line number was specified, set it at the current line */
         if (ln != 0) {
             unsigned long i;
@@ -1813,12 +1562,9 @@
 
     TRACEDEB_MSG("PDB_set_break allocate breakpoint");
     /* Allocate the new break point */
-    newbreak = mem_allocate_zeroed_typed(PDB_breakpoint_t);
+    newbreak = mem_gc_allocate_zeroed_typed(interp, PDB_breakpoint_t);
 
-    if (command) {
-        /*command = skip_command(command);*/
-    }
-    else {
+    if (! command) {
         Parrot_ex_throw_from_c_args(interp, NULL, 1,
             "NULL command passed to PDB_set_break");
     }
@@ -1865,6 +1611,8 @@
 
 =item C<static void list_breakpoints(PDB_t *pdb)>
 
+Print all breakpoints for this debugger session to C<pdb->debugger>.
+
 =cut
 
 */
@@ -2104,7 +1852,7 @@
         }
         bp_id = breakpoint->id;
         /* Kill the breakpoint */
-        mem_sys_free(breakpoint);
+        mem_gc_free(interp, breakpoint);
 
         Parrot_io_eprintf(interp->pdb->debugger, "Breakpoint %li deleted\n", bp_id);
     }
@@ -2121,7 +1869,7 @@
 */
 
 void
-PDB_delete_condition(SHIM_INTERP, ARGMOD(PDB_breakpoint_t *breakpoint))
+PDB_delete_condition(PARROT_INTERP, ARGMOD(PDB_breakpoint_t *breakpoint))
 {
     ASSERT_ARGS(PDB_delete_condition)
     if (breakpoint->condition->value) {
@@ -2134,12 +1882,12 @@
         }
         else {
             /* 'value' is a float or an int, so we can just free it */
-            mem_sys_free(breakpoint->condition->value);
+            mem_gc_free(interp, breakpoint->condition->value);
             breakpoint->condition->value = NULL;
         }
     }
 
-    mem_sys_free(breakpoint->condition);
+    mem_gc_free(interp, breakpoint->condition);
     breakpoint->condition = NULL;
 }
 
@@ -2397,7 +2145,7 @@
 
 /*
 
-=item C<char * PDB_escape(const char *string, UINTVAL length)>
+=item C<char * PDB_escape(PARROT_INTERP, const char *string, UINTVAL length)>
 
 Escapes C<">, C<\r>, C<\n>, C<\t>, C<\a> and C<\\>.
 
@@ -2411,7 +2159,7 @@
 PARROT_CAN_RETURN_NULL
 PARROT_MALLOC
 char *
-PDB_escape(ARGIN(const char *string), UINTVAL length)
+PDB_escape(PARROT_INTERP, ARGIN(const char *string), UINTVAL length)
 {
     ASSERT_ARGS(PDB_escape)
     const char *end;
@@ -2424,7 +2172,7 @@
     if (!string)
         return NULL;
 
-    fill = _new = (char *)mem_sys_allocate(length * 2 + 1);
+    fill = _new = mem_gc_allocate_n_typed(interp, length * 2 + 1, char);
 
     for (; string < end; string++) {
         switch (*string) {
@@ -2584,7 +2332,7 @@
                 (info->jump & PARROT_JUMP_RELATIVE)) {
                 if (file) {
                     dest[size++] = 'L';
-                    i            = PDB_add_label(file, op, op[j]);
+                    i            = PDB_add_label(interp, file, op, op[j]);
                 }
                 else if (code_start) {
                     dest[size++] = 'O';
@@ -2624,12 +2372,12 @@
                     Parrot_str_to_cstring(interp, interp->code->
                            const_table->constants[op[j]]->u.string);
                 char * const escaped =
-                    PDB_escape(unescaped, interp->code->const_table->
+                    PDB_escape(interp, unescaped, interp->code->const_table->
                            constants[op[j]]->u.string->strlen);
                 if (escaped) {
                     strcpy(&dest[size], escaped);
                     size += strlen(escaped);
-                    mem_sys_free(escaped);
+                    mem_gc_free(interp, escaped);
                 }
                 Parrot_str_free_cstring(unescaped);
             }
@@ -2855,8 +2603,8 @@
 
     TRACEDEB_MSG("PDB_disassemble");
 
-    pfile = mem_allocate_zeroed_typed(PDB_file_t);
-    pline = mem_allocate_zeroed_typed(PDB_line_t);
+    pfile = mem_gc_allocate_zeroed_typed(interp, PDB_file_t);
+    pline = mem_gc_allocate_zeroed_typed(interp, PDB_line_t);
 
     /* If we already got a source, free it */
     if (pdb->file) {
@@ -2866,7 +2614,7 @@
 
     pfile->line   = pline;
     pline->number = 1;
-    pfile->source = (char *)mem_sys_allocate(default_size);
+    pfile->source = mem_gc_allocate_n_typed(interp, default_size, char);
 
     alloced       = space = default_size;
     code_end      = pc + interp->code->base.size;
@@ -2876,7 +2624,7 @@
         if (space < default_size) {
             alloced += default_size;
             space   += default_size;
-            pfile->source = (char *)mem_sys_realloc(pfile->source, alloced);
+            pfile->source = mem_gc_realloc_n_typed(interp, pfile->source, alloced, char);
         }
 
         size = PDB_disassemble_op(interp, pfile->source + pfile->size,
@@ -2893,7 +2641,7 @@
         pc += n;
 
         /* Prepare for next line */
-        newline              = mem_allocate_typed(PDB_line_t);
+        newline              = mem_gc_allocate_zeroed_typed(interp, PDB_line_t);
         newline->label       = NULL;
         newline->next        = NULL;
         newline->number      = pline->number + 1;
@@ -2931,8 +2679,8 @@
 
 /*
 
-=item C<long PDB_add_label(PDB_file_t *file, const opcode_t *cur_opcode,
-opcode_t offset)>
+=item C<long PDB_add_label(PARROT_INTERP, PDB_file_t *file, const opcode_t
+*cur_opcode, opcode_t offset)>
 
 Add a label to the label list.
 
@@ -2941,7 +2689,8 @@
 */
 
 long
-PDB_add_label(ARGMOD(PDB_file_t *file), ARGIN(const opcode_t *cur_opcode),
+PDB_add_label(PARROT_INTERP, ARGMOD(PDB_file_t *file),
+        ARGIN(const opcode_t *cur_opcode),
         opcode_t offset)
 {
     ASSERT_ARGS(PDB_add_label)
@@ -2957,7 +2706,7 @@
 
     /* Allocate a new label */
     label        = file->label;
-    _new         = mem_allocate_typed(PDB_label_t);
+    _new         = mem_gc_allocate_zeroed_typed(interp, PDB_label_t);
     _new->opcode = cur_opcode + offset;
     _new->next   = NULL;
 
@@ -2987,7 +2736,7 @@
 */
 
 void
-PDB_free_file(SHIM_INTERP, ARGIN_NULLOK(PDB_file_t *file))
+PDB_free_file(PARROT_INTERP, ARGIN_NULLOK(PDB_file_t *file))
 {
     ASSERT_ARGS(PDB_free_file)
     while (file) {
@@ -2998,7 +2747,7 @@
 
         while (line) {
             PDB_line_t * const nline = line->next;
-            mem_sys_free(line);
+            mem_gc_free(interp, line);
             line = nline;
         }
 
@@ -3008,19 +2757,19 @@
         while (label) {
             PDB_label_t * const nlabel = label->next;
 
-            mem_sys_free(label);
+            mem_gc_free(interp, label);
             label  = nlabel;
         }
 
         /* Free the remaining allocated portions of the file structure */
         if (file->sourcefilename)
-            mem_sys_free(file->sourcefilename);
+            mem_gc_free(interp, file->sourcefilename);
 
         if (file->source)
-            mem_sys_free(file->source);
+            mem_gc_free(interp, file->source);
 
         nfile = file->next;
-        mem_sys_free(file);
+        mem_gc_free(interp, file);
         file  = nfile;
     }
 }
@@ -3076,10 +2825,10 @@
         return;
     }
 
-    pfile = mem_allocate_zeroed_typed(PDB_file_t);
-    pline = mem_allocate_zeroed_typed(PDB_line_t);
+    pfile = mem_gc_allocate_zeroed_typed(interp, PDB_file_t);
+    pline = mem_gc_allocate_zeroed_typed(interp, PDB_line_t);
 
-    pfile->source = (char *)mem_sys_allocate(1024);
+    pfile->source = mem_gc_allocate_n_typed(interp, 1024, char);
     pfile->line   = pline;
     pline->number = 1;
 
@@ -3089,8 +2838,8 @@
     while ((c = fgetc(file)) != EOF) {
         /* Grow it */
         if (++size == 1024) {
-            pfile->source = (char *)mem_sys_realloc(pfile->source,
-                                            (size_t)pfile->size + 1024);
+            pfile->source = mem_gc_realloc_n_typed(interp, pfile->source,
+                                            (size_t)pfile->size + 1024, char);
             size = 0;
         }
         pfile->source[pfile->size] = (char)c;
@@ -3100,7 +2849,7 @@
         if (c == '\n') {
             /* If the line has an opcode move to the next one,
                otherwise leave it with NULL to skip it. */
-            PDB_line_t *newline = mem_allocate_zeroed_typed(PDB_line_t);
+            PDB_line_t *newline = mem_gc_allocate_zeroed_typed(interp, PDB_line_t);
 
             if (PDB_hasinstruction(pfile->source + pline->source_offset)) {
                 size_t n      = interp->op_info_table[*pc].op_count;
@@ -3340,7 +3089,6 @@
 {
     ASSERT_ARGS(PDB_eval)
 
-    PDB_t         *pdb = interp->pdb;
     Interp *warninterp = (interp->pdb && interp->pdb->debugger) ?
         interp->pdb->debugger : interp;
     TRACEDEB_MSG("PDB_eval");
@@ -3350,33 +3098,6 @@
 
 /*
 
-=item C<opcode_t * PDB_compile(PARROT_INTERP, const char *command)>
-
-Compiles instructions with the PASM compiler.
-
-Appends an C<end> op.
-
-This may be called from C<PDB_eval> above or from the compile opcode
-which generates a malloced string.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-opcode_t *
-PDB_compile(PARROT_INTERP, ARGIN(const char *command))
-{
-    ASSERT_ARGS(PDB_compile)
-
-    UNUSED(command);
-    Parrot_ex_throw_from_c_args(interp, NULL,
-        EXCEPTION_UNIMPLEMENTED,
-        "PDB_compile ('PASM1' compiler) has been deprecated");
-}
-
-/*
-
 =item C<void PDB_print(PARROT_INTERP, const char *command)>
 
 Print interp registers.

Modified: branches/ops_pct/src/dynext.c
==============================================================================
--- branches/ops_pct/src/dynext.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/dynext.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -155,7 +155,7 @@
 {
     ASSERT_ARGS(set_cstring_prop)
     STRING * const key  = Parrot_str_new_constant(interp, what);
-    PMC    * const prop = constant_pmc_new(interp, enum_class_String);
+    PMC    * const prop = Parrot_pmc_new_constant(interp, enum_class_String);
 
     VTABLE_set_string_native(interp, prop, name);
     VTABLE_setprop(interp, lib_pmc, key, prop);
@@ -396,7 +396,7 @@
 
     /* seems to be a native/NCI lib */
     if (!load_func || !lib_pmc)
-        lib_pmc = constant_pmc_new(interp, enum_class_ParrotLibrary);
+        lib_pmc = Parrot_pmc_new_constant(interp, enum_class_ParrotLibrary);
 
     /*  Call init, if it exists */
     if (init_func)
@@ -532,7 +532,7 @@
 make_string_pmc(PARROT_INTERP, ARGIN(STRING *string))
 {
     ASSERT_ARGS(make_string_pmc)
-    PMC * const ret = constant_pmc_new(interp, enum_class_String);
+    PMC * const ret = Parrot_pmc_new_constant(interp, enum_class_String);
     VTABLE_set_string_native(interp, ret, string);
 
     return ret;
@@ -576,7 +576,7 @@
          * Anyways, if we hope to share bytecode at runtime, we need to have
          * them have identical opcodes anyways.
          */
-        PMC * const new_lib_pmc = constant_pmc_new(d, enum_class_ParrotLibrary);
+        PMC * const new_lib_pmc = Parrot_pmc_new_constant(d, enum_class_ParrotLibrary);
 
         PMC_data(new_lib_pmc) = handle;
         VTABLE_setprop(d, new_lib_pmc, CONST_STRING(s, "_filename"), make_string_pmc(d, wo_ext));
@@ -587,10 +587,10 @@
         if (d->n_libs != s->n_libs) {
             INTVAL i;
             if (d->all_op_libs)
-                d->all_op_libs = (op_lib_t **)mem_sys_realloc(d->all_op_libs,
+                d->all_op_libs = (op_lib_t **)mem_internal_realloc(d->all_op_libs,
                     sizeof (op_lib_t *) * s->n_libs);
             else
-                d->all_op_libs = (op_lib_t **)mem_sys_allocate(sizeof (op_lib_t *) *
+                d->all_op_libs = (op_lib_t **)mem_internal_allocate(sizeof (op_lib_t *) *
                     s->n_libs);
             for (i = d->n_libs; i < s->n_libs; ++i)
                 d->all_op_libs[i] = s->all_op_libs[i];
@@ -668,7 +668,7 @@
          * XXX Parrot_ex_throw_from_c_args? return PMCNULL?
          * PMC Undef seems convenient, because it can be queried with get_bool()
          */
-        return pmc_new(interp, enum_class_Undef);
+        return Parrot_pmc_new(interp, enum_class_Undef);
     }
 
     return run_init_lib(interp, handle, lib_name, wo_ext);

Modified: branches/ops_pct/src/dynpmc/dynlexpad.pmc
==============================================================================
--- branches/ops_pct/src/dynpmc/dynlexpad.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/dynpmc/dynlexpad.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -45,7 +45,7 @@
             (Parrot_DynLexPad_attributes *) PMC_data(SELF);
 
         if (VTABLE_elements(interp, lexinfo)) {
-            attrs->init = pmc_new_init(interp, enum_class_LexPad, lexinfo);
+            attrs->init = Parrot_pmc_new_init(interp, enum_class_LexPad, lexinfo);
         }
         else
             attrs->init = NULL;

Modified: branches/ops_pct/src/dynpmc/foo.pmc
==============================================================================
--- branches/ops_pct/src/dynpmc/foo.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/dynpmc/foo.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -16,14 +16,14 @@
 
     MULTI PMC* subtract(Integer value, PMC *dest) {
         if (!dest)
-            dest = pmc_new(interp, SELF->vtable->base_type);
+            dest = Parrot_pmc_new(interp, SELF->vtable->base_type);
         VTABLE_set_integer_native(interp, dest, 144);
         return dest;
     }
 
     MULTI PMC* subtract(DEFAULT value, PMC *dest) {
         if (!dest)
-            dest = pmc_new(interp, SELF->vtable->base_type);
+            dest = Parrot_pmc_new(interp, SELF->vtable->base_type);
         VTABLE_set_integer_native(interp, dest, 244);
         return dest;
     }

Modified: branches/ops_pct/src/dynpmc/gdbmhash.pmc
==============================================================================
--- branches/ops_pct/src/dynpmc/gdbmhash.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/dynpmc/gdbmhash.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -73,7 +73,7 @@
 }
 
 
-pmclass GDBMHash provides hash dynpmc lib gdbm {
+pmclass GDBMHash provides hash dynpmc lib gdbm auto_attrs {
     ATTR struct GDBM_FH *db_handle;
 
 /*
@@ -100,18 +100,14 @@
     }
 
     VTABLE void init() {
-        Parrot_GDBMHash_attributes *attrs =
-            mem_allocate_zeroed_typed(Parrot_GDBMHash_attributes);
-
-        attrs->db_handle = mem_allocate_zeroed_typed(GDBM_FH);
-        PMC_data(SELF)   = attrs;
+        Parrot_GDBMHash_attributes *attrs = PARROT_GDBMHASH(SELF);
+        attrs->db_handle = mem_gc_allocate_zeroed_typed(INTERP, GDBM_FH);
         PObj_custom_destroy_SET(SELF);
     }
 
     VTABLE void destroy() {
-        mem_sys_free(
-                ((Parrot_GDBMHash_attributes *)PMC_data(SELF))->db_handle);
-        mem_sys_free(PMC_data(SELF));
+        Parrot_GDBMHash_attributes *attrs = PARROT_GDBMHASH(SELF);
+        mem_gc_free(INTERP, attrs->db_handle);
         PMC_data(SELF) = NULL;
     }
 
@@ -291,7 +287,7 @@
 
     VTABLE PMC* get_pmc_keyed(PMC* key) {
         STRING * ret_string = SELF.get_string_keyed(key);
-        PMC *ret_pmc = pmc_new(interp, enum_class_String);
+        PMC *ret_pmc = Parrot_pmc_new(interp, enum_class_String);
 
         VTABLE_set_string_native(interp, ret_pmc, ret_string);
 
@@ -311,7 +307,7 @@
     VTABLE void set_integer_keyed(PMC* key, INTVAL value) {
         PMC *temp;
 
-        temp = pmc_new(interp, enum_class_String);
+        temp = Parrot_pmc_new(interp, enum_class_String);
         VTABLE_set_integer_native(interp, temp, value);
         SELF.set_pmc_keyed(key, temp);
     }
@@ -330,7 +326,7 @@
     VTABLE void set_number_keyed(PMC* key, FLOATVAL value) {
         PMC *temp;
 
-        temp = pmc_new(interp, enum_class_String);
+        temp = Parrot_pmc_new(interp, enum_class_String);
         VTABLE_set_number_native(interp, temp, value);
         SELF.set_pmc_keyed(key, temp);
     }
@@ -394,6 +390,40 @@
 
         return;
     }
+
+/*
+
+=back
+
+=head2 Specific Methods
+
+=over 4
+
+=item C<void open(STRING* value)>
+
+Open a or create a new dbm file.
+
+=cut
+
+*/
+
+    METHOD void open(STRING* value) {
+        VTABLE_set_string_native(interp, SELF, value);
+    }
+
+/*
+
+=item C<void close()>
+
+Close current dbm file.
+
+=cut
+
+*/
+
+    METHOD void close() {
+        gdbm_close(PMC_dbfh(SELF));
+    }
 }
 
 /*

Modified: branches/ops_pct/src/dynpmc/rational.pmc
==============================================================================
--- branches/ops_pct/src/dynpmc/rational.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/dynpmc/rational.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -193,41 +193,13 @@
 
 /*
 
-=item * static void rat_power_int(PARROT_INTERP, PMC *self, int value)
-
-Calculates the power of a Rational-PMC to an exponent value in-place.
-
-=cut
-
-*/
-static void rat_power_int(PARROT_INTERP, PMC *self, int value) {
-  #ifdef PARROT_HAS_GMP
-    mpz_t num, den;
-
-    mpq_get_num(num, RT(self));
-    mpq_get_den(den, RT(self));
-
-    mpz_pow_ui(num, num, (unsigned int) value);
-    mpq_set_num(RT(self), num);
-    mpz_clear(num);
-
-    mpz_pow_ui(den, den, (unsigned int) value);
-    mpq_set_den(RT(self), den);
-    mpz_clear(den);
-  #else
-    RAISE_EXCEPTION
-  #endif
-}
-
-/*
-
 =back
 
 =cut
 
 */
 
-pmclass Rational dynpmc provides scalar {
+pmclass Rational dynpmc provides scalar auto_attrs {
     ATTR struct RATIONAL *rational;
 /*
 
@@ -265,9 +237,8 @@
     VTABLE void init() {
       #ifdef PARROT_HAS_GMP
         Parrot_Rational_attributes *attrs =
-            mem_allocate_zeroed_typed(Parrot_Rational_attributes);
-        PMC_data(SELF)     = attrs;
-        PMC_rational(SELF) = (RATIONAL *)malloc(sizeof (RATIONAL));
+            PARROT_RATIONAL(SELF);
+        attrs->rational = mem_gc_allocate_zeroed_typed(INTERP, RATIONAL);
         mpq_init(RT(SELF));
         PObj_custom_destroy_SET(SELF);
       #endif
@@ -282,7 +253,7 @@
 */
     VTABLE PMC *clone() {
       #ifdef PARROT_HAS_GMP
-        PMC * const ret = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const ret = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         mpq_set(RT(ret), RT(SELF));
         return ret;
       #else
@@ -300,9 +271,7 @@
     VTABLE void destroy() {
       #ifdef PARROT_HAS_GMP
         mpq_clear(RT(SELF));
-        mem_sys_free(RT(SELF));
-        mem_sys_free(PMC_data(SELF));
-        PMC_data(SELF) = NULL;
+        mem_gc_free(INTERP, RT(SELF));
       #else
         RAISE_EXCEPTION
       #endif
@@ -522,7 +491,7 @@
 
     MULTI PMC *add(Rational value, PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         mpq_add(RT(dest), RT(SELF), RT(value));
         return dest;
@@ -633,7 +602,7 @@
 
     MULTI PMC *subtract(Rational value, PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         mpq_sub(RT(dest), RT(SELF), RT(value));
         return dest;
       #else
@@ -743,7 +712,7 @@
 
     MULTI PMC *multiply(Rational value, PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         mpq_mul(RT(dest), RT(SELF), RT(value));
         return dest;
       #else
@@ -853,7 +822,7 @@
 
     MULTI PMC *divide(Rational value, PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         mpq_div(RT(dest), RT(SELF), RT(value));
         return dest;
       #else
@@ -951,7 +920,7 @@
 */
     VTABLE PMC *neg(PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         mpq_neg(RT(dest), RT(SELF));
         return dest;
@@ -984,7 +953,7 @@
 */
     VTABLE PMC *absolute(PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         mpq_abs(RT(dest), RT(SELF));
         return dest;

Modified: branches/ops_pct/src/embed.c
==============================================================================
--- branches/ops_pct/src/embed.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/embed.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -32,13 +32,9 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-PARROT_CANNOT_RETURN_NULL
-PARROT_OBSERVER
-static const char * op_name(PARROT_INTERP, int k)
-        __attribute__nonnull__(1);
-
-static void print_constant_table(PARROT_INTERP)
-        __attribute__nonnull__(1);
+static void print_constant_table(PARROT_INTERP, ARGIN(PMC *output))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 static void print_debug(PARROT_INTERP, SHIM(int status), SHIM(void *p))
         __attribute__nonnull__(1);
@@ -52,10 +48,9 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(3);
 
-#define ASSERT_ARGS_op_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_print_constant_table __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(output))
 #define ASSERT_ARGS_print_debug __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_set_current_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -186,7 +181,7 @@
 void
 Parrot_set_executable_name(PARROT_INTERP, Parrot_String name)
 {
-    PMC * const name_pmc = pmc_new(interp, enum_class_String);
+    PMC * const name_pmc = Parrot_pmc_new(interp, enum_class_String);
     VTABLE_set_string_native(interp, name_pmc, name);
     VTABLE_set_pmc_keyed_int(interp, interp->iglobals, IGLOBALS_EXECUTABLE,
         name_pmc);
@@ -463,7 +458,7 @@
         INTVAL wanted     = program_size;
         size_t read_result;
 
-        program_code = mem_allocate_n_typed(chunk_size, char);
+        program_code = mem_gc_allocate_n_typed(interp, chunk_size, char);
         cursor       = program_code;
         program_size = 0;
 
@@ -474,7 +469,8 @@
                 break;
 
             chunk_size   = 1024;
-            mem_realloc_n_typed(program_code, program_size + chunk_size, char);
+            program_code = mem_gc_realloc_n_typed(interp, program_code,
+                    program_size + chunk_size, char);
 
             if (!program_code) {
                 Parrot_io_eprintf(interp,
@@ -492,7 +488,7 @@
              "Parrot VM: Problem reading packfile from PIO:  code %d.\n",
                         ferror(io));
             fclose(io);
-            mem_sys_free(program_code);
+            mem_gc_free(interp, program_code);
             return NULL;
         }
 
@@ -635,7 +631,7 @@
 setup_argv(PARROT_INTERP, int argc, ARGIN(char **argv))
 {
     ASSERT_ARGS(setup_argv)
-    PMC   *userargv = pmc_new(interp, enum_class_ResizableStringArray);
+    PMC   *userargv = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
     INTVAL i;
 
     if (Interp_debug_TEST(interp, PARROT_START_DEBUG_FLAG)) {
@@ -666,26 +662,6 @@
 
 /*
 
-=item C<static const char * op_name(PARROT_INTERP, int k)>
-
-Returns the name of the opcode.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-PARROT_OBSERVER
-static const char *
-op_name(PARROT_INTERP, int k)
-{
-    ASSERT_ARGS(op_name)
-    return interp->op_info_table[k].full_name;
-}
-
-
-/*
-
 =item C<static void print_debug(PARROT_INTERP, int status, void *p)>
 
 Prints GC info.
@@ -763,7 +739,7 @@
     /* If we didn't find anything, put a dummy PMC into current_sub.
        The default values set by SUb.init are appropiate for the
        dummy, don't need additional settings. */
-    sub_pmc                      = pmc_new(interp, enum_class_Sub);
+    sub_pmc                      = Parrot_pmc_new(interp, enum_class_Sub);
     Parrot_pcc_set_sub(interp, CURRENT_CONTEXT(interp), sub_pmc);
 
     return sub_pmc;
@@ -868,7 +844,7 @@
 
 /*
 
-=item C<static void print_constant_table(PARROT_INTERP)>
+=item C<static void print_constant_table(PARROT_INTERP, PMC *output)>
 
 Prints the contents of the constants table.
 
@@ -876,41 +852,41 @@
 
 */
 static void
-print_constant_table(PARROT_INTERP)
+print_constant_table(PARROT_INTERP, ARGIN(PMC *output))
 {
     ASSERT_ARGS(print_constant_table)
     const INTVAL numconstants = interp->code->const_table->const_count;
     INTVAL i;
 
     /* TODO: would be nice to print the name of the file as well */
-    Parrot_io_printf(interp, "=head1 Constant-table\n\n");
+    Parrot_io_fprintf(interp, output, "=head1 Constant-table\n\n");
 
     for (i = 0; i < numconstants; ++i) {
         const PackFile_Constant * const c = interp->code->const_table->constants[i];
 
         switch (c->type) {
           case PFC_NUMBER:
-            Parrot_io_printf(interp, "PMC_CONST(%d): %f\n", i, c->u.number);
+            Parrot_io_fprintf(interp, output, "PMC_CONST(%d): %f\n", i, c->u.number);
             break;
           case PFC_STRING:
-            Parrot_io_printf(interp, "PMC_CONST(%d): %S\n", i, c->u.string);
+            Parrot_io_fprintf(interp, output, "PMC_CONST(%d): %S\n", i, c->u.string);
             break;
           case PFC_KEY:
-            Parrot_io_printf(interp, "PMC_CONST(%d): ", i);
+            Parrot_io_fprintf(interp, output, "PMC_CONST(%d): ", i);
             /* XXX */
             /* Parrot_print_p(interp, c->u.key); */
-            Parrot_io_printf(interp, "(PMC constant)");
-            Parrot_io_printf(interp, "\n");
+            Parrot_io_fprintf(interp, output, "(PMC constant)");
+            Parrot_io_fprintf(interp, output, "\n");
             break;
           case PFC_PMC:
             {
-                Parrot_io_printf(interp, "PMC_CONST(%d): ", i);
+                Parrot_io_fprintf(interp, output, "PMC_CONST(%d): ", i);
 
                 switch (c->u.key->vtable->base_type) {
                     /* each PBC file has a ParrotInterpreter, but it can't
                      * stringify by itself */
                   case enum_class_ParrotInterpreter:
-                    Parrot_io_printf(interp, "'ParrotInterpreter'");
+                    Parrot_io_fprintf(interp, output, "'ParrotInterpreter'");
                     break;
 
                     /* FixedIntegerArrays used for signatures, handy to print */
@@ -918,15 +894,15 @@
                     {
                         INTVAL n = VTABLE_elements(interp, c->u.key);
                         INTVAL i;
-                        Parrot_io_printf(interp, "[");
+                        Parrot_io_fprintf(interp, output, "[");
 
                         for (i = 0; i < n; ++i) {
                             INTVAL val = VTABLE_get_integer_keyed_int(interp, c->u.key, i);
-                            Parrot_io_printf(interp, "%d", val);
+                            Parrot_io_fprintf(interp, output, "%d", val);
                             if (i < n - 1)
-                                Parrot_io_printf(interp, ",");
+                                Parrot_io_fprintf(interp, output, ",");
                         }
-                        Parrot_io_printf(interp, "]");
+                        Parrot_io_fprintf(interp, output, "]");
                         break;
                     }
                   case enum_class_NameSpace:
@@ -937,28 +913,28 @@
                         /*Parrot_print_p(interp, c->u.key);*/
                         STRING * const s = VTABLE_get_string(interp, c->u.key);
                         if (s)
-                            Parrot_io_printf(interp, "%Ss", s);
+                            Parrot_io_fprintf(interp, output, "%Ss", s);
                         break;
                     }
                   case enum_class_Sub:
-                    Parrot_io_printf(interp, "%S", VTABLE_get_string(interp, c->u.key));
+                    Parrot_io_fprintf(interp, output, "%S", VTABLE_get_string(interp, c->u.key));
                     break;
                   default:
-                    Parrot_io_printf(interp, "(PMC constant)");
+                    Parrot_io_fprintf(interp, output, "(PMC constant)");
                     break;
                 }
 
-                Parrot_io_printf(interp, "\n");
+                Parrot_io_fprintf(interp, output, "\n");
                 break;
             }
           default:
-            Parrot_io_printf(interp, "wrong constant type in constant table!\n");
+            Parrot_io_fprintf(interp, output,  "wrong constant type in constant table!\n");
             /* XXX throw an exception? Is it worth the trouble? */
             break;
         }
     }
 
-    Parrot_io_printf(interp, "\n=cut\n\n");
+    Parrot_io_fprintf(interp, output, "\n=cut\n\n");
 }
 
 
@@ -977,14 +953,23 @@
 
 PARROT_EXPORT
 void
-Parrot_disassemble(PARROT_INTERP, SHIM(const char *outfile), Parrot_disassemble_options options)
+Parrot_disassemble(PARROT_INTERP, ARGIN(const char *outfile), Parrot_disassemble_options options)
 {
     PDB_line_t *line;
-    PDB_t * const pdb   = mem_allocate_zeroed_typed(PDB_t);
+    PDB_t * const pdb   = mem_gc_allocate_typed(interp, PDB_t);
     int num_mappings    = 0;
     int curr_mapping    = 0;
     int op_code_seq_num = 0;
     int debugs;
+    PMC *output;
+
+    if (outfile != NULL) {
+        output = Parrot_io_open(interp, PMCNULL,
+                Parrot_str_new(interp, outfile, 0),
+                Parrot_str_new_constant(interp, "tw"));
+    }
+    else
+        output = Parrot_io_stdhandle(interp, PIO_STDOUT_FILENO, PMCNULL);
 
     interp->pdb     = pdb;
     pdb->cur_opcode = interp->code->base.data;
@@ -994,26 +979,26 @@
     line   = pdb->file->line;
     debugs = (interp->code->debugs != NULL);
 
-    print_constant_table(interp);
+    print_constant_table(interp, output);
     if (options & enum_DIS_HEADER)
         return;
 
     if (!(options & enum_DIS_BARE))
-        Parrot_io_printf(interp, "# %12s-%12s", "Seq_Op_Num", "Relative-PC");
+        Parrot_io_fprintf(interp, output, "# %12s-%12s", "Seq_Op_Num", "Relative-PC");
 
     if (debugs) {
         if (!(options & enum_DIS_BARE))
-            Parrot_io_printf(interp, " %6s:\n", "SrcLn#");
+            Parrot_io_fprintf(interp, output, " %6s:\n", "SrcLn#");
         num_mappings = interp->code->debugs->num_mappings;
     }
     else {
-        Parrot_io_printf(interp, "\n");
+        Parrot_io_fprintf(interp, output, "\n");
     }
 
     while (line->next) {
         const char *c;
 
-        /* Parrot_io_printf(interp, "%i < %i %i == %i \n", curr_mapping,
+        /* Parrot_io_fprintf(interp, output, "%i < %i %i == %i \n", curr_mapping,
          * num_mappings, op_code_seq_num,
          * interp->code->debugs->mappings[curr_mapping]->offset); */
 
@@ -1021,35 +1006,37 @@
             if (op_code_seq_num == interp->code->debugs->mappings[curr_mapping]->offset) {
                 const int filename_const_offset =
                     interp->code->debugs->mappings[curr_mapping]->filename;
-                Parrot_io_printf(interp, "# Current Source Filename '%Ss'\n",
+                Parrot_io_fprintf(interp, output, "# Current Source Filename '%Ss'\n",
                         interp->code->const_table->constants[filename_const_offset]->u.string);
                 curr_mapping++;
             }
         }
 
         if (!(options & enum_DIS_BARE))
-            Parrot_io_printf(interp, "%012i-%012i",
+            Parrot_io_fprintf(interp, output, "%012i-%012i",
                              op_code_seq_num, line->opcode - interp->code->base.data);
 
         if (debugs && !(options & enum_DIS_BARE))
-            Parrot_io_printf(interp, " %06i: ",
+            Parrot_io_fprintf(interp, output, " %06i: ",
                     interp->code->debugs->base.data[op_code_seq_num]);
 
         /* If it has a label print it */
         if (line->label)
-            Parrot_io_printf(interp, "L%li:\t", line->label->number);
+            Parrot_io_fprintf(interp, output, "L%li:\t", line->label->number);
         else
-            Parrot_io_printf(interp, "\t");
+            Parrot_io_fprintf(interp, output, "\t");
 
         c = pdb->file->source + line->source_offset;
 
         while (c && *c != '\n')
-            Parrot_io_printf(interp, "%c", *(c++));
+            Parrot_io_fprintf(interp, output, "%c", *(c++));
 
-        Parrot_io_printf(interp, "\n");
+        Parrot_io_fprintf(interp, output, "\n");
         line = line->next;
         op_code_seq_num++;
     }
+    if (outfile != NULL)
+        Parrot_io_close(interp, output);
 
     return;
 }
@@ -1076,7 +1063,7 @@
     PackFile * const pf = PackFile_new(interp, 0);
     static opcode_t program_code[2];
 
-    program_code[0] = interp->op_lib->op_code("enternative", 0);
+    program_code[0] = interp->op_lib->op_code(interp, "enternative", 0);
     program_code[1] = 0; /* end */
 
     pf->cur_cs = (PackFile_ByteCode *)

Deleted: branches/ops_pct/src/events.c
==============================================================================
--- branches/ops_pct/src/events.c	Sun Mar  7 19:33:20 2010	(r44742)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,1561 +0,0 @@
-/*
-Copyright (C) 2001-2008, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/events.c - Event handling stuff
-
-=head1 DESCRIPTION
-
-An event_thread handles async events for all interpreters. When events
-are due, they are placed in per interpreter task_queues, where they are
-handled then by the C<check_event*> opcodes.
-
-IO events and signals are caught in the io_thread, which again
-dispatches these to one or all interpreters.
-
-=over 4
-
-=cut
-
-*/
-
-#include "parrot/parrot.h"
-#include "parrot/events.h"
-#include "events.str"
-
-typedef struct pending_io_events {
-    parrot_event **events;
-    size_t n;
-    size_t alloced;
-} pending_io_events;
-
-/* HEADERIZER HFILE: include/parrot/events.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 opcode_t * do_event(PARROT_INTERP,
-    ARGIN(parrot_event* event),
-    ARGIN_NULLOK(opcode_t *next))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_MALLOC
-PARROT_CANNOT_RETURN_NULL
-static QUEUE_ENTRY* dup_entry(ARGIN(const QUEUE_ENTRY *entry))
-        __attribute__nonnull__(1);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static QUEUE_ENTRY* dup_entry_interval(
-    ARGIN(QUEUE_ENTRY *entry),
-    FLOATVAL now)
-        __attribute__nonnull__(1);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static void* event_thread(ARGMOD(void *data))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*data);
-
-static void event_to_exception(PARROT_INTERP,
-    ARGIN(const parrot_event* event))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-static void init_events_all(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-static void init_events_first(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-PARROT_CAN_RETURN_NULL
-static void* io_thread(SHIM(void *data));
-
-static void io_thread_ready_rd(ARGMOD(pending_io_events *ios), int ready_rd)
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*ios);
-
-static void Parrot_sigaction(int sig, ARGIN(void (*handler)(int)))
-        __attribute__nonnull__(2);
-
-static void Parrot_unblock_signal(int sig);
-static int process_events(ARGMOD(QUEUE *event_q))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*event_q);
-
-static void schedule_signal_event(int signum);
-static void sig_handler(int signum);
-static void stop_io_thread(void);
-static void store_io_event(
-    ARGMOD(pending_io_events *ios),
-    ARGIN(parrot_event *ev))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*ios);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static opcode_t * wait_for_wakeup(PARROT_INTERP,
-    ARGIN_NULLOK(opcode_t *next))
-        __attribute__nonnull__(1);
-
-#define ASSERT_ARGS_do_event __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(event))
-#define ASSERT_ARGS_dup_entry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(entry))
-#define ASSERT_ARGS_dup_entry_interval __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(entry))
-#define ASSERT_ARGS_event_thread __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(data))
-#define ASSERT_ARGS_event_to_exception __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(event))
-#define ASSERT_ARGS_init_events_all __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_init_events_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_io_thread __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_io_thread_ready_rd __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ios))
-#define ASSERT_ARGS_Parrot_sigaction __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(handler))
-#define ASSERT_ARGS_Parrot_unblock_signal __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_process_events __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(event_q))
-#define ASSERT_ARGS_schedule_signal_event __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_sig_handler __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_stop_io_thread __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_store_io_event __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ios) \
-    , PARROT_ASSERT_ARG(ev))
-#define ASSERT_ARGS_wait_for_wakeup __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 */
-
-/*
- * event debugging stuff - turn it off before running tests
- */
-#define EVENT_DEBUG 0
-/*
- * not yet - need to sort out platform code and fix exceptions first
- * TODO get some config for POSIX compliant
- * TODO create API for extenders like ponie - events disabled for now
- */
-#if defined(linux) || defined(darwin)
-#  define INSTALL_EVENT_HANDLER 0
-#else
-#  define INSTALL_EVENT_HANDLER 0
-#endif
-
-#if EVENT_DEBUG
-#  define edebug(x) fprintf (x)
-static const char *ev_names[] = {
-    "EVENT_TYPE_NONE",
-    "EVENT_TYPE_EVENT",
-    "EVENT_TYPE_IO",
-    "EVENT_TYPE_MSG",
-    "EVENT_TYPE_TIMER",
-    "EVENT_TYPE_CALL_BACK",
-    "EVENT_TYPE_SLEEP",
-    "EVENT_TYPE_TERMINATE",
-    "EVENT_TYPE_EVENT_TERMINATE",
-    "EVENT_TYPE_CLASS_CHANGED",
-    "EVENT_TYPE_SIGNAL",
-    "EVENT_TYPE_SUSPEND_FOR_GC"
-};
-static const char*
-et(const parrot_event* const e)
-{
-    return ev_names[e->type];
-}
-
-#else
-#  define edebug(x)
-#endif
-
-
-/* forward defs */
-
-/*
- * we have exactly one global event_queue
- * TODO task prio handling
- */
-static QUEUE *event_queue;
-#define TASK_PRIO 10
-
-/*
- * user accessible signals like SIGINT
- */
-#ifndef SIGINT
-#  define SIGINT -4711
-#endif
-#ifndef SIGHUP
-#  define SIGHUP -4712
-#endif
-
-/*
- * XXX need a configure test
- * should be sig_atomic_t
- */
-static int sig_int, sig_hup;
-
-/*
- * a pipe is used to send messages to the IO thread
- */
-static int pipe_fds[2];
-#define PIPE_READ_FD  pipe_fds[0]
-#define PIPE_WRITE_FD pipe_fds[1]
-
-/*
- * a structure to communicate with the io_thread
- */
-typedef struct io_thread_msg {
-    INTVAL command;
-    parrot_event *ev;
-} io_thread_msg;
-
-
-/*
-
-=back
-
-=head2 Signal Handling
-
-=over 4
-
-=item C<static void sig_handler(int signum)>
-
-Handle signal C<signum>.
-
-TODO - Only C<SIGHUP> is handled at the moment for testing
-
-=cut
-
-*/
-
-static void
-sig_handler(int signum)
-{
-    ASSERT_ARGS(sig_handler)
-    switch (signum) {
-      case SIGINT:
-        sig_int = 1;
-        break;
-      case SIGHUP:
-        sig_hup = 1;
-        break;
-      default:
-        break;
-    }
-}
-
-/*
-
-=item C<static void Parrot_sigaction(int sig, void (*handler(int)))>
-
-Signal handlers are common to all threads, signal block masks are
-specific, so we install one handler then block that signal and unblock
-it in the thread, that will receive that signal.
-
-=cut
-
-*/
-
-static void
-Parrot_sigaction(int sig, ARGIN(void (*handler)(int)))
-{
-    ASSERT_ARGS(Parrot_sigaction)
-#ifdef PARROT_HAS_SIGACTION
-    struct sigaction action;
-    sigset_t block_mask;
-
-    /* install handler */
-    action.sa_handler = handler;
-    sigemptyset(&action.sa_mask);
-    action.sa_flags = 0;
-    sigaction(sig, &action, NULL);
-
-    /* block that signal */
-    sigemptyset(&block_mask);
-    sigaddset(&block_mask, sig);
-    sigprocmask(SIG_BLOCK, &block_mask, NULL);
-#else
-    UNUSED(sig);
-    UNUSED(handler);
-#endif
-}
-
-
-/*
-
-=item C<static void Parrot_unblock_signal(int sig)>
-
-unblock a signal
-
-=cut
-
-*/
-
-static void
-Parrot_unblock_signal(int sig)
-{
-    ASSERT_ARGS(Parrot_unblock_signal)
-#ifdef PARROT_HAS_SIGACTION
-    sigset_t block_mask;
-
-    sigemptyset(&block_mask);
-    sigaddset(&block_mask, sig);
-    sigprocmask(SIG_UNBLOCK, &block_mask, NULL);
-#else
-    UNUSED(sig);
-#endif
-}
-
-
-/*
-
-=item C<void Parrot_init_signals(void)>
-
-Set up actions to handle signals.
-Only SIGHUP handled at the moment.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_init_signals(void)
-{
-    ASSERT_ARGS(Parrot_init_signals)
-    /*
-     * SIGFPE is architecture specific - some signal an error,
-     * some don't, so we have to use direct checks if we are dividing
-     * by zero.
-     */
-    Parrot_sigaction(SIGHUP, sig_handler);
-}
-
-/*
-
-=back
-
-=head2 Initialization
-
-=over 4
-
-=item C<static void init_events_first(PARROT_INTERP)>
-
-Init event system for first interpreter.
-
-=cut
-
-*/
-
-static void
-init_events_first(PARROT_INTERP)
-{
-    ASSERT_ARGS(init_events_first)
-    Parrot_thread    ev_handle;
-#ifndef WIN32
-    Parrot_thread    io_handle;
-#endif
-
-    /*
-     * be sure all init is done only once
-     * we could use pthread_once for that too
-     */
-    if (event_queue)
-        PANIC(interp, "event queue already exists - missing parent_interp?");
-    /*
-     * create event queue
-     */
-    event_queue = queue_init(TASK_PRIO);
-    /*
-     * we use a message pipe to send IO related stuff to the
-     * IO thread
-     */
-#ifndef WIN32
-    /*
-     * pipes on WIN32 don't support select
-     * s. p6i: "event.c - of signals and pipes"
-     */
-    if (pipe(pipe_fds))
-        Parrot_ex_throw_from_c_args(interp, NULL, 1, "Couldn't create message pipe");
-#endif
-    /*
-     * now set some sig handlers before any thread is started, so
-     * that all threads inherit the signal block mask
-     */
-#if INSTALL_EVENT_HANDLER
-    Parrot_init_signals();
-#endif
-    /*
-     * we start an event_handler thread
-     */
-    THREAD_CREATE_DETACHED(ev_handle, event_thread, event_queue);
-    /*
-     * and a signal and IO handler thread
-     */
-#ifndef WIN32
-    THREAD_CREATE_DETACHED(io_handle, io_thread, event_queue);
-#endif
-}
-
-/*
-
-=item C<static void init_events_all(PARROT_INTERP)>
-
-Init events for all interpreters.
-
-=cut
-
-*/
-
-static void
-init_events_all(PARROT_INTERP)
-{
-    ASSERT_ARGS(init_events_all)
-    /*
-     * create per interpreter task queue
-     */
-    interp->task_queue = queue_init(0);
-}
-
-/*
-
-=item C<void Parrot_init_events(PARROT_INTERP)>
-
-Initialize the event system.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_init_events(PARROT_INTERP)
-{
-    ASSERT_ARGS(Parrot_init_events)
-    if (!interp->parent_interpreter) {
-        /* add the very first interpreter to the list of interps. */
-        pt_add_to_interpreters(interp, NULL);
-        init_events_first(interp);
-    }
-    init_events_all(interp);
-}
-
-/*
-
-=back
-
-=head2 Event Handler Functions
-
-=over 4
-
-=item C<void Parrot_schedule_event(PARROT_INTERP, parrot_event* ev)>
-
-Create queue entry and insert event into task queue.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_schedule_event(PARROT_INTERP, ARGMOD(parrot_event* ev))
-{
-    ASSERT_ARGS(Parrot_schedule_event)
-    QUEUE_ENTRY * const entry = mem_allocate_typed(QUEUE_ENTRY);
-    entry->next = NULL;
-    ev->interp  = interp;
-    entry->data = ev;
-    switch (ev->type) {
-      case EVENT_TYPE_TIMER:
-      case EVENT_TYPE_SLEEP:
-        entry->type = QUEUE_ENTRY_TYPE_TIMED_EVENT;
-        insert_entry(event_queue, entry);
-        break;
-      case EVENT_TYPE_CALL_BACK:
-      case EVENT_TYPE_SIGNAL:
-      case EVENT_TYPE_IO:
-        entry->type = QUEUE_ENTRY_TYPE_EVENT;
-        unshift_entry(event_queue, entry);
-        break;
-      default:
-        entry->type = QUEUE_ENTRY_TYPE_EVENT;
-        push_entry(event_queue, entry);
-        break;
-    }
-}
-
-/*
-
-=item C<static void schedule_signal_event(int signum)>
-
-create and schedule a signal event
-
-=cut
-
-*/
-
-static void
-schedule_signal_event(int signum)
-{
-    ASSERT_ARGS(schedule_signal_event)
-    parrot_event* const ev    = mem_allocate_typed(parrot_event);
-    QUEUE_ENTRY * const entry = mem_allocate_typed(QUEUE_ENTRY);
-
-    entry->next  = NULL;
-    entry->type  = QUEUE_ENTRY_TYPE_EVENT;
-    ev->type     = EVENT_TYPE_SIGNAL;
-    ev->u.signal = signum;
-    entry->data  = ev;
-    /*
-     * deliver to all interpreters
-     */
-    Parrot_schedule_broadcast_qentry(entry);
-}
-
-/*
-
-=item C<void Parrot_new_timer_event(PARROT_INTERP, PMC *timer, FLOATVAL diff,
-FLOATVAL interval, int repeat, PMC *sub, parrot_event_type_enum typ)>
-
-Create a new timer event due at C<diff> from now, repeated at C<interval>
-and running the passed C<sub>.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_new_timer_event(PARROT_INTERP, ARGIN_NULLOK(PMC *timer), FLOATVAL diff,
-        FLOATVAL interval, int repeat, ARGIN_NULLOK(PMC *sub), parrot_event_type_enum typ)
-{
-    ASSERT_ARGS(Parrot_new_timer_event)
-    parrot_event* const ev = mem_allocate_typed(parrot_event);
-
-    const FLOATVAL now = Parrot_floatval_time();
-
-    ev->type                   = typ;
-    ev->u.timer_event.timer    = timer;
-    ev->u.timer_event.abs_time = now + diff;
-    ev->u.timer_event.interval = interval;
-    ev->u.timer_event.repeat   = repeat;
-    ev->u.timer_event.sub      = sub;
-
-    if (repeat && FLOAT_IS_ZERO(interval))
-        ev->u.timer_event.interval = diff;
-
-    Parrot_schedule_event(interp, ev);
-}
-
-/*
-
-=item C<void Parrot_new_cb_event(PARROT_INTERP, PMC *cbi, char *ext)>
-
-Prepare and schedule a callback event.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_new_cb_event(PARROT_INTERP, ARGIN(PMC *cbi), ARGIN(char *ext))
-{
-    ASSERT_ARGS(Parrot_new_cb_event)
-    parrot_event* const ev    = mem_allocate_typed(parrot_event);
-    QUEUE_ENTRY*  const entry = mem_allocate_typed(QUEUE_ENTRY);
-
-    entry->next = NULL;
-    entry->data = ev;
-    ev->interp  = interp;
-    ev->type    = EVENT_TYPE_CALL_BACK;
-    ev->u.call_back.cbi           = cbi;
-    ev->u.call_back.external_data = ext;
-    Parrot_schedule_interp_qentry(interp, entry);
-}
-
-/*
-
-=item C<void Parrot_del_timer_event(PARROT_INTERP, const PMC *timer)>
-
-Deactivate the timer identified by C<timer>.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_del_timer_event(PARROT_INTERP, ARGIN(const PMC *timer))
-{
-    ASSERT_ARGS(Parrot_del_timer_event)
-    QUEUE_ENTRY *entry;
-
-    LOCK(event_queue->queue_mutex);
-
-    for (entry = event_queue->head; entry; entry = entry->next) {
-        if (entry->type == QUEUE_ENTRY_TYPE_TIMED_EVENT) {
-
-            parrot_event * const event = (parrot_event *)entry->data;
-
-            if (event->interp == interp
-                    && event->u.timer_event.timer == timer) {
-                event->u.timer_event.interval = 0.0;
-                event->type = EVENT_TYPE_NONE;
-                break;
-            }
-        }
-    }
-    UNLOCK(event_queue->queue_mutex);
-}
-
-/*
-
-=item C<void Parrot_new_terminate_event(PARROT_INTERP)>
-
-Create a terminate event, interpreter will leave the run-loop when this
-event arrives.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_new_terminate_event(PARROT_INTERP)
-{
-    ASSERT_ARGS(Parrot_new_terminate_event)
-    parrot_event* const ev = mem_allocate_typed(parrot_event);
-    ev->type = EVENT_TYPE_TERMINATE;
-    Parrot_schedule_event(interp, ev);
-}
-
-/*
-
-=item C<void Parrot_new_suspend_for_gc_event(PARROT_INTERP)>
-
-Create a suspend-for-GC event, interpreter will wait on a condition
-variable for GC to finish when the event arrives.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_new_suspend_for_gc_event(PARROT_INTERP)
-{
-    ASSERT_ARGS(Parrot_new_suspend_for_gc_event)
-    QUEUE_ENTRY *qe;
-    parrot_event* const ev = mem_allocate_typed(parrot_event);
-    ev->type = EVENT_TYPE_SUSPEND_FOR_GC;
-    qe = mem_allocate_typed(QUEUE_ENTRY);
-    qe->next = NULL;
-    qe->data = ev;
-    qe->type = QUEUE_ENTRY_TYPE_EVENT;
-    /* we don't use schedule_event because we must modify its
-     * task queue immediately
-     */
-    Parrot_schedule_interp_qentry(interp, qe);
-}
-
-/*
-
-=item C<void Parrot_kill_event_loop(PARROT_INTERP)>
-
-Schedule event-loop terminate event. This shuts down the event thread.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_kill_event_loop(PARROT_INTERP)
-{
-    ASSERT_ARGS(Parrot_kill_event_loop)
-    parrot_event* const ev = mem_allocate_typed(parrot_event);
-    ev->type = EVENT_TYPE_EVENT_TERMINATE;
-    Parrot_schedule_event(interp, ev);
-}
-
-/*
-
-=item C<void Parrot_schedule_interp_qentry(PARROT_INTERP, struct QUEUE_ENTRY
-*entry)>
-
-Put a queue entry into the interpreters task queue and enable event
-checking for the interpreter.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_schedule_interp_qentry(PARROT_INTERP, ARGIN(struct QUEUE_ENTRY *entry))
-{
-    ASSERT_ARGS(Parrot_schedule_interp_qentry)
-    parrot_event * const event = (parrot_event *)entry->data;
-    /*
-     * sleep checks events when it awakes
-     */
-    edebug((stderr, "got entry - schedule_inter_qentry %s\n", et(event)));
-    if (event->type != EVENT_TYPE_SLEEP)
-        enable_event_checking(interp);
-    /*
-     * do push_entry last - this signales the queue condition so the
-     * interpreter might starting process that event immediately
-     *
-     * we should better use a priority for placing the event
-     * in front or at the end of the queue
-     */
-    switch (event->type) {
-      case EVENT_TYPE_CALL_BACK:
-      case EVENT_TYPE_SIGNAL:
-        unshift_entry(interp->task_queue, entry);
-        break;
-      default:
-        push_entry(interp->task_queue, entry);
-        break;
-    }
-}
-
-/*
-
-=item C<void Parrot_schedule_broadcast_qentry(struct QUEUE_ENTRY *entry)>
-
-Broadcast an event.
-
-=cut
-
-*/
-
-void
-Parrot_schedule_broadcast_qentry(ARGIN(struct QUEUE_ENTRY *entry))
-{
-    ASSERT_ARGS(Parrot_schedule_broadcast_qentry)
-    parrot_event * const event = (parrot_event *)entry->data;
-
-    switch (event->type) {
-      case EVENT_TYPE_SIGNAL:
-        edebug((stderr, "broadcast signal\n"));
-        /*
-         * we don't have special signal handlers in usercode yet
-         * e.g.:
-         * install handler like exception handler *and*
-         * set a interpreter flag, that a handler exists
-         * we then could examine that flag (after LOCKing it)
-         * and dispatch the exception to all interpreters that
-         * handle it
-         * Finally, we send the first (main) interpreter that signal
-         *
-         * For now just send to all.
-         *
-         */
-        switch (event->u.signal) {
-          case SIGHUP:
-          case SIGINT:
-            {
-                if (n_interpreters) {
-                    size_t i;
-                    LOCK(interpreter_array_mutex);
-                    for (i = 1; i < n_interpreters; ++i) {
-                        Interp *interp;
-                        edebug((stderr, "deliver SIGINT to %d\n", i));
-                        interp = interpreter_array[i];
-                        if (interp)
-                            Parrot_schedule_interp_qentry(interp,
-                                        dup_entry(entry));
-                    }
-                    UNLOCK(interpreter_array_mutex);
-                }
-                Parrot_schedule_interp_qentry(interpreter_array[0], entry);
-                edebug((stderr, "deliver SIGINT to 0\n"));
-            }
-            break;
-          default:
-            mem_sys_free(entry);
-            mem_sys_free(event);
-        }
-        break;
-      default:
-        mem_sys_free(entry);
-        mem_sys_free(event);
-        exit_fatal(1, "Unknown event to broadcast");
-        break;
-    }
-}
-
-/*
-
-=back
-
-=head2 IO Thread Handling
-
-=over 4
-
-=cut
-
-*/
-
-#ifndef WIN32
-
-/*
-
-=item C<static void store_io_event(pending_io_events *ios, parrot_event *ev)>
-
-Stores an event in the event stack.  Allocates memory if necessary.
-
-=cut
-
-*/
-
-static void
-store_io_event(ARGMOD(pending_io_events *ios), ARGIN(parrot_event *ev))
-{
-    ASSERT_ARGS(store_io_event)
-    if (!ios->alloced) {
-        ios->alloced = 16;
-        ios->events  = mem_allocate_n_zeroed_typed(ios->alloced, parrot_event *);
-    }
-    else if (ios->n >= ios->alloced) {
-        ios->alloced *= 2;
-        mem_realloc_n_typed(ios->events, ios->alloced, parrot_event *);
-    }
-    ios->events[ios->n++] = ev;
-}
-
-/*
-
-=item C<static void io_thread_ready_rd(pending_io_events *ios, int ready_rd)>
-
-Takes a list of pending i/o events and a file descriptor.
-If the fd is ready to read, the event is removed from the
-"pending" list and moved to the "scheduled" task queue.
-
-=cut
-
-*/
-
-static void
-io_thread_ready_rd(ARGMOD(pending_io_events *ios), int ready_rd)
-{
-    ASSERT_ARGS(io_thread_ready_rd)
-    size_t i;
-
-    for (i = 0; i < ios->n; ++i) {
-        parrot_event * const ev  = ios->events[i];
-        PMC          * const pio = ev->u.io_event.pio;
-        const int            fd  = Parrot_io_getfd(ev->interp, pio);
-
-        if (fd == ready_rd) {
-            /* remove from event list */
-            --ios->n;
-
-            for (; i < ios->n; ++i)
-                ios->events[i] = ios->events[i+1];
-
-            Parrot_schedule_event(ev->interp, ev);
-            break;
-        }
-    }
-}
-
-/*
-
-=item C<static void* io_thread(void *data)>
-
-The IO thread uses select/poll to handle IO events and signals.
-
-It waits on input from the message pipe to insert file descriptors in
-the wait sets.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-static void*
-io_thread(SHIM(void *data))
-{
-    ASSERT_ARGS(io_thread)
-    fd_set act_rfds, act_wfds;
-    int n_highest, i;
-    int  running = 1;
-    pending_io_events ios;
-
-    ios.n       = 0;
-    ios.alloced = 0;
-    ios.events  = 0;
-    /* remember pending io events */
-
-    FD_ZERO(&act_rfds);
-    FD_ZERO(&act_wfds);
-    /*
-     * Watch the reader end of the pipe for messages
-     */
-    FD_SET(PIPE_READ_FD, &act_rfds);
-    n_highest = PIPE_READ_FD + 1;
-    /*
-     * all signals that we shall handle here have to be unblocked
-     * in this and only in this thread
-     */
-    Parrot_unblock_signal(SIGHUP);
-    while (running) {
-        fd_set rfds = act_rfds;
-        fd_set wfds = act_wfds;
-        const int retval = select(n_highest, &rfds, &wfds, NULL, NULL);
-
-        switch (retval) {
-          case -1:
-            if (errno == EINTR) {
-                edebug((stderr, "select EINTR\n"));
-                if (sig_int) {
-                    edebug((stderr, "int arrived\n"));
-                    sig_int = 0;
-                    /*
-                     * signal the event thread
-                     */
-                    schedule_signal_event(SIGINT);
-                }
-                if (sig_hup) {
-                    edebug((stderr, "int arrived\n"));
-                    sig_hup = 0;
-                    /*
-                     * signal the event thread
-                     */
-                    schedule_signal_event(SIGHUP);
-                }
-
-            }
-            break;
-          case 0:     /* timeout - can't happen */
-            break;
-          default:
-            edebug((stderr, "IO ready\n"));
-            for (i = 0; i < n_highest; ++i) {
-                if (FD_ISSET(i, &rfds)) {
-                    if (i == PIPE_READ_FD) {
-                        io_thread_msg buf;
-                        /*
-                         * a command arrived
-                         */
-                        edebug((stderr, "msg arrived\n"));
-                        if (read(PIPE_READ_FD, &buf, sizeof (buf)) != sizeof (buf))
-                            exit_fatal(1,
-                                    "read error from msg pipe");
-                        switch (buf.command) {
-                          case IO_THR_MSG_TERMINATE:
-                            running = 0;
-                            break;
-                          case IO_THR_MSG_ADD_SELECT_RD:
-                            {
-                                PMC * const pio = buf.ev->u.io_event.pio;
-                                const int fd = Parrot_io_getfd(buf.ev->interp, pio);
-                                if (FD_ISSET(fd, &act_rfds)) {
-                                    mem_sys_free(buf.ev);
-                                    break;
-                                }
-                                FD_SET(fd, &act_rfds);
-                                if (fd >= n_highest)
-                                    n_highest = fd + 1;
-                                store_io_event(&ios, buf.ev);
-                            }
-                            break;
-                          default:
-                            /* TODO */
-                            exit_fatal(1, "unhandled msg in pipe");
-                            break;
-                        }
-
-                    }
-                    else {
-                        /*
-                         * one of the io_event fds is ready
-                         * remove from active set, as we don't
-                         * want to fire again during io_handler
-                         * invocation
-                         */
-                        FD_CLR(i, &act_rfds);
-                        io_thread_ready_rd(&ios, i);
-                    }
-                }
-            }
-            /* TODO check fds */
-            break;
-        }
-    }
-    edebug((stderr, "IO thread terminated\n"));
-    close(PIPE_READ_FD);
-    close(PIPE_WRITE_FD);
-    return NULL;
-}
-#endif
-
-/*
-
-=item C<static void stop_io_thread(void)>
-
-Tell the IO thread to stop.
-
-=cut
-
-*/
-
-static void
-stop_io_thread(void)
-{
-    ASSERT_ARGS(stop_io_thread)
-#ifndef WIN32
-    io_thread_msg buf;
-    /*
-     * tell IO thread to stop
-     */
-    memset(&buf, 0, sizeof (buf));
-    buf.command = IO_THR_MSG_TERMINATE;
-    if (write(PIPE_WRITE_FD, &buf, sizeof (buf)) != sizeof (buf))
-        exit_fatal(1, "msg pipe write failed");
-#endif
-}
-
-/*
-
-=item C<void Parrot_event_add_io_event(PARROT_INTERP, PMC *pio, PMC *sub, PMC
-*data, INTVAL which)>
-
-Create new i/o event.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_event_add_io_event(PARROT_INTERP,
-        ARGIN_NULLOK(PMC *pio), ARGIN_NULLOK(PMC *sub), ARGIN_NULLOK(PMC *data), INTVAL which)
-{
-    ASSERT_ARGS(Parrot_event_add_io_event)
-    io_thread_msg buf;
-    parrot_event * const event = mem_allocate_typed(parrot_event);
-
-    event->type   = EVENT_TYPE_IO;
-    event->interp = interp;
-    /*
-     * TODO gc_register these PMCs as long as the event system
-     *      owns these 3
-     *      unregister, when event is passed to interp again
-     */
-    event->u.io_event.pio       = pio;
-    event->u.io_event.handler   = sub;
-    event->u.io_event.user_data = data;
-
-    buf.command = which;
-    buf.ev      = event;
-    /* XXX Why isn't this entire function inside an ifndef WIN32? */
-#ifndef WIN32
-    if (write(PIPE_WRITE_FD, &buf, sizeof (buf)) != sizeof (buf))
-        Parrot_ex_throw_from_c_args(interp, NULL, 1, "msg pipe write failed");
-#endif
-}
-
-
-/*
-
-=back
-
-=head2 Event Handler Thread Functions
-
-=over 4
-
-=item C<static QUEUE_ENTRY* dup_entry(const QUEUE_ENTRY *entry)>
-
-Duplicate queue entry.
-
-=cut
-
-*/
-
-PARROT_MALLOC
-PARROT_CANNOT_RETURN_NULL
-static QUEUE_ENTRY*
-dup_entry(ARGIN(const QUEUE_ENTRY *entry))
-{
-    ASSERT_ARGS(dup_entry)
-    QUEUE_ENTRY * const new_entry = mem_allocate_typed(QUEUE_ENTRY);
-
-    new_entry->next = NULL;
-    new_entry->type = entry->type;
-    new_entry->data = mem_allocate_typed(parrot_event);
-
-    mem_sys_memcopy(new_entry->data, entry->data, sizeof (parrot_event));
-    return new_entry;
-}
-
-/*
-
-=item C<static QUEUE_ENTRY* dup_entry_interval(QUEUE_ENTRY *entry, FLOATVAL
-now)>
-
-Duplicate timed entry and add interval to C<abs_time>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static QUEUE_ENTRY*
-dup_entry_interval(ARGIN(QUEUE_ENTRY *entry), FLOATVAL now)
-{
-    ASSERT_ARGS(dup_entry_interval)
-    QUEUE_ENTRY  * const new_entry = dup_entry(entry);
-    parrot_event * const event     = (parrot_event *)new_entry->data;
-
-    event->u.timer_event.abs_time  = now + event->u.timer_event.interval;
-
-    return new_entry;
-}
-
-/*
-
-=item C<static int process_events(QUEUE *event_q)>
-
-Do something, when an event arrived caller has locked the mutex returns
-0 if event thread terminates.
-
-=cut
-
-*/
-
-static int
-process_events(ARGMOD(QUEUE *event_q))
-{
-    ASSERT_ARGS(process_events)
-    FLOATVAL     now;
-    QUEUE_ENTRY *entry;
-
-    while ((entry = peek_entry(event_q)) != NULL) {
-        /*
-         * one or more entries arrived - we hold the mutex again
-         * so we have to use the nonsyc_pop_entry to pop off event entries
-         */
-        parrot_event *event = NULL;
-
-        switch (entry->type) {
-          case QUEUE_ENTRY_TYPE_EVENT:
-            entry = nosync_pop_entry(event_q);
-            event = (parrot_event *)entry->data;
-            break;
-
-          case QUEUE_ENTRY_TYPE_TIMED_EVENT:
-            event = (parrot_event *)entry->data;
-            now   = Parrot_floatval_time();
-
-            /*
-             * if the timer_event isn't due yet, ignore the event
-             * (we were signalled on insert of the event)
-             * wait until we get at it again when time has elapsed
-             */
-            if (now < event->u.timer_event.abs_time)
-                return 1;
-            entry = nosync_pop_entry(event_q);
-
-            /* if event is repeated dup and reinsert it */
-
-            if (event->u.timer_event.interval) {
-                if (event->u.timer_event.repeat) {
-                    if (event->u.timer_event.repeat != -1)
-                        event->u.timer_event.repeat--;
-                    nosync_insert_entry(event_q,
-                                dup_entry_interval(entry, now));
-                }
-            }
-            break;
-          default:
-            exit_fatal(1, "Unknown queue entry");
-        }
-        PARROT_ASSERT(event);
-        if (event->type == EVENT_TYPE_NONE) {
-            mem_sys_free(entry);
-            mem_sys_free(event);
-            continue;
-        }
-        else if (event->type == EVENT_TYPE_EVENT_TERMINATE) {
-            mem_sys_free(entry);
-            mem_sys_free(event);
-
-            return 0;
-        }
-        /*
-         * now insert entry in interpreter task queue
-         */
-        if (event->interp) {
-            Parrot_schedule_interp_qentry(event->interp, entry);
-        }
-        else {
-            Parrot_schedule_broadcast_qentry(entry);
-        }
-    } /* while events */
-    return 1;
-}
-
-/*
-
-=item C<static void* event_thread(void *data)>
-
-The event thread is started by the first interpreter. It handles all
-events for all interpreters.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static void*
-event_thread(ARGMOD(void *data))
-{
-    ASSERT_ARGS(event_thread)
-    QUEUE * const event_q = (QUEUE *) data;
-    int running = 1;
-
-    LOCK(event_q->queue_mutex);
-    /*
-     * we might already have an event in the queue
-     */
-    if (peek_entry(event_q))
-        running = process_events(event_q);
-    while (running) {
-        QUEUE_ENTRY * const entry = peek_entry(event_q);
-
-        if (!entry) {
-            /* wait infinite until entry arrives */
-            queue_wait(event_q);
-        }
-        else if (entry->type == QUEUE_ENTRY_TYPE_TIMED_EVENT) {
-            /* do a_timedwait for entry */
-            struct timespec abs_time;
-            parrot_event * const event = (parrot_event*)entry->data;
-            const FLOATVAL when = event->u.timer_event.abs_time;
-
-            abs_time.tv_sec  = (time_t) when;
-            abs_time.tv_nsec = (long)((when - abs_time.tv_sec)*1000.0f)
-                *1000L*1000L;
-            queue_timedwait(event_q, &abs_time);
-        }
-        else {
-            /* we shouldn't get here probably
-             */
-            exit_fatal(1, "Spurious event");
-
-        }
-        /*
-         * one or more entries arrived - we hold the mutex again
-         * so we have to use the nonsync_pop_entry to pop off event entries
-         */
-        running = process_events(event_q);
-    } /* event loop */
-    /*
-     * the main interpreter is dying
-     * TODO empty the queue
-     */
-    UNLOCK(event_q->queue_mutex);
-    queue_destroy(event_q);
-    stop_io_thread();
-    edebug((stderr, "event thread stopped\n"));
-    return NULL;
-}
-
-/*
-
-=back
-
-=head2 Sleep Handling
-
-=over 4
-
-=item C<static opcode_t * wait_for_wakeup(PARROT_INTERP, opcode_t *next)>
-
-Sleep on the event queue condition. If an event arrives, the event
-is processed. Terminate the loop if sleeping is finished.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static opcode_t *
-wait_for_wakeup(PARROT_INTERP, ARGIN_NULLOK(opcode_t *next))
-{
-    ASSERT_ARGS(wait_for_wakeup)
-    QUEUE * const tq = interp->task_queue;
-
-    interp->sleeping = 1;
-
-    /*
-     * event handler like callbacks or timers are run as normal code
-     * so inside such an event handler function, another event might get
-     * handled, which is good (higher priority events can interrupt
-     * other event handler).  OTOH we must ensure that all state changes
-     * are done in do_event and we should probably suspend nested
-     * event handlers sometimes
-     *
-     * FIXME: the same is true for the *next param:
-     *        get rid of that, instead mangle the resume flags
-     *        and offset to stop the runloop
-     *
-     */
-
-    while (interp->sleeping) {
-        QUEUE_ENTRY  * const entry = wait_for_entry(tq);
-        parrot_event * const event = (parrot_event*)entry->data;
-
-        mem_sys_free(entry);
-        edebug((stderr, "got ev %s head : %p\n", et(event), tq->head));
-        next = do_event(interp, event, next);
-    }
-
-    edebug((stderr, "woke up\n"));
-    return next;
-}
-
-/*
-
-=item C<opcode_t * Parrot_sleep_on_event(PARROT_INTERP, FLOATVAL t, opcode_t
-*next)>
-
-Go to sleep. This is called from the C<sleep> opcode.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-opcode_t *
-Parrot_sleep_on_event(PARROT_INTERP, FLOATVAL t, ARGIN_NULLOK(opcode_t *next))
-{
-    ASSERT_ARGS(Parrot_sleep_on_event)
-#ifdef PARROT_HAS_THREADS
-
-    if (interp->sleeping)
-        fprintf(stderr, "nested sleep might not work\n");
-    /*
-     * place the opcode_t* next arg in the event data, so that
-     * we can identify this event in wakeup
-     */
-    Parrot_new_timer_event(interp, (PMC *) next, t, 0.0, 0,
-        NULL, EVENT_TYPE_SLEEP);
-    next = wait_for_wakeup(interp, next);
-#else
-    /*
-     * TODO check for nanosleep or such
-     */
-    Parrot_sleep((UINTVAL) ceil(t));
-#endif
-    return next;
-}
-
-/*
-
-=back
-
-=head2 Event Handling for Run-Loops
-
-=over 4
-
-=item C<opcode_t * Parrot_do_check_events(PARROT_INTERP, opcode_t *next)>
-
-Explicitly C<sync> called by the check_event opcode from run loops.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-opcode_t *
-Parrot_do_check_events(PARROT_INTERP, ARGIN_NULLOK(opcode_t *next))
-{
-    ASSERT_ARGS(Parrot_do_check_events)
-    if (peek_entry(interp->task_queue))
-        return Parrot_do_handle_events(interp, 0, next);
-
-    return next;
-}
-
-/*
-
-=item C<static void event_to_exception(PARROT_INTERP, const parrot_event*
-event)>
-
-Convert event to exception and throw it.
-
-=cut
-
-*/
-
-static void
-event_to_exception(PARROT_INTERP, ARGIN(const parrot_event* event))
-{
-    ASSERT_ARGS(event_to_exception)
-    const int exit_code = -event->u.signal;
-
-    switch (event->u.signal) {
-      case SIGINT:
-      case SIGHUP:
-        /*
-         * SIGINT is silent, if no exception handler is
-         * installed: set severity to EXCEPT_exit
-         */
-        {
-            STRING * const message = CONST_STRING(interp, "Caught signal.");
-            PMC           *exception = Parrot_ex_build_exception(interp,
-                                        EXCEPT_exit, exit_code, message);
-
-            Parrot_ex_throw_from_c(interp, exception);
-        }
-        break;
-      default:
-        Parrot_ex_throw_from_c_args(interp, NULL, exit_code,
-                    "Caught signal.");
-        break;
-    }
-}
-
-/*
-
-=item C<static opcode_t * do_event(PARROT_INTERP, parrot_event* event, opcode_t
-*next)>
-
-Run user code or such.  The C<event> argument is freed after execution.
-
-TODO: Instrument with splint args so splint knows event gets released.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static opcode_t *
-do_event(PARROT_INTERP, ARGIN(parrot_event* event), ARGIN_NULLOK(opcode_t *next))
-{
-    ASSERT_ARGS(do_event)
-    edebug((stderr, "do_event %s\n", et(event)));
-    switch (event->type) {
-      case EVENT_TYPE_TERMINATE:
-        next = NULL;        /* this will terminate the run loop */
-        break;
-      case EVENT_TYPE_SIGNAL:
-        interp->sleeping = 0;
-        /* generate exception */
-        event_to_exception(interp, event);
-        /* not reached - will longjmp */
-        break;
-      case EVENT_TYPE_TIMER:
-        /* run ops, save registers */
-        Parrot_pcc_invoke_sub_from_c_args(interp,
-                    event->u.timer_event.sub, "->");
-        break;
-      case EVENT_TYPE_CALL_BACK:
-        edebug((stderr, "starting user cb\n"));
-        Parrot_run_callback(interp, event->u.call_back.cbi,
-                    event->u.call_back.external_data);
-        break;
-      case EVENT_TYPE_IO:
-        edebug((stderr, "starting io handler\n"));
-        Parrot_pcc_invoke_sub_from_c_args(interp,
-                    event->u.io_event.handler,
-                    "PP->",
-                    event->u.io_event.pio,
-                    event->u.io_event.user_data);
-        break;
-      case EVENT_TYPE_SLEEP:
-        interp->sleeping = 0;
-        break;
-      case EVENT_TYPE_SUSPEND_FOR_GC:
-        edebug((stderr, "suspend for gc\n"));
-        pt_suspend_self_for_gc(interp);
-        break;
-      default:
-        fprintf(stderr, "Unhandled event type %d\n", (int)event->type);
-        break;
-    }
-    mem_sys_free(event);
-    return next;
-}
-
-/*
-
-=item C<opcode_t * Parrot_do_handle_events(PARROT_INTERP, int restore, opcode_t
-*next)>
-
-Called by the C<check_event__> opcode from run loops or from above. When
-called from the C<check_events__> opcode, we have to restore the
-C<op_func_table>.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-opcode_t *
-Parrot_do_handle_events(PARROT_INTERP, int restore, ARGIN_NULLOK(opcode_t *next))
-{
-    ASSERT_ARGS(Parrot_do_handle_events)
-    QUEUE * const tq = interp->task_queue;
-
-    if (restore)
-        disable_event_checking(interp);
-
-    if (!peek_entry(tq))
-        return next;
-
-    while (peek_entry(tq)) {
-        QUEUE_ENTRY  * const entry = pop_entry(tq);
-        parrot_event * const event = (parrot_event*)entry->data;
-
-        mem_sys_free(entry);
-        next = do_event(interp, event, next);
-    }
-
-    return next;
-}
-
-/*
-
-=back
-
-=head1 SEE ALSO
-
-F<include/parrot/events.h> and F<docs/dev/events.pod>.
-
-=cut
-
-*/
-
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Modified: branches/ops_pct/src/exceptions.c
==============================================================================
--- branches/ops_pct/src/exceptions.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/exceptions.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -68,7 +68,7 @@
         long error, ARGIN_NULLOK(STRING *msg))
 {
     ASSERT_ARGS(Parrot_ex_build_exception)
-    PMC *exception = pmc_new(interp, enum_class_Exception);
+    PMC *exception = Parrot_pmc_new(interp, enum_class_Exception);
 
     VTABLE_set_integer_keyed_str(interp, exception, CONST_STRING(interp, "severity"), severity);
     VTABLE_set_integer_keyed_str(interp, exception, CONST_STRING(interp, "type"), error);
@@ -176,7 +176,7 @@
 Parrot_ex_add_c_handler(PARROT_INTERP, ARGIN(Parrot_runloop *jp))
 {
     ASSERT_ARGS(Parrot_ex_add_c_handler)
-    PMC * const handler = pmc_new(interp, enum_class_ExceptionHandler);
+    PMC * const handler = Parrot_pmc_new(interp, enum_class_ExceptionHandler);
     /* Flag to mark a C exception handler */
     PObj_get_FLAGS(handler) |= SUB_FLAG_C_HANDLER;
     VTABLE_set_pointer(interp, handler, jp);

Modified: branches/ops_pct/src/exit.c
==============================================================================
--- branches/ops_pct/src/exit.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/exit.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -42,7 +42,7 @@
 {
     ASSERT_ARGS(Parrot_on_exit)
 
-    handler_node_t * const new_node = mem_allocate_typed(handler_node_t);
+    handler_node_t * const new_node = mem_internal_allocate_typed(handler_node_t);
 
     new_node->function        = function;
     new_node->arg             = arg;
@@ -88,7 +88,7 @@
         handler_node_t * const next = node->next;
 
         (node->function)(interp, status, node->arg);
-        mem_sys_free(node);
+        mem_internal_free(node);
         node = next;
     }
 

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

Modified: branches/ops_pct/src/frame_builder.c
==============================================================================
--- branches/ops_pct/src/frame_builder.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/frame_builder.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -39,7 +39,7 @@
 */
 
 void
-Parrot_jit_free_buffer(PARROT_INTERP, void *ptr, void *priv)
+Parrot_jit_free_buffer(SHIM_INTERP, void *ptr, void *priv)
 {
     const struct jit_buffer_private_data * const jit = (struct jit_buffer_private_data*)priv;
     mem_free_executable(ptr, jit->size);
@@ -62,7 +62,7 @@
 PMC *
 Parrot_jit_clone_buffer(PARROT_INTERP, PMC *pmc, void *priv)
 {
-    PMC * const rv = pmc_new(interp, pmc->vtable->base_type);
+    PMC * const rv = Parrot_pmc_new(interp, pmc->vtable->base_type);
 
     VTABLE_init(interp, rv);
     /* copy the attributes */
@@ -82,7 +82,7 @@
         GETATTR_ManagedStruct_custom_free_priv(interp , pmc, freepriv);
         GETATTR_ManagedStruct_custom_clone_priv(interp, pmc, clonepriv);
         if (freepriv) {
-            void *tmp = mem_sys_allocate(sizeof (struct jit_buffer_private_data));
+            void *tmp = mem_gc_allocate_zeroed_typed(interp, struct jit_buffer_private_data);
             memcpy(tmp, freepriv, sizeof (struct jit_buffer_private_data));
             SETATTR_ManagedStruct_custom_free_priv(interp, rv , tmp);
             if (clonepriv == freepriv) {
@@ -92,7 +92,7 @@
             }
         }
         if (clonepriv) {
-            void *tmp = mem_sys_allocate(sizeof (struct jit_buffer_private_data));
+            void *tmp = mem_gc_allocate_zeroed_typed(interp, struct jit_buffer_private_data);
             memcpy(tmp, clonepriv, sizeof (struct jit_buffer_private_data));
             SETATTR_ManagedStruct_custom_clone_priv(interp, rv , tmp);
         }
@@ -312,6 +312,8 @@
     int temp_calls_offset  = args_offset - 16;
     int total_stack_needed = -temp_calls_offset;
 
+    UNUSED(pmc_nci);
+
     /*
      * ESP
      * 0-15, 16 bytes for utility calls
@@ -550,7 +552,7 @@
 
         /* make new pmc */
         emitm_movl_i_m(pc, enum_class_UnManagedStruct, emit_EBP, 0, 1, temp_calls_offset + 4);
-        emitm_call_cfunc(pc, pmc_new);
+        emitm_call_cfunc(pc, Parrot_pmc_new);
 
         /* restore pointer p to EDX */
         emitm_movl_m_r(interp, pc, emit_EDX, emit_EBP, 0, 1, temp_calls_offset + 12);

Modified: branches/ops_pct/src/gc/alloc_memory.c
==============================================================================
--- branches/ops_pct/src/gc/alloc_memory.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/gc/alloc_memory.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -260,8 +260,6 @@
     return ptr;
 }
 
-#if 0
-
 /*
 
 =item C<void * mem__internal_realloc_zeroed(void *from, size_t size, size_t
@@ -284,15 +282,15 @@
 {
     ASSERT_ARGS(mem__internal_realloc_zeroed)
     void * const ptr = realloc(from, size);
-#  ifdef DETAIL_MEMORY_DEBUG
+#ifdef DETAIL_MEMORY_DEBUG
     fprintf(stderr, "internal free of %p (realloc -- %i bytes) (%s/%d)\n",
             from, size, file, line);
     fprintf(stderr, "Internal malloc %i at %p (%s/%d)\n",
             size, ptr, file, line);
-#  else
+#else
     UNUSED(file);
     UNUSED(line);
-#  endif
+#endif
     if (!ptr)
         PANIC_OUT_OF_MEM(size);
     if (size > old_size)
@@ -301,8 +299,6 @@
     return ptr;
 }
 
-#endif
-
 /*
 
 =item C<void mem_sys_free(void *from)>

Modified: branches/ops_pct/src/gc/alloc_resources.c
==============================================================================
--- branches/ops_pct/src/gc/alloc_resources.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/gc/alloc_resources.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -32,7 +32,7 @@
 
 #define POOL_SIZE 65536 * 2
 
-typedef void (*compact_f) (Interp *, Variable_Size_Pool *);
+typedef void (*compact_f) (Interp *, Memory_Pools * const, Variable_Size_Pool *);
 
 /* HEADERIZER HFILE: src/gc/gc_private.h */
 
@@ -40,12 +40,14 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
 static void alloc_new_block(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
     size_t size,
     ARGMOD(Variable_Size_Pool *pool),
     ARGIN(const char *why))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(3)
+        __attribute__nonnull__(2)
         __attribute__nonnull__(4)
+        __attribute__nonnull__(5)
         FUNC_MODIFIES(*pool);
 
 PARROT_CANNOT_RETURN_NULL
@@ -58,8 +60,10 @@
         __attribute__nonnull__(1)
         FUNC_MODIFIES(* pool);
 
-static void check_memory_system(PARROT_INTERP)
-        __attribute__nonnull__(1);
+static void check_memory_system(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 static void check_var_size_obj_pool(ARGMOD(Variable_Size_Pool *pool))
         __attribute__nonnull__(1)
@@ -69,14 +73,59 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
+static void fix_pmc_syncs(
+    ARGMOD(Interp *dest_interp),
+    ARGIN(Fixed_Size_Pool *pool))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*dest_interp);
+
+static void free_memory_pool(Variable_Size_Pool *pool);
+static void free_pool(ARGMOD(Fixed_Size_Pool *pool))
+        __attribute__nonnull__(1)
+        FUNC_MODIFIES(*pool);
+
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 static Variable_Size_Pool * new_memory_pool(
     size_t min_block,
     NULLOK(compact_f compact));
 
+static void Parrot_gc_merge_buffer_pools(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
+    ARGMOD(Fixed_Size_Pool *dest),
+    ARGMOD(Fixed_Size_Pool *source))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
+        FUNC_MODIFIES(*dest)
+        FUNC_MODIFIES(*source);
+
+static int sweep_cb_buf(PARROT_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
+    ARGMOD(Fixed_Size_Pool *pool),
+    SHIM(int flag),
+    ARGIN(void *arg))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        __attribute__nonnull__(5)
+        FUNC_MODIFIES(*pool);
+
+static int sweep_cb_pmc(PARROT_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
+    ARGMOD(Fixed_Size_Pool *pool),
+    SHIM(int flag),
+    SHIM(void *arg))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*pool);
+
 #define ASSERT_ARGS_alloc_new_block __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(pool) \
     , PARROT_ASSERT_ARG(why))
 #define ASSERT_ARGS_buffer_location __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -85,21 +134,42 @@
 #define ASSERT_ARGS_check_fixed_size_obj_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_check_memory_system __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_check_var_size_obj_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_debug_print_buf __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(b))
+#define ASSERT_ARGS_fix_pmc_syncs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(dest_interp) \
+    , PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_free_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_free_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_new_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_Parrot_gc_merge_buffer_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
+    , PARROT_ASSERT_ARG(dest) \
+    , PARROT_ASSERT_ARG(source))
+#define ASSERT_ARGS_sweep_cb_buf __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
+    , PARROT_ASSERT_ARG(pool) \
+    , PARROT_ASSERT_ARG(arg))
+#define ASSERT_ARGS_sweep_cb_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
+    , PARROT_ASSERT_ARG(pool))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
 
 /*
 
-=item C<static void alloc_new_block(PARROT_INTERP, size_t size,
-Variable_Size_Pool *pool, const char *why)>
+=item C<static void alloc_new_block(PARROT_INTERP, Memory_Pools * const
+mem_pools, size_t size, Variable_Size_Pool *pool, const char *why)>
 
 Allocate a new memory block. We allocate either the requested size or the
 default size, whichever is larger. Add the new block to the given memory
@@ -110,7 +180,9 @@
 */
 
 static void
-alloc_new_block(PARROT_INTERP, size_t size, ARGMOD(Variable_Size_Pool *pool),
+alloc_new_block(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        size_t size, ARGMOD(Variable_Size_Pool *pool),
         ARGIN(const char *why))
 {
     ASSERT_ARGS(alloc_new_block)
@@ -143,7 +215,7 @@
     new_block->top   = new_block->start;
 
     /* Note that we've allocated it */
-    interp->mem_pools->memory_allocated += alloc_size;
+    mem_pools->memory_allocated += alloc_size;
 
     /* If this is for a public pool, add it to the list */
     new_block->prev = pool->top_block;
@@ -158,8 +230,8 @@
 
 /*
 
-=item C<void * mem_allocate(PARROT_INTERP, size_t size, Variable_Size_Pool
-*pool)>
+=item C<void * mem_allocate(PARROT_INTERP, Memory_Pools * const mem_pools,
+size_t size, Variable_Size_Pool *pool)>
 
 Allocates memory for headers.
 
@@ -197,7 +269,9 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 void *
-mem_allocate(PARROT_INTERP, size_t size, ARGMOD(Variable_Size_Pool *pool))
+mem_allocate(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        size_t size, ARGMOD(Variable_Size_Pool *pool))
 {
     ASSERT_ARGS(mem_allocate)
     void *return_val;
@@ -214,8 +288,8 @@
          * TODO pass required allocation size to the GC system,
          *      so that collection can be skipped if needed
          */
-        if (!interp->mem_pools->gc_mark_block_level
-        &&   interp->mem_pools->mem_allocs_since_last_collect) {
+        if (!mem_pools->gc_mark_block_level
+        &&   mem_pools->mem_allocs_since_last_collect) {
             Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
 
             if (interp->gc_sys->sys_type != INF) {
@@ -224,7 +298,7 @@
                     /* don't bother reclaiming if it's only a small amount */
                     if ((pool->possibly_reclaimable * pool->reclaim_factor +
                          pool->guaranteed_reclaimable) > size) {
-                        (*pool->compact) (interp, pool);
+                        (*pool->compact) (interp, mem_pools, pool);
                     }
                 }
             }
@@ -238,9 +312,9 @@
              * Mark the block as big block (it has just one item)
              * And don't set big blocks as the top_block.
              */
-            alloc_new_block(interp, size, pool, "compact failed");
+            alloc_new_block(interp, mem_pools, size, pool, "compact failed");
 
-            interp->mem_pools->mem_allocs_since_last_collect++;
+            mem_pools->mem_allocs_since_last_collect++;
 
             if (pool->top_block->free < size) {
                 fprintf(stderr, "out of mem\n");
@@ -320,7 +394,8 @@
 
 =over 4
 
-=item C<void compact_pool(PARROT_INTERP, Variable_Size_Pool *pool)>
+=item C<void compact_pool(PARROT_INTERP, Memory_Pools * const mem_pools,
+Variable_Size_Pool *pool)>
 
 Compact the string buffer pool. Does not perform a GC scan, or mark items
 as being alive in any way.
@@ -330,7 +405,9 @@
 */
 
 void
-compact_pool(PARROT_INTERP, ARGMOD(Variable_Size_Pool *pool))
+compact_pool(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        ARGMOD(Variable_Size_Pool *pool))
 {
     ASSERT_ARGS(compact_pool)
     INTVAL        j;
@@ -340,7 +417,6 @@
     char         *cur_spot;      /* Where we're currently copying to */
 
     Fixed_Size_Arena *cur_buffer_arena;
-    Memory_Pools * const      mem_pools = interp->mem_pools;
 
     /* Bail if we're blocked */
     if (mem_pools->gc_sweep_block_level)
@@ -395,7 +471,7 @@
 #endif
 
     /* Snag a block big enough for everything */
-    alloc_new_block(interp, total_size, pool, "inside compact");
+    alloc_new_block(interp, mem_pools, total_size, pool, "inside compact");
 
     new_block = pool->top_block;
 
@@ -553,33 +629,6 @@
 
 /*
 
-=item C<size_t aligned_size(const Buffer *buffer, size_t len)>
-
-Determines the size of Buffer C<buffer> which has nominal length C<len>.
-The actual size in RAM of the Buffer might be different because of
-alignment issues.
-
-=cut
-
-*/
-
-PARROT_PURE_FUNCTION
-PARROT_WARN_UNUSED_RESULT
-size_t
-aligned_size(ARGIN(const Buffer *buffer), size_t len)
-{
-    ASSERT_ARGS(aligned_size)
-    if (PObj_is_COWable_TEST(buffer))
-        len += sizeof (void*);
-    if (PObj_aligned_TEST(buffer))
-        len = (len + BUFFER_ALIGN_1) & BUFFER_ALIGN_MASK;
-    else
-        len = (len + WORD_ALIGN_1) & WORD_ALIGN_MASK;
-    return len;
-}
-
-/*
-
 =item C<char * aligned_mem(const Buffer *buffer, char *mem)>
 
 Returns a pointer to the aligned allocated storage for Buffer C<buffer>,
@@ -596,6 +645,10 @@
 aligned_mem(ARGIN(const Buffer *buffer), ARGIN(char *mem))
 {
     ASSERT_ARGS(aligned_mem)
+#if 0
+    This code causing assert in compact_pool. Looks like STRINGs have
+    aligned flag set, but allocated less memory.
+    See C<aligned_string_size>.
     if (PObj_is_COWable_TEST(buffer))
         mem += sizeof (void*);
     if (PObj_aligned_TEST(buffer))
@@ -603,6 +656,9 @@
                 BUFFER_ALIGN_MASK);
     else
         mem = (char*)(((unsigned long)(mem + WORD_ALIGN_1)) & WORD_ALIGN_MASK);
+#endif
+    mem += sizeof (void*);
+    mem = (char*)(((unsigned long)(mem + WORD_ALIGN_1)) & WORD_ALIGN_MASK);
 
     return mem;
 }
@@ -668,7 +724,8 @@
 
 /*
 
-=item C<void initialize_var_size_pools(PARROT_INTERP)>
+=item C<void initialize_var_size_pools(PARROT_INTERP, Memory_Pools * const
+mem_pools)>
 
 Initialize the managed memory pools. Parrot maintains two C<Variable_Size_Pool>
 structures, the general memory pool and the constant string pool. Create
@@ -680,17 +737,17 @@
 */
 
 void
-initialize_var_size_pools(PARROT_INTERP)
+initialize_var_size_pools(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
 {
     ASSERT_ARGS(initialize_var_size_pools)
-    Memory_Pools * const mem_pools = interp->mem_pools;
 
     mem_pools->memory_pool   = new_memory_pool(POOL_SIZE, &compact_pool);
-    alloc_new_block(interp, POOL_SIZE, mem_pools->memory_pool, "init");
+    alloc_new_block(interp, mem_pools, POOL_SIZE, mem_pools->memory_pool, "init");
 
     /* Constant strings - not compacted */
     mem_pools->constant_string_pool = new_memory_pool(POOL_SIZE, NULL);
-    alloc_new_block(interp, POOL_SIZE, mem_pools->constant_string_pool, "init");
+    alloc_new_block(interp, mem_pools, POOL_SIZE, mem_pools->constant_string_pool, "init");
 }
 
 
@@ -740,7 +797,8 @@
 
 /*
 
-=item C<static void check_memory_system(PARROT_INTERP)>
+=item C<static void check_memory_system(PARROT_INTERP, Memory_Pools * const
+mem_pools)>
 
 Checks the memory system of parrot on any corruptions, including
 the string system.
@@ -750,11 +808,11 @@
 */
 
 static void
-check_memory_system(PARROT_INTERP)
+check_memory_system(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
 {
     ASSERT_ARGS(check_memory_system)
     size_t i;
-    Memory_Pools * const mem_pools = interp->mem_pools;
 
     check_var_size_obj_pool(mem_pools->memory_pool);
     check_var_size_obj_pool(mem_pools->constant_string_pool);
@@ -937,6 +995,362 @@
     PARROT_ASSERT(0);
 }
 
+
+/*
+
+=item C<void Parrot_gc_destroy_header_pools(PARROT_INTERP, Memory_Pools * const
+mem_pools)>
+
+Performs a garbage collection sweep on all pools, then frees them.  Calls
+C<header_pools_iterate_callback> to loop over all the pools, passing
+C<sweep_cb_pmc> and C<sweep_cb_buf> callback routines. Frees the array of sized
+header pointers in the C<Memory_Pools> structure too.
+
+=cut
+
+*/
+
+void
+Parrot_gc_destroy_header_pools(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
+{
+    ASSERT_ARGS(Parrot_gc_destroy_header_pools)
+    INTVAL pass;
+
+    /* const/non const COW strings life in different pools
+     * so in first pass
+     * COW refcount is done, in 2. refcounting
+     * in 3rd freeing
+     */
+    const INTVAL start = 2;
+
+    header_pools_iterate_callback(interp, mem_pools, POOL_PMC, NULL, sweep_cb_pmc);
+    header_pools_iterate_callback(interp, mem_pools, POOL_PMC | POOL_CONST, NULL,
+            sweep_cb_pmc);
+
+    for (pass = start; pass <= 2; pass++) {
+        header_pools_iterate_callback(interp, mem_pools, POOL_BUFFER | POOL_CONST,
+                (void *)pass, sweep_cb_buf);
+    }
+
+    mem_internal_free(mem_pools->sized_header_pools);
+
+    if (mem_pools->attrib_pools) {
+        unsigned int i;
+        for (i = 0; i < mem_pools->num_attribs; i++) {
+            PMC_Attribute_Pool  *pool  = mem_pools->attrib_pools[i];
+            PMC_Attribute_Arena *arena;
+
+            if (!pool)
+                continue;
+
+            arena = pool->top_arena;
+
+            while (arena) {
+                PMC_Attribute_Arena *next = arena->next;
+                mem_internal_free(arena);
+                arena = next;
+            }
+            mem_internal_free(pool);
+        }
+
+        mem_internal_free(mem_pools->attrib_pools);
+    }
+
+    mem_pools->attrib_pools       = NULL;
+    mem_pools->sized_header_pools = NULL;
+}
+
+/*
+
+=item C<static int sweep_cb_pmc(PARROT_INTERP, Memory_Pools *mem_pools,
+Fixed_Size_Pool *pool, int flag, void *arg)>
+
+Performs a garbage collection sweep of the given pmc pool, then frees it. Calls
+C<Parrot_gc_sweep_pool> to perform the sweep, and C<free_pool> to free the pool and
+all its arenas. Always returns C<0>.
+
+=cut
+
+*/
+
+static int
+sweep_cb_pmc(PARROT_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool),
+        SHIM(int flag), SHIM(void *arg))
+{
+    ASSERT_ARGS(sweep_cb_pmc)
+    Parrot_gc_sweep_pool(interp, mem_pools, pool);
+    free_pool(pool);
+    return 0;
+}
+
+/*
+
+=item C<static int sweep_cb_buf(PARROT_INTERP, Memory_Pools *mem_pools,
+Fixed_Size_Pool *pool, int flag, void *arg)>
+
+Performs a final garbage collection sweep, then frees the pool. Calls
+C<Parrot_gc_sweep_pool> to perform the sweep, and C<free_pool> to free the pool and
+all its arenas.
+
+=cut
+
+*/
+
+static int
+sweep_cb_buf(PARROT_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool),
+        SHIM(int flag), ARGIN(void *arg))
+{
+    ASSERT_ARGS(sweep_cb_buf)
+    UNUSED(arg);
+    Parrot_gc_sweep_pool(interp, mem_pools, pool);
+    free_pool(pool);
+
+    return 0;
+}
+
+/*
+
+=item C<static void free_pool(Fixed_Size_Pool *pool)>
+
+Frees a pool and all of its arenas. Loops through the list of arenas backwards
+and returns each to the memory manager. Then, frees the pool structure itself.
+
+=cut
+
+*/
+
+static void
+free_pool(ARGMOD(Fixed_Size_Pool *pool))
+{
+    ASSERT_ARGS(free_pool)
+    Fixed_Size_Arena *cur_arena;
+
+    for (cur_arena = pool->last_Arena; cur_arena;) {
+        Fixed_Size_Arena * const next = cur_arena->prev;
+        mem_internal_free(cur_arena->start_objects);
+        mem_internal_free(cur_arena);
+        cur_arena = next;
+    }
+    mem_internal_free(pool);
+}
+
+
+/*
+
+=item C<static void free_memory_pool(Variable_Size_Pool *pool)>
+
+Frees a memory pool; helper function for C<Parrot_gc_destroy_memory_pools>.
+
+=cut
+
+*/
+
+static void
+free_memory_pool(Variable_Size_Pool *pool)
+{
+    ASSERT_ARGS(free_memory_pool)
+
+    Memory_Block *cur_block = pool->top_block;
+
+    while (cur_block) {
+        Memory_Block * const next_block = cur_block->prev;
+        mem_internal_free(cur_block);
+        cur_block = next_block;
+    }
+
+    mem_internal_free(pool);
+}
+
+
+/*
+
+=item C<void Parrot_gc_destroy_memory_pools(PARROT_INTERP, Memory_Pools * const
+mem_pools)>
+
+Destroys the memory pool and the constant string pool. Loop through both
+pools and destroy all memory blocks contained in them. Once all the
+blocks are freed, free the pools themselves.
+
+=cut
+
+*/
+
+void
+Parrot_gc_destroy_memory_pools(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
+{
+    ASSERT_ARGS(Parrot_gc_destroy_memory_pools)
+
+    free_memory_pool(mem_pools->constant_string_pool);
+    free_memory_pool(mem_pools->memory_pool);
+}
+
+/*
+
+=item C<void Parrot_gc_merge_memory_pools(Interp *dest_interp, Memory_Pools *
+const dest_arena, Memory_Pools * const source_arena)>
+
+Merges the header pools of C<source_interp> into those of C<dest_interp>.
+(Used to deal with shared objects left after interpreter destruction.)
+
+=cut
+
+*/
+
+void
+Parrot_gc_merge_memory_pools(ARGMOD(Interp *dest_interp),
+    ARGIN(Memory_Pools * const dest_arena),
+    ARGIN(Memory_Pools * const source_arena))
+{
+    ASSERT_ARGS(Parrot_gc_merge_memory_pools)
+
+    UINTVAL        i;
+
+    /* heavily borrowed from forall_header_pools */
+    fix_pmc_syncs(dest_interp, source_arena->constant_pmc_pool);
+    Parrot_gc_merge_buffer_pools(dest_interp, dest_arena,
+            dest_arena->constant_pmc_pool, source_arena->constant_pmc_pool);
+
+    fix_pmc_syncs(dest_interp, source_arena->pmc_pool);
+    Parrot_gc_merge_buffer_pools(dest_interp, dest_arena,
+            dest_arena->pmc_pool, source_arena->pmc_pool);
+
+    Parrot_gc_merge_buffer_pools(dest_interp, dest_arena,
+            dest_arena->constant_string_header_pool,
+            source_arena->constant_string_header_pool);
+
+    for (i = 0; i < source_arena->num_sized; ++i) {
+        if (!source_arena->sized_header_pools[i])
+            continue;
+
+        if (i >= dest_arena->num_sized
+        || !dest_arena->sized_header_pools[i]) {
+            Fixed_Size_Pool *ignored = get_bufferlike_pool(dest_interp,
+                    dest_arena, i * sizeof (void *));
+            UNUSED(ignored);
+            PARROT_ASSERT(dest_arena->sized_header_pools[i]);
+        }
+
+        Parrot_gc_merge_buffer_pools(dest_interp, dest_arena,
+            dest_arena->sized_header_pools[i],
+            source_arena->sized_header_pools[i]);
+    }
+}
+
+/*
+
+=item C<static void Parrot_gc_merge_buffer_pools(PARROT_INTERP, Memory_Pools *
+const mem_pools, Fixed_Size_Pool *dest, Fixed_Size_Pool *source)>
+
+Merge pool C<source> into pool C<dest>. Combines the free lists directly,
+moves all arenas to the new pool, and remove the old pool. To merge, the
+two pools must have the same object size, and the same name (if they have
+names).
+
+=cut
+
+*/
+
+static void
+Parrot_gc_merge_buffer_pools(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        ARGMOD(Fixed_Size_Pool *dest), ARGMOD(Fixed_Size_Pool *source))
+{
+    ASSERT_ARGS(Parrot_gc_merge_buffer_pools)
+    Fixed_Size_Arena  *cur_arena;
+    GC_MS_PObj_Wrapper  *free_list_end;
+
+    PARROT_ASSERT(dest->object_size == source->object_size);
+    PARROT_ASSERT((dest->name == NULL && source->name == NULL)
+                || STREQ(dest->name, source->name));
+
+    dest->total_objects += source->total_objects;
+
+    /* append new free_list to old */
+    /* XXX this won't work with, e.g., gc_gms */
+    free_list_end = dest->free_list;
+
+    if (free_list_end == NULL)
+        dest->free_list = source->free_list;
+    else {
+        while (free_list_end->next_ptr)
+            free_list_end = free_list_end->next_ptr;
+
+        free_list_end->next_ptr = source->free_list;
+    }
+
+    /* now append source arenas */
+    cur_arena = source->last_Arena;
+
+    while (cur_arena) {
+        size_t                     total_objects;
+        Fixed_Size_Arena * const next_arena = cur_arena->prev;
+
+        cur_arena->next = cur_arena->prev = NULL;
+
+        total_objects   = cur_arena->total_objects;
+
+        Parrot_append_arena_in_pool(interp, mem_pools, dest, cur_arena,
+            cur_arena->total_objects);
+
+        /* XXX needed? */
+        cur_arena->total_objects = total_objects;
+
+        cur_arena = next_arena;
+    }
+
+    /* remove things from source */
+    source->last_Arena       = NULL;
+    source->free_list        = NULL;
+    source->total_objects    = 0;
+    source->num_free_objects = 0;
+}
+
+/*
+
+=item C<static void fix_pmc_syncs(Interp *dest_interp, Fixed_Size_Pool *pool)>
+
+Walks through the given arena, looking for all live and shared PMCs,
+transferring their sync values to the destination interpreter.
+
+=cut
+
+*/
+
+static void
+fix_pmc_syncs(ARGMOD(Interp *dest_interp), ARGIN(Fixed_Size_Pool *pool))
+{
+    ASSERT_ARGS(fix_pmc_syncs)
+    Fixed_Size_Arena *cur_arena;
+    const UINTVAL       object_size = pool->object_size;
+
+    for (cur_arena = pool->last_Arena; cur_arena; cur_arena = cur_arena->prev) {
+        PMC   *p = (PMC *)((char*)cur_arena->start_objects);
+        size_t i;
+
+        for (i = 0; i < cur_arena->used; i++) {
+            if (!PObj_on_free_list_TEST(p) && PObj_is_PMC_TEST(p)) {
+                if (PObj_is_PMC_shared_TEST(p))
+                    PMC_sync(p)->owner = dest_interp;
+                else
+                    Parrot_ex_throw_from_c_args(dest_interp, NULL,
+                        EXCEPTION_INTERP_ERROR,
+                        "Unshared PMC still alive after interpreter"
+                        "destruction. address=%p, base_type=%d\n",
+                        p, p->vtable->base_type);
+            }
+
+            p = (PMC *)((char *)p + object_size);
+        }
+    }
+}
+
+
 /*
 
 =back

Modified: branches/ops_pct/src/gc/api.c
==============================================================================
--- branches/ops_pct/src/gc/api.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/gc/api.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -106,25 +106,6 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*dest_interp);
 
-static void free_pool(ARGMOD(Fixed_Size_Pool *pool))
-        __attribute__nonnull__(1)
-        FUNC_MODIFIES(*pool);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static void * get_free_buffer(PARROT_INTERP, ARGIN(Fixed_Size_Pool *pool))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-static void Parrot_gc_free_attributes_from_pool(PARROT_INTERP,
-    ARGMOD(PMC_Attribute_Pool *pool),
-    ARGMOD(void *data))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*pool)
-        FUNC_MODIFIES(*data);
-
 static void Parrot_gc_merge_buffer_pools(PARROT_INTERP,
     ARGMOD(Fixed_Size_Pool *dest),
     ARGMOD(Fixed_Size_Pool *source))
@@ -134,47 +115,13 @@
         FUNC_MODIFIES(*dest)
         FUNC_MODIFIES(*source);
 
-static int sweep_cb_buf(PARROT_INTERP,
-    ARGMOD(Fixed_Size_Pool *pool),
-    SHIM(int flag),
-    ARGIN(void *arg))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(4)
-        FUNC_MODIFIES(*pool);
-
-static int sweep_cb_pmc(PARROT_INTERP,
-    ARGMOD(Fixed_Size_Pool *pool),
-    SHIM(int flag),
-    SHIM(void *arg))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*pool);
-
 #define ASSERT_ARGS_fix_pmc_syncs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(dest_interp) \
     , PARROT_ASSERT_ARG(pool))
-#define ASSERT_ARGS_free_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(pool))
-#define ASSERT_ARGS_get_free_buffer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(pool))
-#define ASSERT_ARGS_Parrot_gc_free_attributes_from_pool \
-     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(pool) \
-    , PARROT_ASSERT_ARG(data))
 #define ASSERT_ARGS_Parrot_gc_merge_buffer_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(dest) \
     , PARROT_ASSERT_ARG(source))
-#define ASSERT_ARGS_sweep_cb_buf __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(pool) \
-    , PARROT_ASSERT_ARG(arg))
-#define ASSERT_ARGS_sweep_cb_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(pool))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
@@ -219,7 +166,7 @@
         PMC * const p = (PMC *)obj;
 
         if (PObj_is_special_PMC_TEST(obj))
-            mark_special(interp, p);
+            interp->gc_sys->mark_special(interp, p);
 
         else if (PMC_metadata(p))
             Parrot_gc_mark_PMC_alive(interp, PMC_metadata(p));
@@ -312,23 +259,8 @@
 {
     ASSERT_ARGS(Parrot_gc_initialize)
 
-    interp->mem_pools = mem_allocate_zeroed_typed(Memory_Pools);
-    interp->gc_sys    = mem_allocate_zeroed_typed(GC_Subsystem);
-
-    interp->mem_pools->num_sized          = 0;
-    interp->mem_pools->num_attribs        = 0;
-    interp->mem_pools->attrib_pools       = NULL;
-    interp->mem_pools->sized_header_pools = NULL;
-
     interp->lo_var_ptr                    = stacktop;
 
-
-    /*TODO: add ability to specify GC core at command line w/ --gc= */
-    if (0) /*If they chose sys_type with the --gc command line switch,*/
-        ; /* set sys_type to value they gave */
-    else
-        interp->gc_sys->sys_type = PARROT_GC_DEFAULT_TYPE;
-
     /*Call appropriate initialization function for GC subsystem*/
     switch (interp->gc_sys->sys_type) {
       case MS:
@@ -340,11 +272,54 @@
       default:
         /*die horribly because of invalid GC core specified*/
         break;
-    }
+    };
+
+    /* Assertions that GC subsystem has complete API */
+    PARROT_ASSERT(interp->gc_sys->finalize_gc_system);
+    PARROT_ASSERT(interp->gc_sys->destroy_child_interp);
+
+    PARROT_ASSERT(interp->gc_sys->do_gc_mark);
+    PARROT_ASSERT(interp->gc_sys->compact_string_pool);
+
+    PARROT_ASSERT(interp->gc_sys->mark_special);
+    PARROT_ASSERT(interp->gc_sys->pmc_needs_early_collection);
+
+    PARROT_ASSERT(interp->gc_sys->allocate_pmc_header);
+    PARROT_ASSERT(interp->gc_sys->free_pmc_header);
+
+    PARROT_ASSERT(interp->gc_sys->allocate_string_header);
+    PARROT_ASSERT(interp->gc_sys->free_string_header);
+
+    PARROT_ASSERT(interp->gc_sys->allocate_bufferlike_header);
+    PARROT_ASSERT(interp->gc_sys->free_bufferlike_header);
 
-    initialize_var_size_pools(interp);
-    initialize_fixed_size_pools(interp);
-    Parrot_gc_initialize_fixed_size_pools(interp, GC_NUM_INITIAL_FIXED_SIZE_POOLS);
+    PARROT_ASSERT(interp->gc_sys->allocate_pmc_attributes);
+    PARROT_ASSERT(interp->gc_sys->free_pmc_attributes);
+
+    PARROT_ASSERT(interp->gc_sys->allocate_string_storage);
+    PARROT_ASSERT(interp->gc_sys->reallocate_string_storage);
+
+    PARROT_ASSERT(interp->gc_sys->allocate_buffer_storage);
+    PARROT_ASSERT(interp->gc_sys->reallocate_buffer_storage);
+
+    PARROT_ASSERT(interp->gc_sys->allocate_fixed_size_storage);
+    PARROT_ASSERT(interp->gc_sys->free_fixed_size_storage);
+
+    PARROT_ASSERT(interp->gc_sys->allocate_memory_chunk);
+    PARROT_ASSERT(interp->gc_sys->reallocate_memory_chunk);
+    PARROT_ASSERT(interp->gc_sys->allocate_memory_chunk_with_interior_pointers);
+    PARROT_ASSERT(interp->gc_sys->reallocate_memory_chunk_with_interior_pointers);
+    PARROT_ASSERT(interp->gc_sys->free_memory_chunk);
+
+    PARROT_ASSERT(interp->gc_sys->block_mark);
+    PARROT_ASSERT(interp->gc_sys->unblock_mark);
+    PARROT_ASSERT(interp->gc_sys->is_blocked_mark);
+
+    PARROT_ASSERT(interp->gc_sys->block_sweep);
+    PARROT_ASSERT(interp->gc_sys->unblock_sweep);
+    PARROT_ASSERT(interp->gc_sys->is_blocked_sweep);
+
+    PARROT_ASSERT(interp->gc_sys->get_gc_info);
 }
 
 /*
@@ -364,6 +339,9 @@
     ASSERT_ARGS(Parrot_gc_finalize)
     if (interp->gc_sys->finalize_gc_system)
         interp->gc_sys->finalize_gc_system(interp);
+
+    mem_internal_free(interp->gc_sys);
+    interp->gc_sys = NULL;
 }
 
 
@@ -385,10 +363,7 @@
 Parrot_gc_new_pmc_header(PARROT_INTERP, UINTVAL flags)
 {
     ASSERT_ARGS(Parrot_gc_new_pmc_header)
-    Fixed_Size_Pool * const pool = flags & PObj_constant_FLAG
-            ? interp->mem_pools->constant_pmc_pool
-            : interp->mem_pools->pmc_pool;
-    PMC * const pmc = (PMC *)pool->get_free_object(interp, pool);
+    PMC * const pmc = interp->gc_sys->allocate_pmc_header(interp, flags);
 
     if (!pmc)
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ALLOCATION_ERROR,
@@ -418,14 +393,7 @@
 Parrot_gc_free_pmc_header(PARROT_INTERP, ARGMOD(PMC *pmc))
 {
     ASSERT_ARGS(Parrot_gc_free_pmc_header)
-    Fixed_Size_Pool * const pool = (PObj_constant_TEST(pmc)) ?
-        interp->mem_pools->constant_pmc_pool : interp->mem_pools->pmc_pool;
-
-    Parrot_pmc_destroy(interp, pmc);
-
-    PObj_flags_SETTO((PObj *)pmc, PObj_on_free_list_FLAG);
-    pool->add_free_object(interp, pool, (PObj *)pmc);
-    pool->num_free_objects++;
+    interp->gc_sys->free_pmc_header(interp, pmc);
 }
 
 /*
@@ -471,7 +439,7 @@
     if (PMC_sync(pmc))
         return;
 
-    PMC_sync(pmc) = mem_allocate_typed(Sync);
+    PMC_sync(pmc) = mem_gc_allocate_zeroed_typed(interp, Sync);
 
     if (!PMC_sync(pmc))
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ALLOCATION_ERROR,
@@ -501,10 +469,7 @@
 {
     ASSERT_ARGS(Parrot_gc_new_string_header)
 
-    STRING * const string = (STRING *)get_free_buffer(interp,
-        (flags & PObj_constant_FLAG)
-            ? interp->mem_pools->constant_string_header_pool
-            : interp->mem_pools->string_header_pool);
+    STRING * const string = interp->gc_sys->allocate_string_header(interp, flags);
     if (!string)
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ALLOCATION_ERROR,
             "Parrot VM: STRING allocation failed!\n");
@@ -530,15 +495,12 @@
 Parrot_gc_free_string_header(PARROT_INTERP, ARGMOD(STRING *s))
 {
     ASSERT_ARGS(Parrot_gc_free_string_header)
-    if (!PObj_constant_TEST(s)) {
-        Fixed_Size_Pool * const pool = interp->mem_pools->string_header_pool;
-        pool->add_free_object(interp, pool, s);
-    }
+    interp->gc_sys->free_string_header(interp, s);
 }
 
 /*
 
-=item C<void * Parrot_gc_new_bufferlike_header(PARROT_INTERP, size_t size)>
+=item C<Buffer * Parrot_gc_new_bufferlike_header(PARROT_INTERP, size_t size)>
 
 Returns a new buffer-like header from the appropriate sized pool.
 A "bufferlike object" is an object that is considered to be isomorphic to the
@@ -551,35 +513,11 @@
 
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-void *
+Buffer *
 Parrot_gc_new_bufferlike_header(PARROT_INTERP, size_t size)
 {
     ASSERT_ARGS(Parrot_gc_new_bufferlike_header)
-
-    Fixed_Size_Pool * const pool = get_bufferlike_pool(interp, size);
-
-    return get_free_buffer(interp, pool);
-}
-
-/*
-
-=item C<static void * get_free_buffer(PARROT_INTERP, Fixed_Size_Pool *pool)>
-
-Gets a free object or buffer from the given C<pool> and returns it.  If the
-object is larger then a standard C<PObj> structure, all additional memory is
-cleared.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static void *
-get_free_buffer(PARROT_INTERP, ARGIN(Fixed_Size_Pool *pool))
-{
-    ASSERT_ARGS(get_free_buffer)
-    return pool->get_free_object(interp, pool);
+    return interp->gc_sys->allocate_bufferlike_header(interp, size);
 }
 
 /*
@@ -599,8 +537,7 @@
     size_t size)
 {
     ASSERT_ARGS(Parrot_gc_free_bufferlike_header)
-    Fixed_Size_Pool * const pool = get_bufferlike_pool(interp, size);
-    pool->add_free_object(interp, pool, obj);
+    interp->gc_sys->free_bufferlike_header(interp, obj, size);
 }
 
 /*
@@ -621,19 +558,7 @@
     ARGOUT(Buffer *buffer), size_t size)
 {
     ASSERT_ARGS(Parrot_gc_allocate_buffer_storage_aligned)
-    size_t new_size;
-    char *mem;
-
-    Buffer_buflen(buffer) = 0;
-    Buffer_bufstart(buffer) = NULL;
-    new_size = aligned_size(buffer, size);
-    mem = (char *)mem_allocate(interp, new_size,
-        interp->mem_pools->memory_pool);
-    mem = aligned_mem(buffer, mem);
-    Buffer_bufstart(buffer) = mem;
-    if (PObj_is_COWable_TEST(buffer))
-        new_size -= sizeof (void*);
-    Buffer_buflen(buffer) = new_size;
+    interp->gc_sys->allocate_buffer_storage(interp, buffer, size);
 }
 
 /*
@@ -656,58 +581,7 @@
     size_t newsize)
 {
     ASSERT_ARGS(Parrot_gc_reallocate_buffer_storage)
-    size_t copysize;
-    char  *mem;
-    Variable_Size_Pool * const pool = interp->mem_pools->memory_pool;
-    size_t new_size, needed, old_size;
-
-    /*
-     * we don't shrink buffers
-     */
-    if (newsize <= Buffer_buflen(buffer))
-        return;
-
-    /*
-     * same as below but barely used and tested - only 3 list related
-     * tests do use true reallocation
-     *
-     * list.c, which does _reallocate, has 2 reallocations
-     * normally, which play ping pong with buffers.
-     * The normal case is therefore always to allocate a new block
-     */
-    new_size = aligned_size(buffer, newsize);
-    old_size = aligned_size(buffer, Buffer_buflen(buffer));
-    needed   = new_size - old_size;
-
-    if ((pool->top_block->free >= needed)
-    &&  (pool->top_block->top  == (char *)Buffer_bufstart(buffer) + old_size)) {
-        pool->top_block->free -= needed;
-        pool->top_block->top  += needed;
-        Buffer_buflen(buffer) = newsize;
-        return;
-    }
-
-    copysize = Buffer_buflen(buffer);
-
-    if (!PObj_COW_TEST(buffer))
-        pool->guaranteed_reclaimable += copysize;
-    else
-        pool->possibly_reclaimable   += copysize;
-
-    mem = (char *)mem_allocate(interp, new_size, pool);
-    mem = aligned_mem(buffer, mem);
-
-    /* We shouldn't ever have a 0 from size, but we do. If we can track down
-     * those bugs, this can be removed which would make things cheaper */
-    if (copysize)
-        memcpy(mem, Buffer_bufstart(buffer), copysize);
-
-    Buffer_bufstart(buffer) = mem;
-
-    if (PObj_is_COWable_TEST(buffer))
-        new_size -= sizeof (void *);
-
-    Buffer_buflen(buffer) = new_size;
+    interp->gc_sys->reallocate_buffer_storage(interp, buffer, newsize);
 }
 
 /*
@@ -729,26 +603,7 @@
     size_t size)
 {
     ASSERT_ARGS(Parrot_gc_allocate_string_storage)
-    size_t       new_size;
-    Variable_Size_Pool *pool;
-    char        *mem;
-
-    Buffer_buflen(str)   = 0;
-    Buffer_bufstart(str) = NULL;
-
-    if (size == 0)
-        return;
-
-    pool     = PObj_constant_TEST(str)
-                ? interp->mem_pools->constant_string_pool
-                : interp->mem_pools->memory_pool;
-
-    new_size = aligned_string_size(size);
-    mem      = (char *)mem_allocate(interp, new_size, pool);
-    mem     += sizeof (void*);
-
-    Buffer_bufstart(str) = str->strstart = mem;
-    Buffer_buflen(str)   = new_size - sizeof (void*);
+    interp->gc_sys->allocate_string_storage(interp, str, size);
 }
 
 /*
@@ -769,524 +624,202 @@
     size_t newsize)
 {
     ASSERT_ARGS(Parrot_gc_reallocate_string_storage)
-    size_t copysize;
-    char *mem, *oldmem;
-    size_t new_size, needed, old_size;
-
-    Variable_Size_Pool * const pool =
-        PObj_constant_TEST(str)
-            ? interp->mem_pools->constant_string_pool
-            : interp->mem_pools->memory_pool;
-
-    /* if the requested size is smaller then buflen, we are done */
-    if (newsize <= Buffer_buflen(str))
-        return;
-
-    /*
-     * first check, if we can reallocate:
-     * - if the passed strings buffer is the last string in the pool and
-     * - if there is enough size, we can just move the pool's top pointer
-     */
-    new_size = aligned_string_size(newsize);
-    old_size = aligned_string_size(Buffer_buflen(str));
-    needed   = new_size - old_size;
-
-    if (pool->top_block->free >= needed
-    &&  pool->top_block->top  == (char *)Buffer_bufstart(str) + old_size) {
-        pool->top_block->free -= needed;
-        pool->top_block->top  += needed;
-        Buffer_buflen(str) = new_size - sizeof (void*);
-        return;
-    }
-
-    PARROT_ASSERT(str->bufused <= newsize);
-
-    /* only copy used memory, not total string buffer */
-    copysize = str->bufused;
-
-    if (!PObj_COW_TEST(str))
-        pool->guaranteed_reclaimable += Buffer_buflen(str);
-    else
-        pool->possibly_reclaimable   += Buffer_buflen(str);
-
-    mem = (char *)mem_allocate(interp, new_size, pool);
-    mem += sizeof (void *);
-
-    /* copy mem from strstart, *not* bufstart */
-    oldmem             = str->strstart;
-    Buffer_bufstart(str) = (void *)mem;
-    str->strstart      = mem;
-    Buffer_buflen(str)   = new_size - sizeof (void*);
-
-    /* We shouldn't ever have a 0 from size, but we do. If we can track down
-     * those bugs, this can be removed which would make things cheaper */
-    if (copysize)
-        memcpy(mem, oldmem, copysize);
+    interp->gc_sys->reallocate_string_storage(interp, str, newsize);
 }
 
 /*
 
-=item C<void Parrot_gc_mark_and_sweep(PARROT_INTERP, UINTVAL flags)>
+=item C<void * Parrot_gc_allocate_pmc_attributes(PARROT_INTERP, PMC *pmc)>
 
-Calls the configured garbage collector to find and reclaim unused
-headers. Performs a complete mark & sweep run of the GC.
+Allocates a new attribute structure for a PMC if it has the auto_attrs flag
+set.
 
 =cut
 
 */
 
-void
-Parrot_gc_mark_and_sweep(PARROT_INTERP, UINTVAL flags)
+PARROT_CANNOT_RETURN_NULL
+void *
+Parrot_gc_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
 {
-    ASSERT_ARGS(Parrot_gc_mark_and_sweep)
-    interp->gc_sys->do_gc_mark(interp, flags);
+    ASSERT_ARGS(Parrot_gc_allocate_pmc_attributes)
+    return interp->gc_sys->allocate_pmc_attributes(interp, pmc);
 }
 
 /*
 
-=item C<void Parrot_gc_compact_memory_pool(PARROT_INTERP)>
-
-Scan the string pools and compact them. This does not perform a GC mark or
-sweep run, and does not check whether string buffers are still alive.
-Redirects to C<compact_pool>.
+=item C<void Parrot_gc_free_pmc_attributes(PARROT_INTERP, PMC *pmc)>
 
-=cut
+Deallocates an attibutes structure from a PMC if it has the auto_attrs
+flag set.
 
 */
 
 void
-Parrot_gc_compact_memory_pool(PARROT_INTERP)
+Parrot_gc_free_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
 {
-    ASSERT_ARGS(Parrot_gc_compact_memory_pool)
-    compact_pool(interp, interp->mem_pools->memory_pool);
+    ASSERT_ARGS(Parrot_gc_free_pmc_attributes)
+    interp->gc_sys->free_pmc_attributes(interp, pmc);
 }
 
 /*
 
-=item C<void Parrot_gc_merge_header_pools(Interp *dest_interp, Interp
-*source_interp)>
-
-Merges the header pools of C<source_interp> into those of C<dest_interp>.
-(Used to deal with shared objects left after interpreter destruction.)
+=item C<void * Parrot_gc_allocate_fixed_size_storage(PARROT_INTERP, size_t
+size)>
 
-=cut
+Allocates a fixed-size chunk of memory for use. This memory is not manually
+managed and needs to be freed with C<Parrot_gc_free_fixed_size_storage>
 
 */
 
-void
-Parrot_gc_merge_header_pools(ARGMOD(Interp *dest_interp),
-    ARGIN(Interp *source_interp))
+PARROT_CANNOT_RETURN_NULL
+void *
+Parrot_gc_allocate_fixed_size_storage(PARROT_INTERP, size_t size)
 {
-    ASSERT_ARGS(Parrot_gc_merge_header_pools)
-
-    Memory_Pools * const dest_arena   = dest_interp->mem_pools;
-    Memory_Pools * const source_arena = source_interp->mem_pools;
-    UINTVAL        i;
-
-    /* heavily borrowed from forall_header_pools */
-    fix_pmc_syncs(dest_interp, source_arena->constant_pmc_pool);
-    Parrot_gc_merge_buffer_pools(dest_interp, dest_arena->constant_pmc_pool,
-            source_arena->constant_pmc_pool);
-
-    fix_pmc_syncs(dest_interp, source_arena->pmc_pool);
-    Parrot_gc_merge_buffer_pools(dest_interp, dest_arena->pmc_pool,
-            source_arena->pmc_pool);
-
-    Parrot_gc_merge_buffer_pools(dest_interp,
-            dest_arena->constant_string_header_pool,
-            source_arena->constant_string_header_pool);
-
-    for (i = 0; i < source_arena->num_sized; ++i) {
-        if (!source_arena->sized_header_pools[i])
-            continue;
-
-        if (i >= dest_arena->num_sized
-        || !dest_arena->sized_header_pools[i]) {
-            Fixed_Size_Pool *ignored = get_bufferlike_pool(dest_interp,
-                    i * sizeof (void *));
-            UNUSED(ignored);
-            PARROT_ASSERT(dest_arena->sized_header_pools[i]);
-        }
-
-        Parrot_gc_merge_buffer_pools(dest_interp,
-            dest_arena->sized_header_pools[i],
-            source_arena->sized_header_pools[i]);
-    }
+    ASSERT_ARGS(Parrot_gc_allocate_fixed_size_storage)
+    return interp->gc_sys->allocate_fixed_size_storage(interp, size);
 }
 
 /*
 
-=item C<static void Parrot_gc_merge_buffer_pools(PARROT_INTERP, Fixed_Size_Pool
-*dest, Fixed_Size_Pool *source)>
-
-Merge pool C<source> into pool C<dest>. Combines the free lists directly,
-moves all arenas to the new pool, and remove the old pool. To merge, the
-two pools must have the same object size, and the same name (if they have
-names).
+=item C<void Parrot_gc_free_fixed_size_storage(PARROT_INTERP, size_t size, void
+*data)>
 
-=cut
+Manually deallocates fixed size storage allocated with
+C<Parrot_gc_allocate_fixed_size_storage>
 
 */
 
-static void
-Parrot_gc_merge_buffer_pools(PARROT_INTERP,
-        ARGMOD(Fixed_Size_Pool *dest), ARGMOD(Fixed_Size_Pool *source))
+void
+Parrot_gc_free_fixed_size_storage(PARROT_INTERP, size_t size, ARGMOD(void *data))
 {
-    ASSERT_ARGS(Parrot_gc_merge_buffer_pools)
-    Fixed_Size_Arena  *cur_arena;
-    GC_MS_PObj_Wrapper  *free_list_end;
-
-    PARROT_ASSERT(dest->object_size == source->object_size);
-    PARROT_ASSERT((dest->name == NULL && source->name == NULL)
-                || STREQ(dest->name, source->name));
-
-    dest->total_objects += source->total_objects;
-
-    /* append new free_list to old */
-    /* XXX this won't work with, e.g., gc_gms */
-    free_list_end = dest->free_list;
-
-    if (free_list_end == NULL)
-        dest->free_list = source->free_list;
-    else {
-        while (free_list_end->next_ptr)
-            free_list_end = free_list_end->next_ptr;
-
-        free_list_end->next_ptr = source->free_list;
-    }
-
-    /* now append source arenas */
-    cur_arena = source->last_Arena;
-
-    while (cur_arena) {
-        size_t                     total_objects;
-        Fixed_Size_Arena * const next_arena = cur_arena->prev;
-
-        cur_arena->next = cur_arena->prev = NULL;
-
-        total_objects   = cur_arena->total_objects;
-
-        Parrot_append_arena_in_pool(interp, dest, cur_arena,
-            cur_arena->total_objects);
-
-        /* XXX needed? */
-        cur_arena->total_objects = total_objects;
-
-        cur_arena = next_arena;
-    }
-
-    /* remove things from source */
-    source->last_Arena       = NULL;
-    source->free_list        = NULL;
-    source->total_objects    = 0;
-    source->num_free_objects = 0;
+    ASSERT_ARGS(Parrot_gc_free_fixed_size_storage)
+    interp->gc_sys->free_fixed_size_storage(interp, size, data);
 }
 
 /*
 
-=item C<static void fix_pmc_syncs(Interp *dest_interp, Fixed_Size_Pool *pool)>
-
-Walks through the given arena, looking for all live and shared PMCs,
-transferring their sync values to the destination interpreter.
-
-=cut
-
-*/
-
-static void
-fix_pmc_syncs(ARGMOD(Interp *dest_interp), ARGIN(Fixed_Size_Pool *pool))
-{
-    ASSERT_ARGS(fix_pmc_syncs)
-    Fixed_Size_Arena *cur_arena;
-    const UINTVAL       object_size = pool->object_size;
-
-    for (cur_arena = pool->last_Arena; cur_arena; cur_arena = cur_arena->prev) {
-        PMC   *p = (PMC *)((char*)cur_arena->start_objects);
-        size_t i;
-
-        for (i = 0; i < cur_arena->used; i++) {
-            if (!PObj_on_free_list_TEST(p) && PObj_is_PMC_TEST(p)) {
-                if (PObj_is_PMC_shared_TEST(p))
-                    PMC_sync(p)->owner = dest_interp;
-                else
-                    Parrot_ex_throw_from_c_args(dest_interp, NULL,
-                        EXCEPTION_INTERP_ERROR,
-                        "Unshared PMC still alive after interpreter"
-                        "destruction. address=%p, base_type=%d\n",
-                        p, p->vtable->base_type);
-            }
+=item C<void * Parrot_gc_allocate_memory_chunk(PARROT_INTERP, size_t size)>
 
-            p = (PMC *)((char *)p + object_size);
-        }
-    }
-}
+=item C<void * Parrot_gc_reallocate_memory_chunk(PARROT_INTERP, void *data,
+size_t newsize)>
 
-/*
+=item C<void Parrot_gc_free_memory_chunk(PARROT_INTERP, void *data)>
 
-=item C<void Parrot_gc_destroy_header_pools(PARROT_INTERP)>
+=item C<void *
+Parrot_gc_allocate_memory_chunk_with_interior_pointers(PARROT_INTERP, size_t
+size)>
 
-Performs a garbage collection sweep on all pools, then frees them.  Calls
-C<header_pools_iterate_callback> to loop over all the pools, passing
-C<sweep_cb_pmc> and C<sweep_cb_buf> callback routines. Frees the array of sized
-header pointers in the C<Memory_Pools> structure too.
+=item C<void *
+Parrot_gc_reallocate_memory_chunk_with_interior_pointers(PARROT_INTERP, void
+*data, size_t newsize, size_t oldsize)>
 
-=cut
+TODO Write docu.
 
 */
 
-void
-Parrot_gc_destroy_header_pools(PARROT_INTERP)
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+void *
+Parrot_gc_allocate_memory_chunk(PARROT_INTERP, size_t size)
 {
-    ASSERT_ARGS(Parrot_gc_destroy_header_pools)
-    INTVAL pass;
-
-    /* const/non const COW strings life in different pools
-     * so in first pass
-     * COW refcount is done, in 2. refcounting
-     * in 3rd freeing
-     */
-    const INTVAL start = 2;
-
-    header_pools_iterate_callback(interp, POOL_PMC, NULL, sweep_cb_pmc);
-    header_pools_iterate_callback(interp, POOL_PMC | POOL_CONST, NULL,
-            sweep_cb_pmc);
-
-    for (pass = start; pass <= 2; pass++) {
-        header_pools_iterate_callback(interp, POOL_BUFFER | POOL_CONST,
-                (void *)pass, sweep_cb_buf);
-    }
-
-    mem_internal_free(interp->mem_pools->sized_header_pools);
-
-    if (interp->mem_pools->attrib_pools) {
-        unsigned int i;
-        for (i = 0; i < interp->mem_pools->num_attribs; i++) {
-            PMC_Attribute_Pool  *pool  = interp->mem_pools->attrib_pools[i];
-            PMC_Attribute_Arena *arena;
-
-            if (!pool)
-                continue;
-
-            arena = pool->top_arena;
-
-            while (arena) {
-                PMC_Attribute_Arena *next = arena->next;
-                mem_internal_free(arena);
-                arena = next;
-            }
-            mem_internal_free(pool);
-        }
-
-        mem_internal_free(interp->mem_pools->attrib_pools);
-    }
-
-    interp->mem_pools->attrib_pools       = NULL;
-    interp->mem_pools->sized_header_pools = NULL;
+    ASSERT_ARGS(Parrot_gc_allocate_memory_chunk)
+    return interp->gc_sys->allocate_memory_chunk(interp, size);
 }
 
-/*
-
-=item C<static int sweep_cb_pmc(PARROT_INTERP, Fixed_Size_Pool *pool, int flag,
-void *arg)>
-
-Performs a garbage collection sweep of the given pmc pool, then frees it. Calls
-C<Parrot_gc_sweep_pool> to perform the sweep, and C<free_pool> to free the pool and
-all its arenas. Always returns C<0>.
-
-=cut
-
-*/
-
-static int
-sweep_cb_pmc(PARROT_INTERP, ARGMOD(Fixed_Size_Pool *pool),
-        SHIM(int flag), SHIM(void *arg))
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+void *
+Parrot_gc_reallocate_memory_chunk(PARROT_INTERP, ARGFREE(void *data), size_t newsize)
 {
-    ASSERT_ARGS(sweep_cb_pmc)
-    Parrot_gc_sweep_pool(interp, pool);
-    free_pool(pool);
-    return 0;
+    ASSERT_ARGS(Parrot_gc_reallocate_memory_chunk)
+    return interp->gc_sys->reallocate_memory_chunk(interp, data, newsize);
 }
 
-/*
-
-=item C<static int sweep_cb_buf(PARROT_INTERP, Fixed_Size_Pool *pool, int flag,
-void *arg)>
-
-Performs a final garbage collection sweep, then frees the pool. Calls
-C<Parrot_gc_sweep_pool> to perform the sweep, and C<free_pool> to free the pool and
-all its arenas.
-
-=cut
-
-*/
-
-static int
-sweep_cb_buf(PARROT_INTERP, ARGMOD(Fixed_Size_Pool *pool), SHIM(int flag),
-        ARGIN(void *arg))
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+void
+Parrot_gc_free_memory_chunk(PARROT_INTERP, ARGIN_NULLOK(void *data))
 {
-    ASSERT_ARGS(sweep_cb_buf)
-    UNUSED(arg);
-    Parrot_gc_sweep_pool(interp, pool);
-    free_pool(pool);
-
-    return 0;
+    ASSERT_ARGS(Parrot_gc_free_memory_chunk)
+    interp->gc_sys->free_memory_chunk(interp, data);
 }
 
-/*
-
-=item C<static void free_pool(Fixed_Size_Pool *pool)>
-
-Frees a pool and all of its arenas. Loops through the list of arenas backwards
-and returns each to the memory manager. Then, frees the pool structure itself.
 
-=cut
-
-*/
-
-static void
-free_pool(ARGMOD(Fixed_Size_Pool *pool))
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+void *
+Parrot_gc_allocate_memory_chunk_with_interior_pointers(PARROT_INTERP, size_t size)
 {
-    ASSERT_ARGS(free_pool)
-    Fixed_Size_Arena *cur_arena;
-
-    for (cur_arena = pool->last_Arena; cur_arena;) {
-        Fixed_Size_Arena * const next = cur_arena->prev;
-        mem_internal_free(cur_arena->start_objects);
-        mem_internal_free(cur_arena);
-        cur_arena = next;
-    }
-    mem_internal_free(pool);
+    ASSERT_ARGS(Parrot_gc_allocate_memory_chunk_with_interior_pointers)
+    return interp->gc_sys->allocate_memory_chunk_with_interior_pointers(interp, size);
 }
 
-
-/*
-
-=item C<void Parrot_gc_destroy_memory_pools(PARROT_INTERP)>
-
-Destroys the memory pool and the constant string pool. Loop through both
-pools and destroy all memory blocks contained in them. Once all the
-blocks are freed, free the pools themselves.
-
-=cut
-
-*/
-
-void
-Parrot_gc_destroy_memory_pools(PARROT_INTERP)
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+void *
+Parrot_gc_reallocate_memory_chunk_with_interior_pointers(PARROT_INTERP,
+        ARGFREE(void *data), size_t newsize, size_t oldsize)
 {
-    ASSERT_ARGS(Parrot_gc_destroy_memory_pools)
-    int i;
-
-    for (i = 0; i < 2; i++) {
-        Variable_Size_Pool * const pool = i ?
-                interp->mem_pools->constant_string_pool :
-                interp->mem_pools->memory_pool;
-        Memory_Block *cur_block;
-
-        cur_block = pool->top_block;
-
-        while (cur_block) {
-            Memory_Block * const next_block = cur_block->prev;
-            mem_internal_free(cur_block);
-            cur_block = next_block;
-        }
-
-        mem_internal_free(pool);
-    }
+    ASSERT_ARGS(Parrot_gc_reallocate_memory_chunk_with_interior_pointers)
+    return interp->gc_sys->reallocate_memory_chunk_with_interior_pointers(interp,
+            data, newsize, oldsize);
 }
 
+
 /*
 
-=item C<int Parrot_gc_ptr_in_memory_pool(PARROT_INTERP, void *bufstart)>
+=item C<void Parrot_gc_mark_and_sweep(PARROT_INTERP, UINTVAL flags)>
 
-Determines if the given C<bufstart> pointer points to a location inside the
-memory pool. Returns 1 if the pointer is in the memory pool, 0 otherwise.
+Calls the configured garbage collector to find and reclaim unused
+headers. Performs a complete mark & sweep run of the GC.
 
 =cut
 
 */
 
-PARROT_WARN_UNUSED_RESULT
-int
-Parrot_gc_ptr_in_memory_pool(PARROT_INTERP, ARGIN(void *bufstart))
+void
+Parrot_gc_mark_and_sweep(PARROT_INTERP, UINTVAL flags)
 {
-    ASSERT_ARGS(Parrot_gc_ptr_in_memory_pool)
-    Variable_Size_Pool * const pool = interp->mem_pools->memory_pool;
-    Memory_Block * cur_block = pool->top_block;
-
-    while (cur_block) {
-        if ((char *)bufstart >= cur_block->start &&
-            (char *) bufstart < cur_block->start + cur_block->size) {
-            return 1;
-        }
-        cur_block = cur_block->prev;
-    }
-    return 0;
+    ASSERT_ARGS(Parrot_gc_mark_and_sweep)
+    interp->gc_sys->do_gc_mark(interp, flags);
 }
 
 /*
 
-=item C<int Parrot_gc_ptr_is_pmc(PARROT_INTERP, void *ptr)>
+=item C<void Parrot_gc_compact_memory_pool(PARROT_INTERP)>
 
-Determines if a given pointer is a PMC or not. It is a PMC if it is properly
-contained in one of this interpreters PMC pools.
+Compact string pool if supported by GC.
 
 =cut
 
 */
 
-int
-Parrot_gc_ptr_is_pmc(PARROT_INTERP, ARGIN(void *ptr))
+void
+Parrot_gc_compact_memory_pool(PARROT_INTERP)
 {
-    ASSERT_ARGS(Parrot_gc_ptr_is_pmc)
-        return contained_in_pool(interp, interp->mem_pools->pmc_pool, ptr) ||
-        contained_in_pool(interp, interp->mem_pools->constant_pmc_pool, ptr);
+    ASSERT_ARGS(Parrot_gc_compact_memory_pool)
+    interp->gc_sys->compact_string_pool(interp);
 }
 
 /*
 
-=item C<int Parrot_gc_get_pmc_index(PARROT_INTERP, PMC* pmc)>
+=item C<void Parrot_gc_destroy_child_interp(Interp *dest_interp, Interp
+*source_interp)>
 
-Gets the index of the PMC in the pool. The first PMC in the first pool is 1,
-the second is 2, etc.
+Merges the header pools of C<source_interp> into those of C<dest_interp>.
+(Used to deal with shared objects left after interpreter destruction.)
 
 =cut
 
 */
 
-int
-Parrot_gc_get_pmc_index(PARROT_INTERP, ARGIN(PMC* pmc))
+void
+Parrot_gc_destroy_child_interp(ARGMOD(Interp *dest_interp),
+    ARGIN(Interp *source_interp))
 {
-    ASSERT_ARGS(Parrot_gc_get_pmc_index)
-    UINTVAL id = 1;     /* first PMC in first arena */
-    Fixed_Size_Arena *arena;
-    Fixed_Size_Pool *pool;
-
-    pool = interp->mem_pools->pmc_pool;
-    for (arena = pool->last_Arena; arena; arena = arena->prev) {
-        const ptrdiff_t ptr_diff = (ptrdiff_t)pmc - (ptrdiff_t)arena->start_objects;
-        if (ptr_diff >= 0 && ptr_diff <
-                (ptrdiff_t)(arena->used * pool->object_size)) {
-            PARROT_ASSERT(ptr_diff % pool->object_size == 0);
-            id += ptr_diff / pool->object_size;
-            return id;
-        }
-        id += arena->total_objects;
-    }
-
-    pool = interp->mem_pools->constant_pmc_pool;
-    for (arena = pool->last_Arena; arena; arena = arena->prev) {
-        const ptrdiff_t ptr_diff = (ptrdiff_t)pmc - (ptrdiff_t)arena->start_objects;
-        if (ptr_diff >= 0 && ptr_diff <
-                (ptrdiff_t)(arena->used * pool->object_size)) {
-            PARROT_ASSERT(ptr_diff % pool->object_size == 0);
-            id += ptr_diff / pool->object_size;
-            return id;
-        }
-        id += arena->total_objects;
-    }
-
-    Parrot_ex_throw_from_c_args(interp, NULL, 1, "Couldn't find PMC in arenas");
+    ASSERT_ARGS(Parrot_gc_destroy_child_interp)
+    dest_interp->gc_sys->destroy_child_interp(dest_interp, source_interp);
 }
 
 /*
@@ -1303,16 +836,7 @@
 Parrot_gc_active_sized_buffers(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_active_sized_buffers)
-    int j, ret = 0;
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    for (j = 0; j < (INTVAL)mem_pools->num_sized; j++) {
-        Fixed_Size_Pool * const header_pool =
-            mem_pools->sized_header_pools[j];
-        if (header_pool)
-            ret += header_pool->total_objects -
-                header_pool->num_free_objects;
-    }
-    return ret;
+    return interp->gc_sys->get_gc_info(interp, ACTIVE_BUFFERS);
 }
 
 /*
@@ -1329,15 +853,7 @@
 Parrot_gc_total_sized_buffers(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_total_sized_buffers)
-    int j, ret = 0;
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    for (j = 0; j < (INTVAL)mem_pools->num_sized; j++) {
-        Fixed_Size_Pool * const header_pool =
-            mem_pools->sized_header_pools[j];
-        if (header_pool)
-            ret += header_pool->total_objects;
-    }
-    return ret;
+    return interp->gc_sys->get_gc_info(interp, TOTAL_BUFFERS);
 }
 
 /*
@@ -1354,9 +870,7 @@
 Parrot_gc_active_pmcs(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_active_pmcs)
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    return mem_pools->pmc_pool->total_objects -
-           mem_pools->pmc_pool->num_free_objects;
+    return interp->gc_sys->get_gc_info(interp, ACTIVE_PMCS);
 }
 
 /*
@@ -1373,8 +887,7 @@
 Parrot_gc_total_pmcs(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_total_pmcs)
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    return mem_pools->pmc_pool->total_objects;
+    return interp->gc_sys->get_gc_info(interp, TOTAL_PMCS);
 }
 
 /*
@@ -1415,64 +928,56 @@
 Parrot_gc_count_mark_runs(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_count_mark_runs)
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    return mem_pools->gc_mark_runs;
+    return interp->gc_sys->get_gc_info(interp, GC_MARK_RUNS);
 }
 
 size_t
 Parrot_gc_count_collect_runs(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_count_collect_runs)
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    return mem_pools->gc_collect_runs;
+    return interp->gc_sys->get_gc_info(interp, GC_COLLECT_RUNS);
 }
 
 size_t
 Parrot_gc_count_lazy_mark_runs(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_count_lazy_mark_runs)
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    return mem_pools->gc_lazy_mark_runs;;
+    return interp->gc_sys->get_gc_info(interp, GC_LAZY_MARK_RUNS);
 }
 
 size_t
 Parrot_gc_total_memory_allocated(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_total_memory_allocated)
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    return mem_pools->memory_allocated;
+    return interp->gc_sys->get_gc_info(interp, TOTAL_MEM_ALLOC);
 }
 
 size_t
 Parrot_gc_headers_alloc_since_last_collect(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_headers_alloc_since_last_collect)
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    return mem_pools->header_allocs_since_last_collect;
+    return interp->gc_sys->get_gc_info(interp, HEADER_ALLOCS_SINCE_COLLECT);
 }
 
 size_t
 Parrot_gc_mem_alloc_since_last_collect(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_mem_alloc_since_last_collect)
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    return mem_pools->mem_allocs_since_last_collect;
+    return interp->gc_sys->get_gc_info(interp, MEM_ALLOCS_SINCE_COLLECT);
 }
 
 UINTVAL
 Parrot_gc_total_copied(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_total_copied)
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    return mem_pools->memory_collected;
+    return interp->gc_sys->get_gc_info(interp, TOTAL_COPIED);
 }
 
 UINTVAL
 Parrot_gc_impatient_pmcs(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_impatient_pmcs)
-    const Memory_Pools * const mem_pools = interp->mem_pools;
-    return mem_pools->num_early_gc_PMCs;
+    return interp->gc_sys->get_gc_info(interp, IMPATIENT_PMCS);
 }
 
 /*
@@ -1515,8 +1020,8 @@
 Parrot_block_GC_mark(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_block_GC_mark)
-    interp->mem_pools->gc_mark_block_level++;
-    Parrot_shared_gc_block(interp);
+    if (interp->gc_sys->block_mark)
+        interp->gc_sys->block_mark(interp);
 }
 
 PARROT_EXPORT
@@ -1524,10 +1029,8 @@
 Parrot_unblock_GC_mark(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_unblock_GC_mark)
-    if (interp->mem_pools->gc_mark_block_level) {
-        interp->mem_pools->gc_mark_block_level--;
-        Parrot_shared_gc_unblock(interp);
-    }
+    if (interp->gc_sys->unblock_mark)
+        interp->gc_sys->unblock_mark(interp);
 }
 
 PARROT_EXPORT
@@ -1535,7 +1038,8 @@
 Parrot_block_GC_sweep(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_block_GC_sweep)
-    interp->mem_pools->gc_sweep_block_level++;
+    if (interp->gc_sys->block_sweep)
+        interp->gc_sys->block_sweep(interp);
 }
 
 PARROT_EXPORT
@@ -1543,8 +1047,8 @@
 Parrot_unblock_GC_sweep(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_unblock_GC_sweep)
-    if (interp->mem_pools->gc_sweep_block_level)
-        interp->mem_pools->gc_sweep_block_level--;
+    if (interp->gc_sys->unblock_sweep)
+        interp->gc_sys->unblock_sweep(interp);
 }
 
 PARROT_EXPORT
@@ -1552,7 +1056,10 @@
 Parrot_is_blocked_GC_mark(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_is_blocked_GC_mark)
-    return interp->mem_pools->gc_mark_block_level;
+    if (interp->gc_sys->is_blocked_mark)
+        return interp->gc_sys->is_blocked_mark(interp);
+    else
+        return 0;
 }
 
 PARROT_EXPORT
@@ -1560,15 +1067,20 @@
 Parrot_is_blocked_GC_sweep(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_is_blocked_GC_sweep)
-    return interp->mem_pools->gc_sweep_block_level;
+    if (interp->gc_sys->is_blocked_sweep)
+        return interp->gc_sys->is_blocked_mark(interp);
+    else
+        return 0;
 }
 
 void
 Parrot_gc_completely_unblock(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_gc_completely_unblock)
-    interp->mem_pools->gc_mark_block_level  = 0;
-    interp->mem_pools->gc_sweep_block_level = 0;
+    while (Parrot_is_blocked_GC_mark(interp))
+           Parrot_unblock_GC_mark(interp);
+    while (Parrot_is_blocked_GC_sweep(interp))
+           Parrot_unblock_GC_sweep(interp);
 }
 
 /*
@@ -1585,145 +1097,39 @@
 Parrot_gc_pmc_needs_early_collection(PARROT_INTERP, ARGMOD(PMC *pmc))
 {
     ASSERT_ARGS(Parrot_gc_pmc_needs_early_collection)
-    PObj_needs_early_gc_SET(pmc);
-    ++interp->mem_pools->num_early_gc_PMCs;
+    if (interp->gc_sys->pmc_needs_early_collection)
+        interp->gc_sys->pmc_needs_early_collection(interp, pmc);
 }
 
-
 /*
 
-=item C<void * Parrot_gc_allocate_pmc_attributes(PARROT_INTERP, PMC *pmc)>
+=item C<STRING * Parrot_gc_sys_name(PARROT_INTERP)>
 
-Allocates a new attribute structure for a PMC if it has the auto_attrs flag
-set.
+Retrieve the name of the currently active GC system.
 
 =cut
 
 */
 
 PARROT_CANNOT_RETURN_NULL
-void *
-Parrot_gc_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
-{
-    ASSERT_ARGS(Parrot_gc_allocate_pmc_attributes)
-    const size_t attr_size = pmc->vtable->attr_size;
-#if GC_USE_FIXED_SIZE_ALLOCATOR
-    PMC_Attribute_Pool * const pool = Parrot_gc_get_attribute_pool(interp,
-        attr_size);
-    void * const attrs = Parrot_gc_get_attributes_from_pool(interp, pool);
-    memset(attrs, 0, attr_size);
-    PMC_data(pmc) = attrs;
-    return attrs;
-#else
-    void * const data =  mem_sys_allocate_zeroed(attr_size);
-    PMC_data(pmc) = data;
-    return data;
-#endif
-}
-
-/*
-
-=item C<void Parrot_gc_free_pmc_attributes(PARROT_INTERP, PMC *pmc)>
-
-Deallocates an attibutes structure from a PMC if it has the auto_attrs
-flag set.
-
-*/
-
-void
-Parrot_gc_free_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+STRING *
+Parrot_gc_sys_name(PARROT_INTERP)
 {
-    ASSERT_ARGS(Parrot_gc_free_pmc_attributes)
-    void * const data = PMC_data(pmc);
-
-    if (data) {
-
-#if GC_USE_FIXED_SIZE_ALLOCATOR
-        const size_t attr_size = pmc->vtable->attr_size;
-        const size_t item_size = attr_size < sizeof (void *) ? sizeof (void *) : attr_size;
-        PMC_Attribute_Pool ** const pools = interp->mem_pools->attrib_pools;
-        const size_t idx = item_size - sizeof (void *);
-        Parrot_gc_free_attributes_from_pool(interp, pools[idx], data);
-#else
-        mem_sys_free(PMC_data(pmc));
-        PMC_data(pmc) = NULL;
-#endif
+    ASSERT_ARGS(Parrot_gc_sys_name)
+    STRING *name = NULL;
+    switch (interp->gc_sys->sys_type) {
+        case MS:
+            name = Parrot_str_new(interp, "ms", 2);
+            break;
+        case INF:
+            name = Parrot_str_new(interp, "inf", 3);
+            break;
+        default:
+            name = Parrot_str_new(interp, "unknown", 7);
+            break;
     }
-}
-
-/*
-
-=item C<void * Parrot_gc_allocate_fixed_size_storage(PARROT_INTERP, size_t
-size)>
-
-Allocates a fixed-size chunk of memory for use. This memory is not manually
-managed and needs to be freed with C<Parrot_gc_free_fixed_size_storage>
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-void *
-Parrot_gc_allocate_fixed_size_storage(PARROT_INTERP, size_t size)
-{
-    ASSERT_ARGS(Parrot_gc_allocate_fixed_size_storage)
-    PMC_Attribute_Pool *pool = NULL;
-    const size_t idx = (size < sizeof (void *)) ? 0 : (size - sizeof (void *));
-
-    /* get the pool directly, if possible, for great speed */
-    if (interp->mem_pools->num_attribs > idx)
-        pool = interp->mem_pools->attrib_pools[idx];
-
-    /* otherwise create it */
-    if (!pool)
-        pool = Parrot_gc_get_attribute_pool(interp, size);
-
-    return Parrot_gc_get_attributes_from_pool(interp, pool);
-}
-
-/*
-
-=item C<void Parrot_gc_free_fixed_size_storage(PARROT_INTERP, size_t size, void
-*data)>
-
-Manually deallocates fixed size storage allocated with
-C<Parrot_gc_allocate_fixed_size_storage>
-
-*/
-
-void
-Parrot_gc_free_fixed_size_storage(PARROT_INTERP, size_t size, ARGMOD(void *data))
-{
-    ASSERT_ARGS(Parrot_gc_free_fixed_size_storage)
-
-    const size_t item_size = size < sizeof (void *) ? sizeof (void *) : size;
-    const size_t idx   = size - sizeof (void *);
-    PMC_Attribute_Pool ** const pools = interp->mem_pools->attrib_pools;
-    Parrot_gc_free_attributes_from_pool(interp, pools[idx], data);
-}
-
-
-/*
-
-=item C<static void Parrot_gc_free_attributes_from_pool(PARROT_INTERP,
-PMC_Attribute_Pool *pool, void *data)>
-
-Frees a fixed-size data item back to the pool for later reallocation.  Private
-to this file.
-
-*/
-
-static void
-Parrot_gc_free_attributes_from_pool(PARROT_INTERP,
-    ARGMOD(PMC_Attribute_Pool *pool),
-    ARGMOD(void *data))
-{
-    ASSERT_ARGS(Parrot_gc_free_attributes_from_pool)
-    PMC_Attribute_Free_List * const item = (PMC_Attribute_Free_List *)data;
-
-    item->next      = pool->free_list;
-    pool->free_list = item;
-
-    pool->num_free_objects++;
+    PARROT_ASSERT(name != NULL);
+    return name;
 }
 
 /*

Modified: branches/ops_pct/src/gc/gc_inf.c
==============================================================================
--- branches/ops_pct/src/gc/gc_inf.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/gc/gc_inf.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -38,44 +38,184 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
 static void gc_inf_add_free_object(SHIM_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
     ARGMOD(Fixed_Size_Pool *pool),
     ARGIN(void *to_add))
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*pool);
 
-static void gc_inf_alloc_objects(SHIM_INTERP, ARGMOD(Fixed_Size_Pool *pool))
+static void gc_inf_alloc_objects(SHIM_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
+    ARGMOD(Fixed_Size_Pool *pool))
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*pool);
 
+static void gc_inf_allocate_buffer_storage(PARROT_INTERP,
+    ARGMOD(Buffer *buffer),
+    size_t size)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*buffer);
+
+PARROT_CAN_RETURN_NULL
+static Buffer* gc_inf_allocate_bufferlike_header(PARROT_INTERP, size_t size)
+        __attribute__nonnull__(1);
+
+PARROT_CAN_RETURN_NULL
+static void* gc_inf_allocate_fixed_size_storage(PARROT_INTERP, size_t size)
+        __attribute__nonnull__(1);
+
+PARROT_CAN_RETURN_NULL
+static void* gc_inf_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*pmc);
+
+PARROT_CAN_RETURN_NULL
+static PMC* gc_inf_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)
+        __attribute__nonnull__(1);
+
+PARROT_CAN_RETURN_NULL
+static STRING* gc_inf_allocate_string_header(PARROT_INTERP, UINTVAL flags)
+        __attribute__nonnull__(1);
+
+static void gc_inf_allocate_string_storage(PARROT_INTERP,
+    ARGMOD(STRING *str),
+    size_t size)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*str);
+
+static void gc_inf_compact_memory_pool(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
+static void gc_inf_free_bufferlike_header(PARROT_INTERP,
+    ARGIN_NULLOK(Buffer *b),
+    size_t size)
+        __attribute__nonnull__(1);
+
+static void gc_inf_free_fixed_size_storage(PARROT_INTERP,
+    size_t size,
+    ARGMOD(void *data))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*data);
+
+static void gc_inf_free_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*pmc);
+
+static void gc_inf_free_pmc_header(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc))
+        __attribute__nonnull__(1);
+
+static void gc_inf_free_string_header(PARROT_INTERP,
+    ARGIN_NULLOK(STRING *s))
+        __attribute__nonnull__(1);
+
 PARROT_CANNOT_RETURN_NULL
 static void * gc_inf_get_free_object(SHIM_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
     ARGMOD(Fixed_Size_Pool *pool))
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*pool);
 
+static size_t gc_inf_get_gc_info(PARROT_INTERP, Interpinfo_enum what)
+        __attribute__nonnull__(1);
+
 static void gc_inf_mark_and_sweep(SHIM_INTERP, UINTVAL flags);
 static void gc_inf_more_traceable_objects(SHIM_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
     ARGMOD(Fixed_Size_Pool *pool))
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*pool);
 
 static void gc_inf_pool_init(SHIM_INTERP, ARGMOD(Fixed_Size_Pool *pool))
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*pool);
 
+static void gc_inf_reallocate_buffer_storage(PARROT_INTERP,
+    ARGMOD(Buffer *buffer),
+    size_t size)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*buffer);
+
+static void gc_inf_reallocate_string_storage(PARROT_INTERP,
+    ARGMOD(STRING *str),
+    size_t size)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*str);
+
 #define ASSERT_ARGS_gc_inf_add_free_object __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(pool) \
+       PARROT_ASSERT_ARG(mem_pools) \
+    , PARROT_ASSERT_ARG(pool) \
     , PARROT_ASSERT_ARG(to_add))
 #define ASSERT_ARGS_gc_inf_alloc_objects __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(pool))
+       PARROT_ASSERT_ARG(mem_pools) \
+    , PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_gc_inf_allocate_buffer_storage \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(buffer))
+#define ASSERT_ARGS_gc_inf_allocate_bufferlike_header \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_inf_allocate_fixed_size_storage \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_inf_allocate_pmc_attributes \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_gc_inf_allocate_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_inf_allocate_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_inf_allocate_string_storage \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(str))
+#define ASSERT_ARGS_gc_inf_compact_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_inf_free_bufferlike_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_inf_free_fixed_size_storage \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(data))
+#define ASSERT_ARGS_gc_inf_free_pmc_attributes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_gc_inf_free_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_inf_free_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_gc_inf_get_free_object __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(pool))
+       PARROT_ASSERT_ARG(mem_pools) \
+    , PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_gc_inf_get_gc_info __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_gc_inf_mark_and_sweep __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_gc_inf_more_traceable_objects __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(pool))
+       PARROT_ASSERT_ARG(mem_pools) \
+    , PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_gc_inf_pool_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_gc_inf_reallocate_buffer_storage \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(buffer))
+#define ASSERT_ARGS_gc_inf_reallocate_string_storage \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(str))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
@@ -111,8 +251,8 @@
 
 /*
 
-=item C<static void gc_inf_add_free_object(PARROT_INTERP, Fixed_Size_Pool *pool,
-void *to_add)>
+=item C<static void gc_inf_add_free_object(PARROT_INTERP, Memory_Pools
+*mem_pools, Fixed_Size_Pool *pool, void *to_add)>
 
 Manually frees a chunk of memory. Normally this would return the memory
 to the free list of the pool, but in this case we just return it to the
@@ -127,8 +267,10 @@
 */
 
 static void
-gc_inf_add_free_object(SHIM_INTERP, ARGMOD(Fixed_Size_Pool *pool),
-    ARGIN(void *to_add))
+gc_inf_add_free_object(SHIM_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool),
+        ARGIN(void *to_add))
 {
     ASSERT_ARGS(gc_inf_add_free_object)
     if (to_add)
@@ -137,8 +279,8 @@
 
 /*
 
-=item C<static void * gc_inf_get_free_object(PARROT_INTERP, Fixed_Size_Pool
-*pool)>
+=item C<static void * gc_inf_get_free_object(PARROT_INTERP, Memory_Pools
+*mem_pools, Fixed_Size_Pool *pool)>
 
 Gets a new object from the pool. Each pool specifies an object size in
 C<pool->object_size> so we can use that number to make the allocation. For
@@ -160,7 +302,9 @@
 
 PARROT_CANNOT_RETURN_NULL
 static void *
-gc_inf_get_free_object(SHIM_INTERP, ARGMOD(Fixed_Size_Pool *pool))
+gc_inf_get_free_object(SHIM_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool))
 {
     ASSERT_ARGS(gc_inf_get_free_object)
     return calloc(pool->object_size, 1);
@@ -168,7 +312,8 @@
 
 /*
 
-=item C<static void gc_inf_alloc_objects(PARROT_INTERP, Fixed_Size_Pool *pool)>
+=item C<static void gc_inf_alloc_objects(PARROT_INTERP, Memory_Pools *mem_pools,
+Fixed_Size_Pool *pool)>
 
 Allocates a new arena of objects from the system. This function is only
 really used internally by the core, the API functions don't need to call
@@ -182,7 +327,9 @@
 */
 
 static void
-gc_inf_alloc_objects(SHIM_INTERP, ARGMOD(Fixed_Size_Pool *pool))
+gc_inf_alloc_objects(SHIM_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool))
 {
     ASSERT_ARGS(gc_inf_alloc_objects)
     UNUSED(pool);
@@ -190,8 +337,8 @@
 
 /*
 
-=item C<static void gc_inf_more_traceable_objects(PARROT_INTERP, Fixed_Size_Pool
-*pool)>
+=item C<static void gc_inf_more_traceable_objects(PARROT_INTERP, Memory_Pools
+*mem_pools, Fixed_Size_Pool *pool)>
 
 Would normally try to find new traceable objects by first running a GC sweep
 and then allocating a new arena from the system. Neither of these are
@@ -206,7 +353,9 @@
 */
 
 static void
-gc_inf_more_traceable_objects(SHIM_INTERP, ARGMOD(Fixed_Size_Pool *pool))
+gc_inf_more_traceable_objects(SHIM_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool))
 {
     ASSERT_ARGS(gc_inf_more_traceable_objects)
     UNUSED(pool);
@@ -240,6 +389,225 @@
 
 /*
 
+=item C<static void gc_inf_compact_memory_pool(PARROT_INTERP)>
+
+Stub for compacting memory pools.
+
+=cut
+
+*/
+static void
+gc_inf_compact_memory_pool(PARROT_INTERP)
+{
+    ASSERT_ARGS(gc_inf_compact_memory_pool)
+}
+
+/*
+
+=item C<static PMC* gc_inf_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)>
+
+=item C<static void gc_inf_free_pmc_header(PARROT_INTERP, PMC *pmc)>
+
+=item C<static STRING* gc_inf_allocate_string_header(PARROT_INTERP, UINTVAL
+flags)>
+
+=item C<static void gc_inf_free_string_header(PARROT_INTERP, STRING *s)>
+
+=item C<static Buffer* gc_inf_allocate_bufferlike_header(PARROT_INTERP, size_t
+size)>
+
+=item C<static void gc_inf_free_bufferlike_header(PARROT_INTERP, Buffer *b,
+size_t size)>
+
+=item C<static void* gc_inf_allocate_pmc_attributes(PARROT_INTERP, PMC *pmc)>
+
+=item C<static void gc_inf_free_pmc_attributes(PARROT_INTERP, PMC *pmc)>
+
+=item C<static void gc_inf_allocate_string_storage(PARROT_INTERP, STRING *str,
+size_t size)>
+
+=item C<static void gc_inf_reallocate_string_storage(PARROT_INTERP, STRING *str,
+size_t size)>
+
+=item C<static void gc_inf_allocate_buffer_storage(PARROT_INTERP, Buffer
+*buffer, size_t size)>
+
+=item C<static void gc_inf_reallocate_buffer_storage(PARROT_INTERP, Buffer
+*buffer, size_t size)>
+
+=item C<static void* gc_inf_allocate_fixed_size_storage(PARROT_INTERP, size_t
+size)>
+
+=item C<static void gc_inf_free_fixed_size_storage(PARROT_INTERP, size_t size,
+void *data)>
+
+Functions for allocating/deallocating various objects.
+
+*/
+
+PARROT_CAN_RETURN_NULL
+static PMC*
+gc_inf_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)
+{
+    ASSERT_ARGS(gc_inf_allocate_pmc_header)
+    return (PMC*)calloc(sizeof (PMC), 1);
+}
+
+static void
+gc_inf_free_pmc_header(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc))
+{
+    ASSERT_ARGS(gc_inf_free_pmc_header)
+    if (pmc)
+        free(pmc);
+}
+
+PARROT_CAN_RETURN_NULL
+static STRING*
+gc_inf_allocate_string_header(PARROT_INTERP, UINTVAL flags)
+{
+    ASSERT_ARGS(gc_inf_allocate_string_header)
+    return (STRING*)calloc(sizeof (STRING), 1);
+}
+
+static void
+gc_inf_free_string_header(PARROT_INTERP, ARGIN_NULLOK(STRING *s))
+{
+    ASSERT_ARGS(gc_inf_free_string_header)
+    if (s)
+        free(s);
+}
+
+PARROT_CAN_RETURN_NULL
+static Buffer*
+gc_inf_allocate_bufferlike_header(PARROT_INTERP, size_t size)
+{
+    ASSERT_ARGS(gc_inf_allocate_bufferlike_header)
+    return (Buffer*)calloc(sizeof (Buffer), 1);
+}
+
+static void
+gc_inf_free_bufferlike_header(PARROT_INTERP, ARGIN_NULLOK(Buffer *b), size_t size)
+{
+    ASSERT_ARGS(gc_inf_free_bufferlike_header)
+    if (b)
+        free(b);
+}
+
+PARROT_CAN_RETURN_NULL
+static void*
+gc_inf_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+{
+    ASSERT_ARGS(gc_inf_allocate_pmc_attributes)
+    const size_t attr_size = pmc->vtable->attr_size;
+    PMC_data(pmc) = calloc(attr_size, 1);
+    return PMC_data(pmc);
+}
+
+static void
+gc_inf_free_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+{
+    ASSERT_ARGS(gc_inf_free_pmc_attributes)
+    if (PMC_data(pmc))
+        free(PMC_data(pmc));
+}
+
+
+static void
+gc_inf_allocate_string_storage(PARROT_INTERP, ARGMOD(STRING *str), size_t size)
+{
+    ASSERT_ARGS(gc_inf_allocate_string_storage)
+    char *mem;
+
+    Buffer_buflen(str)   = 0;
+    Buffer_bufstart(str) = NULL;
+
+    if (size == 0)
+        return;
+
+    mem      = (char *)mem_internal_allocate(size);
+
+    Buffer_bufstart(str) = str->strstart = mem;
+    Buffer_buflen(str)   = size;
+}
+
+static void
+gc_inf_reallocate_string_storage(PARROT_INTERP, ARGMOD(STRING *str), size_t size)
+{
+    ASSERT_ARGS(gc_inf_reallocate_string_storage)
+    char *mem;
+
+    mem      = (char *)mem_internal_realloc(Buffer_bufstart(str), size);
+
+    Buffer_bufstart(str) = str->strstart = mem;
+    Buffer_buflen(str)   = size;
+}
+
+
+static void
+gc_inf_allocate_buffer_storage(PARROT_INTERP, ARGMOD(Buffer *buffer), size_t size)
+{
+    ASSERT_ARGS(gc_inf_allocate_buffer_storage)
+    char *mem;
+
+    Buffer_buflen(buffer)   = 0;
+    Buffer_bufstart(buffer) = NULL;
+
+    if (size == 0)
+        return;
+
+    mem      = (char *)mem_internal_allocate(size);
+
+    Buffer_bufstart(buffer) = mem;
+    Buffer_buflen(buffer)   = size;
+}
+
+static void
+gc_inf_reallocate_buffer_storage(PARROT_INTERP, ARGMOD(Buffer *buffer), size_t size)
+{
+    ASSERT_ARGS(gc_inf_reallocate_buffer_storage)
+    char *mem;
+
+    mem = (char *)mem_internal_realloc(Buffer_bufstart(buffer), size);
+
+    Buffer_bufstart(buffer) = mem;
+    Buffer_buflen(buffer)   = size;
+}
+
+PARROT_CAN_RETURN_NULL
+static void*
+gc_inf_allocate_fixed_size_storage(PARROT_INTERP, size_t size)
+{
+    ASSERT_ARGS(gc_inf_allocate_fixed_size_storage)
+    return calloc(size, 1);
+}
+
+static void
+gc_inf_free_fixed_size_storage(PARROT_INTERP, size_t size, ARGMOD(void *data))
+{
+    ASSERT_ARGS(gc_inf_free_fixed_size_storage)
+    if (data)
+        mem_internal_free(data);
+}
+
+/*
+
+=item C<static size_t gc_inf_get_gc_info(PARROT_INTERP, Interpinfo_enum what)>
+
+Stub for GC introspection function.
+
+=cut
+
+*/
+static size_t
+gc_inf_get_gc_info(PARROT_INTERP, Interpinfo_enum what)
+{
+    ASSERT_ARGS(gc_inf_get_gc_info)
+    return 0;
+}
+
+
+/*
+
 =item C<void Parrot_gc_inf_init(PARROT_INTERP)>
 
 Initializes the infinite memory collector. Installs the necessary function
@@ -260,7 +628,38 @@
 
     interp->gc_sys->do_gc_mark         = gc_inf_mark_and_sweep;
     interp->gc_sys->finalize_gc_system = NULL;
-    interp->gc_sys->init_pool          = gc_inf_pool_init;
+
+    interp->gc_sys->do_gc_mark              = gc_inf_mark_and_sweep;
+    interp->gc_sys->compact_string_pool     = gc_inf_compact_memory_pool;
+
+    /*
+    interp->gc_sys->mark_special                = gc_inf_mark_special;
+    interp->gc_sys->pmc_needs_early_collection  = gc_inf_pmc_needs_early_collection;
+    */
+
+    interp->gc_sys->allocate_pmc_header     = gc_inf_allocate_pmc_header;
+    interp->gc_sys->free_pmc_header         = gc_inf_free_pmc_header;
+
+    interp->gc_sys->allocate_string_header  = gc_inf_allocate_string_header;
+    interp->gc_sys->free_string_header      = gc_inf_free_string_header;
+
+    interp->gc_sys->allocate_bufferlike_header  = gc_inf_allocate_bufferlike_header;
+    interp->gc_sys->free_bufferlike_header      = gc_inf_free_bufferlike_header;
+
+    interp->gc_sys->allocate_pmc_attributes = gc_inf_allocate_pmc_attributes;
+    interp->gc_sys->free_pmc_attributes     = gc_inf_free_pmc_attributes;
+
+    interp->gc_sys->allocate_string_storage = gc_inf_allocate_string_storage;
+    interp->gc_sys->reallocate_string_storage = gc_inf_reallocate_string_storage;
+
+    interp->gc_sys->allocate_buffer_storage = gc_inf_allocate_buffer_storage;
+    interp->gc_sys->reallocate_buffer_storage = gc_inf_reallocate_buffer_storage;
+
+    interp->gc_sys->allocate_fixed_size_storage = gc_inf_allocate_fixed_size_storage;
+    interp->gc_sys->free_fixed_size_storage     = gc_inf_free_fixed_size_storage;
+
+    interp->gc_sys->get_gc_info      = gc_inf_get_gc_info;
+
 }
 
 

Modified: branches/ops_pct/src/gc/gc_ms.c
==============================================================================
--- branches/ops_pct/src/gc/gc_ms.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/gc/gc_ms.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -17,89 +17,310 @@
 #include "parrot/parrot.h"
 #include "gc_private.h"
 
+PARROT_DOES_NOT_RETURN
+static void failed_allocation(unsigned int line, unsigned long size) /* HEADERIZER SKIP */
+{
+    fprintf(stderr, "Failed allocation of %lu bytes\n", size);
+    do_panic(NULL, "Out of mem", __FILE__, line);
+}
+
+#define PANIC_OUT_OF_MEM(size) failed_allocation(__LINE__, (size))
+
 /* HEADERIZER HFILE: src/gc/gc_private.h */
 
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
+static int gc_ms_active_sized_buffers(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
 static void gc_ms_add_free_object(SHIM_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
     ARGMOD(Fixed_Size_Pool *pool),
     ARGIN(void *to_add))
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*pool);
 
 static void gc_ms_alloc_objects(PARROT_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
     ARGMOD(Fixed_Size_Pool *pool))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*pool);
 
-static void gc_ms_finalize(PARROT_INTERP,
+static void gc_ms_allocate_buffer_storage(PARROT_INTERP,
+    ARGOUT(Buffer *buffer),
+    size_t size)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*buffer);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static Buffer * gc_ms_allocate_bufferlike_header(PARROT_INTERP, size_t size)
+        __attribute__nonnull__(1);
+
+static void * gc_ms_allocate_memory_chunk(PARROT_INTERP, size_t size)
+        __attribute__nonnull__(1);
+
+static void * gc_ms_allocate_memory_chunk_zeroed(PARROT_INTERP, size_t size)
+        __attribute__nonnull__(1);
+
+PARROT_CAN_RETURN_NULL
+static PMC* gc_ms_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)
+        __attribute__nonnull__(1);
+
+PARROT_CAN_RETURN_NULL
+static STRING* gc_ms_allocate_string_header(PARROT_INTERP, UINTVAL flags)
+        __attribute__nonnull__(1);
+
+static void gc_ms_block_GC_mark(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
+static void gc_ms_block_GC_sweep(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
+static void gc_ms_destroy_child_interp(
+    ARGMOD(Interp *dest_interp),
+    ARGIN(Interp *source_interp))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*dest_interp);
+
+static void gc_ms_finalize(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
+static void gc_ms_finalize_memory_pools(PARROT_INTERP,
     ARGIN(Memory_Pools * const mem_pools))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
+static void gc_ms_free_attributes_from_pool(PARROT_INTERP,
+    ARGMOD(PMC_Attribute_Pool *pool),
+    ARGMOD(void *data))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*pool)
+        FUNC_MODIFIES(*data);
+
+static void gc_ms_free_bufferlike_header(PARROT_INTERP,
+    ARGMOD(Buffer *obj),
+    size_t size)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*obj);
+
+static void gc_ms_free_memory_chunk(PARROT_INTERP, ARGFREE(void *data))
+        __attribute__nonnull__(1);
+
+static void gc_ms_free_pmc_header(PARROT_INTERP, ARGMOD(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*pmc);
+
+static void gc_ms_free_string_header(PARROT_INTERP, ARGMOD(STRING *s))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*s);
+
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 static void * gc_ms_get_free_object(PARROT_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
     ARGMOD(Fixed_Size_Pool *pool))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*pool);
 
+static size_t gc_ms_get_gc_info(PARROT_INTERP, Interpinfo_enum which)
+        __attribute__nonnull__(1);
+
+static unsigned int gc_ms_is_blocked_GC_mark(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
+static unsigned int gc_ms_is_blocked_GC_sweep(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
 static void gc_ms_mark_and_sweep(PARROT_INTERP, UINTVAL flags)
         __attribute__nonnull__(1);
 
+static void gc_ms_mark_special(PARROT_INTERP, ARGIN(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
 static void gc_ms_more_traceable_objects(PARROT_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
     ARGMOD(Fixed_Size_Pool *pool))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*pool);
 
 static void gc_ms_pool_init(SHIM_INTERP, ARGMOD(Fixed_Size_Pool *pool))
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*pool);
 
+static void gc_ms_reallocate_buffer_storage(PARROT_INTERP,
+    ARGMOD(Buffer *buffer),
+    size_t newsize)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*buffer);
+
+static void * gc_ms_reallocate_memory_chunk(PARROT_INTERP,
+    ARGFREE(void *from),
+    size_t size)
+        __attribute__nonnull__(1);
+
+static void * gc_ms_reallocate_memory_chunk_zeroed(PARROT_INTERP,
+    ARGFREE(void *data),
+    size_t newsize,
+    size_t oldsize)
+        __attribute__nonnull__(1);
+
+static void gc_ms_reallocate_string_storage(PARROT_INTERP,
+    ARGMOD(STRING *str),
+    size_t newsize)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*str);
+
 static int gc_ms_sweep_cb(PARROT_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
     ARGMOD(Fixed_Size_Pool *pool),
     int flag,
     ARGMOD(void *arg))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
-        __attribute__nonnull__(4)
+        __attribute__nonnull__(3)
+        __attribute__nonnull__(5)
         FUNC_MODIFIES(*pool)
         FUNC_MODIFIES(*arg);
 
+static int gc_ms_total_sized_buffers(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
 static int gc_ms_trace_active_PMCs(PARROT_INTERP,
     Parrot_gc_trace_type trace)
         __attribute__nonnull__(1);
 
+static void gc_ms_unblock_GC_mark(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
+static void gc_ms_unblock_GC_sweep(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_gc_ms_active_sized_buffers __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_gc_ms_add_free_object __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(pool) \
+       PARROT_ASSERT_ARG(mem_pools) \
+    , PARROT_ASSERT_ARG(pool) \
     , PARROT_ASSERT_ARG(to_add))
 #define ASSERT_ARGS_gc_ms_alloc_objects __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_gc_ms_allocate_buffer_storage __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(buffer))
+#define ASSERT_ARGS_gc_ms_allocate_bufferlike_header \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_allocate_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_allocate_memory_chunk_zeroed \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_allocate_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_allocate_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_block_GC_mark __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_block_GC_sweep __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_destroy_child_interp __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(dest_interp) \
+    , PARROT_ASSERT_ARG(source_interp))
 #define ASSERT_ARGS_gc_ms_finalize __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_finalize_memory_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(mem_pools))
+#define ASSERT_ARGS_gc_ms_free_attributes_from_pool \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pool) \
+    , PARROT_ASSERT_ARG(data))
+#define ASSERT_ARGS_gc_ms_free_bufferlike_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(obj))
+#define ASSERT_ARGS_gc_ms_free_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_free_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_gc_ms_free_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_gc_ms_get_free_object __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_gc_ms_get_gc_info __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_is_blocked_GC_mark __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_is_blocked_GC_sweep __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_gc_ms_mark_and_sweep __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_mark_special __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc))
 #define ASSERT_ARGS_gc_ms_more_traceable_objects __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_gc_ms_pool_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_gc_ms_reallocate_buffer_storage \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(buffer))
+#define ASSERT_ARGS_gc_ms_reallocate_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_reallocate_memory_chunk_zeroed \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_reallocate_string_storage \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(str))
 #define ASSERT_ARGS_gc_ms_sweep_cb __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(pool) \
     , PARROT_ASSERT_ARG(arg))
+#define ASSERT_ARGS_gc_ms_total_sized_buffers __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_gc_ms_trace_active_PMCs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_unblock_GC_mark __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_unblock_GC_sweep __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 */
 
@@ -125,14 +346,117 @@
 {
     ASSERT_ARGS(Parrot_gc_ms_init)
 
-    interp->gc_sys->do_gc_mark         = gc_ms_mark_and_sweep;
-    interp->gc_sys->finalize_gc_system = NULL;
-    interp->gc_sys->init_pool          = gc_ms_pool_init;
+    interp->mem_pools = mem_internal_allocate_zeroed_typed(Memory_Pools);
+    interp->mem_pools->num_sized          = 0;
+    interp->mem_pools->num_attribs        = 0;
+    interp->mem_pools->attrib_pools       = NULL;
+    interp->mem_pools->sized_header_pools = NULL;
+
+    interp->gc_sys->finalize_gc_system      = gc_ms_finalize;
+    interp->gc_sys->destroy_child_interp    = gc_ms_destroy_child_interp;
+    interp->gc_sys->init_pool               = gc_ms_pool_init;
+
+    interp->gc_sys->do_gc_mark              = gc_ms_mark_and_sweep;
+    interp->gc_sys->compact_string_pool     = gc_ms_compact_memory_pool;
+
+    interp->gc_sys->mark_special                = gc_ms_mark_special;
+    interp->gc_sys->pmc_needs_early_collection  = gc_ms_pmc_needs_early_collection;
+
+    interp->gc_sys->allocate_pmc_header     = gc_ms_allocate_pmc_header;
+    interp->gc_sys->free_pmc_header         = gc_ms_free_pmc_header;
+
+    interp->gc_sys->allocate_string_header  = gc_ms_allocate_string_header;
+    interp->gc_sys->free_string_header      = gc_ms_free_string_header;
+
+    interp->gc_sys->allocate_bufferlike_header  = gc_ms_allocate_bufferlike_header;
+    interp->gc_sys->free_bufferlike_header      = gc_ms_free_bufferlike_header;
+
+    interp->gc_sys->allocate_pmc_attributes = gc_ms_allocate_pmc_attributes;
+    interp->gc_sys->free_pmc_attributes     = gc_ms_free_pmc_attributes;
+
+    interp->gc_sys->allocate_string_storage = gc_ms_allocate_string_storage;
+    interp->gc_sys->reallocate_string_storage = gc_ms_reallocate_string_storage;
+
+    interp->gc_sys->allocate_buffer_storage = gc_ms_allocate_buffer_storage;
+    interp->gc_sys->reallocate_buffer_storage = gc_ms_reallocate_buffer_storage;
+
+    interp->gc_sys->allocate_fixed_size_storage = gc_ms_allocate_fixed_size_storage;
+    interp->gc_sys->free_fixed_size_storage     = gc_ms_free_fixed_size_storage;
+
+    /* We don't distinguish between chunk and chunk_with_pointers */
+    interp->gc_sys->allocate_memory_chunk   = gc_ms_allocate_memory_chunk;
+    interp->gc_sys->reallocate_memory_chunk = gc_ms_reallocate_memory_chunk;
+    interp->gc_sys->allocate_memory_chunk_with_interior_pointers
+                = gc_ms_allocate_memory_chunk_zeroed;
+    interp->gc_sys->reallocate_memory_chunk_with_interior_pointers
+                = gc_ms_reallocate_memory_chunk_zeroed;
+    interp->gc_sys->free_memory_chunk       = gc_ms_free_memory_chunk;
+
+    interp->gc_sys->block_mark      = gc_ms_block_GC_mark;
+    interp->gc_sys->unblock_mark    = gc_ms_unblock_GC_mark;
+    interp->gc_sys->is_blocked_mark = gc_ms_is_blocked_GC_mark;
+
+    interp->gc_sys->block_sweep      = gc_ms_block_GC_sweep;
+    interp->gc_sys->unblock_sweep    = gc_ms_unblock_GC_sweep;
+    interp->gc_sys->is_blocked_sweep = gc_ms_is_blocked_GC_sweep;
+
+    interp->gc_sys->get_gc_info      = gc_ms_get_gc_info;
+
+    initialize_var_size_pools(interp, interp->mem_pools);
+    initialize_fixed_size_pools(interp, interp->mem_pools);
+    Parrot_gc_initialize_fixed_size_pools(interp, interp->mem_pools,
+                                          GC_NUM_INITIAL_FIXED_SIZE_POOLS);
+}
+
+/*
+
+=item C<static void gc_ms_finalize(PARROT_INTERP)>
+
+Finalyze MS GC subsystem. Destroy everything.
+
+=cut
+
+*/
+static void
+gc_ms_finalize(PARROT_INTERP)
+{
+    ASSERT_ARGS(gc_ms_finalize)
+
+    /* buffer headers, PMCs */
+    Parrot_gc_destroy_header_pools(interp, interp->mem_pools);
 
+    /* memory pools in resources */
+    Parrot_gc_destroy_memory_pools(interp, interp->mem_pools);
+
+    /* mem subsystem is dead now */
+    mem_internal_free(interp->mem_pools);
+    interp->mem_pools = NULL;
 }
 
 /*
 
+=item C<static void gc_ms_destroy_child_interp(Interp *dest_interp, Interp
+*source_interp)>
+
+Merges the header pools of C<source_interp> into those of C<dest_interp>.
+(Used to deal with shared objects left after interpreter destruction.)
+
+=cut
+
+*/
+
+static void
+gc_ms_destroy_child_interp(ARGMOD(Interp *dest_interp),
+    ARGIN(Interp *source_interp))
+{
+    ASSERT_ARGS(gc_ms_destroy_child_interp)
+
+    Memory_Pools * const dest_arena   = dest_interp->mem_pools;
+    Memory_Pools * const source_arena = source_interp->mem_pools;
+    Parrot_gc_merge_memory_pools(dest_interp, dest_arena, source_arena);
+}
+/*
+
 =item C<static void gc_ms_mark_and_sweep(PARROT_INTERP, UINTVAL flags)>
 
 Runs the stop-the-world mark & sweep (MS) collector.
@@ -158,7 +482,7 @@
     }
 
     if (flags & GC_finish_FLAG) {
-        gc_ms_finalize(interp, mem_pools);
+        gc_ms_finalize_memory_pools(interp, mem_pools);
         return;
     }
 
@@ -167,7 +491,7 @@
 
     /* tell the threading system that we're doing GC mark */
     pt_gc_start_mark(interp);
-    Parrot_gc_run_init(interp);
+    Parrot_gc_run_init(interp, interp->mem_pools);
 
     /* compact STRING pools to collect free headers and allocated buffers */
     Parrot_gc_compact_memory_pool(interp);
@@ -182,7 +506,7 @@
 
         /* We've done the mark, now do the sweep. Pass the sweep callback
            function to the PMC pool and all the sized pools. */
-        header_pools_iterate_callback(interp, POOL_BUFFER | POOL_PMC,
+        header_pools_iterate_callback(interp, interp->mem_pools, POOL_BUFFER | POOL_PMC,
             (void*)&total_free, gc_ms_sweep_cb);
 
     }
@@ -197,25 +521,78 @@
     /* Note it */
     mem_pools->gc_mark_runs++;
     --mem_pools->gc_mark_block_level;
+    mem_pools->header_allocs_since_last_collect = 0;
 
     return;
 }
 
 /*
 
-=item C<static void gc_ms_finalize(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<void gc_ms_compact_memory_pool(PARROT_INTERP)>
 
-Perform the finalization run, freeing all PMCs.
+Scan the string pools and compact them. This does not perform a GC mark or
+sweep run, and does not check whether string buffers are still alive.
+Redirects to C<compact_pool>.
 
 =cut
 
 */
 
+void
+gc_ms_compact_memory_pool(PARROT_INTERP)
+{
+    ASSERT_ARGS(gc_ms_compact_memory_pool)
+    compact_pool(interp, interp->mem_pools, interp->mem_pools->memory_pool);
+}
+
+/*
+
+=item C<static void gc_ms_mark_special(PARROT_INTERP, PMC *pmc)>
+
+Mark PMC special.
+
+=cut
+*/
 static void
-gc_ms_finalize(PARROT_INTERP, ARGIN(Memory_Pools * const mem_pools))
+gc_ms_mark_special(PARROT_INTERP, ARGIN(PMC *pmc))
 {
-    ASSERT_ARGS(gc_ms_finalize)
+    ASSERT_ARGS(gc_ms_mark_special)
+    mark_special(interp, interp->mem_pools, pmc);
+}
+
+/*
+
+=item C<void gc_ms_pmc_needs_early_collection(PARROT_INTERP, PMC *pmc)>
+
+Mark a PMC as needing timely destruction
+
+=cut
+
+*/
+
+void
+gc_ms_pmc_needs_early_collection(PARROT_INTERP, ARGMOD(PMC *pmc))
+{
+    ASSERT_ARGS(gc_ms_pmc_needs_early_collection)
+    PObj_needs_early_gc_SET(pmc);
+    ++interp->mem_pools->num_early_gc_PMCs;
+}
+
+/*
+
+=item C<static void gc_ms_finalize_memory_pools(PARROT_INTERP, Memory_Pools *
+const mem_pools)>
+
+Perform the finalization run, freeing all PMCs in Memory_Pools.
+
+=cut
+
+*/
+
+static void
+gc_ms_finalize_memory_pools(PARROT_INTERP, ARGIN(Memory_Pools * const mem_pools))
+{
+    ASSERT_ARGS(gc_ms_finalize_memory_pools)
     Parrot_gc_clear_live_bits(interp, mem_pools->pmc_pool);
     Parrot_gc_clear_live_bits(interp, mem_pools->constant_pmc_pool);
 
@@ -224,12 +601,589 @@
     if (interp->scheduler) {
         Parrot_gc_mark_PMC_alive(interp, interp->scheduler);
         VTABLE_mark(interp, interp->scheduler);
-        Parrot_gc_sweep_pool(interp, interp->mem_pools->pmc_pool);
+        Parrot_gc_sweep_pool(interp, mem_pools, mem_pools->pmc_pool);
     }
 
     /* now sweep everything that's left */
-    Parrot_gc_sweep_pool(interp, interp->mem_pools->pmc_pool);
-    Parrot_gc_sweep_pool(interp, interp->mem_pools->constant_pmc_pool);
+    Parrot_gc_sweep_pool(interp, mem_pools, mem_pools->pmc_pool);
+    Parrot_gc_sweep_pool(interp, mem_pools, mem_pools->constant_pmc_pool);
+}
+
+/*
+
+=item C<static PMC* gc_ms_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)>
+
+Allocate new PMC header from pool.
+
+=cut
+
+*/
+PARROT_CAN_RETURN_NULL
+static PMC*
+gc_ms_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)
+{
+    ASSERT_ARGS(gc_ms_allocate_pmc_header)
+
+    Fixed_Size_Pool * const pool = flags & PObj_constant_FLAG
+            ? interp->mem_pools->constant_pmc_pool
+            : interp->mem_pools->pmc_pool;
+
+    return (PMC*)pool->get_free_object(interp, interp->mem_pools, pool);
+}
+
+/*
+
+=item C<static void gc_ms_free_pmc_header(PARROT_INTERP, PMC *pmc)>
+
+Return PMC header into pool.
+
+=cut
+
+*/
+static void
+gc_ms_free_pmc_header(PARROT_INTERP, ARGMOD(PMC *pmc))
+{
+    ASSERT_ARGS(gc_ms_free_pmc_header)
+    Fixed_Size_Pool * const pool = (PObj_constant_TEST(pmc)) ?
+        interp->mem_pools->constant_pmc_pool : interp->mem_pools->pmc_pool;
+
+    Parrot_pmc_destroy(interp, pmc);
+
+    PObj_flags_SETTO((PObj *)pmc, PObj_on_free_list_FLAG);
+    pool->add_free_object(interp, interp->mem_pools, pool, (PObj *)pmc);
+    pool->num_free_objects++;
+}
+
+/*
+
+=item C<static STRING* gc_ms_allocate_string_header(PARROT_INTERP, UINTVAL
+flags)>
+
+Allocate new STRING header from pool.
+
+=cut
+
+*/
+PARROT_CAN_RETURN_NULL
+static STRING*
+gc_ms_allocate_string_header(PARROT_INTERP, UINTVAL flags)
+{
+    ASSERT_ARGS(gc_ms_allocate_string_header)
+
+    Fixed_Size_Pool * const pool = flags & PObj_constant_FLAG
+            ? interp->mem_pools->constant_string_header_pool
+            : interp->mem_pools->string_header_pool;
+
+    return (STRING*)pool->get_free_object(interp, interp->mem_pools, pool);
+}
+
+
+/*
+
+=item C<static void gc_ms_free_string_header(PARROT_INTERP, STRING *s)>
+
+Return STRING header into pool.
+
+=cut
+
+*/
+static void
+gc_ms_free_string_header(PARROT_INTERP, ARGMOD(STRING *s))
+{
+    ASSERT_ARGS(gc_ms_free_string_header)
+    if (!PObj_constant_TEST(s)) {
+        Fixed_Size_Pool * const pool = interp->mem_pools->string_header_pool;
+        PObj_flags_SETTO((PObj *)s, PObj_on_free_list_FLAG);
+        pool->add_free_object(interp, interp->mem_pools, pool, s);
+        pool->num_free_objects++;
+    }
+}
+
+/*
+
+=item C<static Buffer * gc_ms_allocate_bufferlike_header(PARROT_INTERP, size_t
+size)>
+
+Returns a new buffer-like header from the appropriate sized pool.
+A "bufferlike object" is an object that is considered to be isomorphic to the
+PObj, so it will participate in normal GC. At the moment these are only used
+to create ListChunk objects in src/list.c.
+
+=cut
+
+*/
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static Buffer *
+gc_ms_allocate_bufferlike_header(PARROT_INTERP, size_t size)
+{
+    ASSERT_ARGS(gc_ms_allocate_bufferlike_header)
+
+    Fixed_Size_Pool * const pool = get_bufferlike_pool(interp, interp->mem_pools, size);
+
+    return (Buffer *)pool->get_free_object(interp, interp->mem_pools, pool);
+}
+
+/*
+
+=item C<static void gc_ms_free_bufferlike_header(PARROT_INTERP, Buffer *obj,
+size_t size)>
+
+Free a bufferlike header that is not being used, so that Parrot can recycle
+it and use it again.
+
+=cut
+
+*/
+
+static void
+gc_ms_free_bufferlike_header(PARROT_INTERP, ARGMOD(Buffer *obj),
+    size_t size)
+{
+    ASSERT_ARGS(gc_ms_free_bufferlike_header)
+    Fixed_Size_Pool * const pool = get_bufferlike_pool(interp, interp->mem_pools, size);
+    pool->add_free_object(interp, interp->mem_pools, pool, obj);
+}
+
+/*
+
+=item C<void * gc_ms_allocate_pmc_attributes(PARROT_INTERP, PMC *pmc)>
+
+Allocates a new attribute structure for a PMC if it has the auto_attrs flag
+set.
+
+=cut
+
+*/
+
+PARROT_CANNOT_RETURN_NULL
+void *
+gc_ms_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+{
+    ASSERT_ARGS(gc_ms_allocate_pmc_attributes)
+    const size_t attr_size = pmc->vtable->attr_size;
+#if GC_USE_FIXED_SIZE_ALLOCATOR
+    PMC_Attribute_Pool * const pool = Parrot_gc_get_attribute_pool(interp,
+            interp->mem_pools, attr_size);
+    void * const attrs = Parrot_gc_get_attributes_from_pool(interp, pool);
+    memset(attrs, 0, attr_size);
+    PMC_data(pmc) = attrs;
+    return attrs;
+#else
+    void * const data =  gc_ms_allocate_memory_chunk(attr_size);
+    PMC_data(pmc) = data;
+    return data;
+#endif
+}
+
+/*
+
+=item C<void gc_ms_free_pmc_attributes(PARROT_INTERP, PMC *pmc)>
+
+Deallocates an attibutes structure from a PMC if it has the auto_attrs
+flag set.
+
+*/
+
+void
+gc_ms_free_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+{
+    ASSERT_ARGS(gc_ms_free_pmc_attributes)
+    void * const data = PMC_data(pmc);
+
+    if (data) {
+
+#if GC_USE_FIXED_SIZE_ALLOCATOR
+        const size_t attr_size = pmc->vtable->attr_size;
+        const size_t item_size = attr_size < sizeof (void *) ? sizeof (void *) : attr_size;
+        PMC_Attribute_Pool ** const pools = interp->mem_pools->attrib_pools;
+        const size_t idx = item_size - sizeof (void *);
+        gc_ms_free_attributes_from_pool(interp, pools[idx], data);
+#else
+        gc_ms_free_memory_chunk(PMC_data(pmc));
+        PMC_data(pmc) = NULL;
+#endif
+    }
+}
+
+/*
+
+=item C<static void gc_ms_free_attributes_from_pool(PARROT_INTERP,
+PMC_Attribute_Pool *pool, void *data)>
+
+Frees a fixed-size data item back to the pool for later reallocation.  Private
+to this file.
+
+*/
+
+static void
+gc_ms_free_attributes_from_pool(PARROT_INTERP,
+    ARGMOD(PMC_Attribute_Pool *pool),
+    ARGMOD(void *data))
+{
+    ASSERT_ARGS(gc_ms_free_attributes_from_pool)
+    PMC_Attribute_Free_List * const item = (PMC_Attribute_Free_List *)data;
+
+    item->next      = pool->free_list;
+    pool->free_list = item;
+
+    pool->num_free_objects++;
+}
+
+/*
+
+=item C<static void gc_ms_allocate_buffer_storage(PARROT_INTERP, Buffer *buffer,
+size_t size)>
+
+Allocates a chunk of memory of at least size C<size> for the given Buffer.
+buffer is guaranteed to be properly aligned for things like C<FLOATVALS>,
+so the size may be rounded up or down to guarantee that this alignment holds.
+
+=cut
+
+*/
+
+static void
+gc_ms_allocate_buffer_storage(PARROT_INTERP,
+    ARGOUT(Buffer *buffer), size_t size)
+{
+    ASSERT_ARGS(gc_ms_allocate_buffer_storage)
+    size_t new_size;
+    char *mem;
+
+    Buffer_buflen(buffer) = 0;
+    Buffer_bufstart(buffer) = NULL;
+    new_size = aligned_string_size(size);
+    mem = (char *)mem_allocate(interp, interp->mem_pools, new_size,
+        interp->mem_pools->memory_pool);
+    mem = aligned_mem(buffer, mem);
+    Buffer_bufstart(buffer) = mem;
+    new_size -= sizeof (void*);
+    Buffer_buflen(buffer) = new_size;
+}
+
+/*
+
+=item C<static void gc_ms_reallocate_buffer_storage(PARROT_INTERP, Buffer
+*buffer, size_t newsize)>
+
+Reallocate the Buffer's buffer memory to the given size. The
+allocated buffer will not shrink. If the buffer was allocated with
+L<Parrot_allocate_aligned> the new buffer will also be aligned. As with
+all reallocation, the new buffer might have moved and the additional
+memory is not cleared.
+
+=cut
+
+*/
+
+static void
+gc_ms_reallocate_buffer_storage(PARROT_INTERP, ARGMOD(Buffer *buffer),
+    size_t newsize)
+{
+    ASSERT_ARGS(gc_ms_reallocate_buffer_storage)
+    size_t copysize;
+    char  *mem;
+    Variable_Size_Pool * const pool = interp->mem_pools->memory_pool;
+    size_t new_size, needed, old_size;
+
+    /*
+     * we don't shrink buffers
+     */
+    if (newsize <= Buffer_buflen(buffer))
+        return;
+
+    /*
+     * same as below but barely used and tested - only 3 list related
+     * tests do use true reallocation
+     *
+     * list.c, which does _reallocate, has 2 reallocations
+     * normally, which play ping pong with buffers.
+     * The normal case is therefore always to allocate a new block
+     */
+    new_size = aligned_string_size(newsize);
+    old_size = aligned_string_size(Buffer_buflen(buffer));
+    needed   = new_size - old_size;
+
+    if ((pool->top_block->free >= needed)
+    &&  (pool->top_block->top  == (char *)Buffer_bufstart(buffer) + old_size)) {
+        pool->top_block->free -= needed;
+        pool->top_block->top  += needed;
+        Buffer_buflen(buffer) = newsize;
+        return;
+    }
+
+    copysize = Buffer_buflen(buffer);
+
+    if (!PObj_COW_TEST(buffer))
+        pool->guaranteed_reclaimable += copysize;
+    else
+        pool->possibly_reclaimable   += copysize;
+
+    mem = (char *)mem_allocate(interp, interp->mem_pools, new_size, pool);
+    mem = aligned_mem(buffer, mem);
+
+    /* We shouldn't ever have a 0 from size, but we do. If we can track down
+     * those bugs, this can be removed which would make things cheaper */
+    if (copysize)
+        memcpy(mem, Buffer_bufstart(buffer), copysize);
+
+    Buffer_bufstart(buffer) = mem;
+
+    new_size -= sizeof (void *);
+
+    Buffer_buflen(buffer) = new_size;
+}
+
+/*
+
+=item C<void gc_ms_allocate_string_storage(PARROT_INTERP, STRING *str, size_t
+size)>
+
+Allocate the STRING's buffer memory to the given size. The allocated
+buffer maybe slightly bigger than the given C<size>. This function
+sets also C<< str->strstart >> to the new buffer location, C<< str->bufused >>
+is B<not> changed.
+
+=cut
+
+*/
+
+void
+gc_ms_allocate_string_storage(PARROT_INTERP, ARGOUT(STRING *str),
+    size_t size)
+{
+    ASSERT_ARGS(gc_ms_allocate_string_storage)
+    size_t       new_size;
+    Variable_Size_Pool *pool;
+    char        *mem;
+
+    Buffer_buflen(str)   = 0;
+    Buffer_bufstart(str) = NULL;
+
+    if (size == 0)
+        return;
+
+    pool     = PObj_constant_TEST(str)
+                ? interp->mem_pools->constant_string_pool
+                : interp->mem_pools->memory_pool;
+
+    new_size = aligned_string_size(size);
+    mem      = (char *)mem_allocate(interp, interp->mem_pools, new_size, pool);
+    mem     += sizeof (void*);
+
+    Buffer_bufstart(str) = str->strstart = mem;
+    Buffer_buflen(str)   = new_size - sizeof (void*);
+}
+
+/*
+
+=item C<static void gc_ms_reallocate_string_storage(PARROT_INTERP, STRING *str,
+size_t newsize)>
+
+Reallocate the STRING's buffer memory to the given size. The allocated
+buffer will not shrink. This function sets also C<str-E<gt>strstart> to the
+new buffer location, C<str-E<gt>bufused> is B<not> changed.
+
+=cut
+
+*/
+
+static void
+gc_ms_reallocate_string_storage(PARROT_INTERP, ARGMOD(STRING *str),
+    size_t newsize)
+{
+    ASSERT_ARGS(gc_ms_reallocate_string_storage)
+    size_t copysize;
+    char *mem, *oldmem;
+    size_t new_size, needed, old_size;
+
+    Variable_Size_Pool * const pool =
+        PObj_constant_TEST(str)
+            ? interp->mem_pools->constant_string_pool
+            : interp->mem_pools->memory_pool;
+
+    /* if the requested size is smaller then buflen, we are done */
+    if (newsize <= Buffer_buflen(str))
+        return;
+
+    /*
+     * first check, if we can reallocate:
+     * - if the passed strings buffer is the last string in the pool and
+     * - if there is enough size, we can just move the pool's top pointer
+     */
+    new_size = aligned_string_size(newsize);
+    old_size = aligned_string_size(Buffer_buflen(str));
+    needed   = new_size - old_size;
+
+    if (pool->top_block->free >= needed
+    &&  pool->top_block->top  == (char *)Buffer_bufstart(str) + old_size) {
+        pool->top_block->free -= needed;
+        pool->top_block->top  += needed;
+        Buffer_buflen(str) = new_size - sizeof (void*);
+        return;
+    }
+
+    PARROT_ASSERT(str->bufused <= newsize);
+
+    /* only copy used memory, not total string buffer */
+    copysize = str->bufused;
+
+    if (!PObj_COW_TEST(str))
+        pool->guaranteed_reclaimable += Buffer_buflen(str);
+    else
+        pool->possibly_reclaimable   += Buffer_buflen(str);
+
+    mem = (char *)mem_allocate(interp, interp->mem_pools, new_size, pool);
+    mem += sizeof (void *);
+
+    /* copy mem from strstart, *not* bufstart */
+    oldmem             = str->strstart;
+    Buffer_bufstart(str) = (void *)mem;
+    str->strstart      = mem;
+    Buffer_buflen(str)   = new_size - sizeof (void*);
+
+    /* We shouldn't ever have a 0 from size, but we do. If we can track down
+     * those bugs, this can be removed which would make things cheaper */
+    if (copysize)
+        memcpy(mem, oldmem, copysize);
+}
+
+/*
+
+=item C<void * gc_ms_allocate_fixed_size_storage(PARROT_INTERP, size_t size)>
+
+Allocates a fixed-size chunk of memory for use. This memory is not manually
+managed and needs to be freed with C<gc_ms_free_fixed_size_storage>
+
+*/
+
+PARROT_CANNOT_RETURN_NULL
+void *
+gc_ms_allocate_fixed_size_storage(PARROT_INTERP, size_t size)
+{
+    ASSERT_ARGS(gc_ms_allocate_fixed_size_storage)
+    PMC_Attribute_Pool *pool = NULL;
+    const size_t idx = (size < sizeof (void *)) ? 0 : (size - sizeof (void *));
+
+    /* get the pool directly, if possible, for great speed */
+    if (interp->mem_pools->num_attribs > idx)
+        pool = interp->mem_pools->attrib_pools[idx];
+
+    /* otherwise create it */
+    if (!pool)
+        pool = Parrot_gc_get_attribute_pool(interp, interp->mem_pools, size);
+
+    return Parrot_gc_get_attributes_from_pool(interp, pool);
+}
+
+/*
+
+=item C<void gc_ms_free_fixed_size_storage(PARROT_INTERP, size_t size, void
+*data)>
+
+Manually deallocates fixed size storage allocated with
+C<gc_ms_allocate_fixed_size_storage>
+
+*/
+
+void
+gc_ms_free_fixed_size_storage(PARROT_INTERP, size_t size, ARGMOD(void *data))
+{
+    ASSERT_ARGS(gc_ms_free_fixed_size_storage)
+
+    const size_t item_size = size < sizeof (void *) ? sizeof (void *) : size;
+    const size_t idx   = size - sizeof (void *);
+    PMC_Attribute_Pool ** const pools = interp->mem_pools->attrib_pools;
+    gc_ms_free_attributes_from_pool(interp, pools[idx], data);
+}
+
+/*
+
+=item C<static void * gc_ms_allocate_memory_chunk(PARROT_INTERP, size_t size)>
+
+=item C<static void * gc_ms_reallocate_memory_chunk(PARROT_INTERP, void *from,
+size_t size)>
+
+=item C<static void * gc_ms_allocate_memory_chunk_zeroed(PARROT_INTERP, size_t
+size)>
+
+=item C<static void * gc_ms_reallocate_memory_chunk_zeroed(PARROT_INTERP, void
+*data, size_t newsize, size_t oldsize)>
+
+=item C<static void gc_ms_free_memory_chunk(PARROT_INTERP, void *data)>
+
+TODO Write docu.
+
+*/
+
+static void *
+gc_ms_allocate_memory_chunk(PARROT_INTERP, size_t size)
+{
+    ASSERT_ARGS(gc_ms_allocate_memory_chunk)
+    void * const ptr = malloc(size);
+#ifdef DETAIL_MEMORY_DEBUG
+    fprintf(stderr, "Allocated %i at %p\n", size, ptr);
+#endif
+    if (!ptr)
+        PANIC_OUT_OF_MEM(size);
+    return ptr;
+}
+
+static void *
+gc_ms_reallocate_memory_chunk(PARROT_INTERP, ARGFREE(void *from), size_t size)
+{
+    ASSERT_ARGS(gc_ms_reallocate_memory_chunk)
+    void *ptr;
+#ifdef DETAIL_MEMORY_DEBUG
+    fprintf(stderr, "Freed %p (realloc -- %i bytes)\n", from, size);
+#endif
+    if (from)
+        ptr = realloc(from, size);
+    else
+        ptr = calloc(1, size);
+#ifdef DETAIL_MEMORY_DEBUG
+    fprintf(stderr, "Allocated %i at %p\n", size, ptr);
+#endif
+    if (!ptr)
+        PANIC_OUT_OF_MEM(size);
+    return ptr;
+}
+
+static void *
+gc_ms_allocate_memory_chunk_zeroed(PARROT_INTERP, size_t size)
+{
+    ASSERT_ARGS(gc_ms_allocate_memory_chunk_zeroed)
+    void * const ptr = calloc(1, (size_t)size);
+#ifdef DETAIL_MEMORY_DEBUG
+    fprintf(stderr, "Allocated %i at %p\n", size, ptr);
+#endif
+    if (!ptr)
+        PANIC_OUT_OF_MEM(size);
+    return ptr;
+}
+
+static void *
+gc_ms_reallocate_memory_chunk_zeroed(PARROT_INTERP, ARGFREE(void *data),
+        size_t newsize, size_t oldsize)
+{
+    ASSERT_ARGS(gc_ms_reallocate_memory_chunk_zeroed)
+    void * const ptr = realloc(data, newsize);
+    if (newsize > oldsize)
+        memset((char*)ptr + oldsize, 0, newsize - oldsize);
+    return ptr;
+}
+
+static void
+gc_ms_free_memory_chunk(PARROT_INTERP, ARGFREE(void *data))
+{
+    ASSERT_ARGS(gc_ms_free_memory_chunk)
+#ifdef DETAIL_MEMORY_DEBUG
+    fprintf(stderr, "Freed %p\n", data);
+#endif
+    if (data)
+        free(data);
 }
 
 
@@ -251,7 +1205,7 @@
 {
     ASSERT_ARGS(gc_ms_trace_active_PMCs)
 
-    if (!Parrot_gc_trace_root(interp, trace))
+    if (!Parrot_gc_trace_root(interp, interp->mem_pools, trace))
         return 0;
 
     pt_gc_mark_root_finished(interp);
@@ -262,8 +1216,8 @@
 
 /*
 
-=item C<static int gc_ms_sweep_cb(PARROT_INTERP, Fixed_Size_Pool *pool, int
-flag, void *arg)>
+=item C<static int gc_ms_sweep_cb(PARROT_INTERP, Memory_Pools *mem_pools,
+Fixed_Size_Pool *pool, int flag, void *arg)>
 
 Sweeps the given pool for the MS collector. This function also ends
 the profiling timer, if profiling is enabled. Returns the total number
@@ -274,13 +1228,15 @@
 */
 
 static int
-gc_ms_sweep_cb(PARROT_INTERP, ARGMOD(Fixed_Size_Pool *pool), int flag,
-    ARGMOD(void *arg))
+gc_ms_sweep_cb(PARROT_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool),
+        int flag, ARGMOD(void *arg))
 {
     ASSERT_ARGS(gc_ms_sweep_cb)
     int * const total_free = (int *) arg;
 
-    Parrot_gc_sweep_pool(interp, pool);
+    Parrot_gc_sweep_pool(interp, mem_pools, pool);
 
     *total_free += pool->num_free_objects;
 
@@ -317,8 +1273,8 @@
 
 /*
 
-=item C<static void gc_ms_more_traceable_objects(PARROT_INTERP, Fixed_Size_Pool
-*pool)>
+=item C<static void gc_ms_more_traceable_objects(PARROT_INTERP, Memory_Pools
+*mem_pools, Fixed_Size_Pool *pool)>
 
 We're out of traceable objects. First we try a GC run to free some up. If
 that doesn't work, allocate a new arena.
@@ -328,35 +1284,35 @@
 */
 
 static void
-gc_ms_more_traceable_objects(PARROT_INTERP, ARGMOD(Fixed_Size_Pool *pool))
+gc_ms_more_traceable_objects(PARROT_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool))
 {
     ASSERT_ARGS(gc_ms_more_traceable_objects)
 
     if (pool->skip == GC_ONE_SKIP)
         pool->skip = GC_NO_SKIP;
-    else if (pool->skip == GC_NO_SKIP) {
-        Fixed_Size_Arena * const arena = pool->last_Arena;
-        if (arena
-        &&  arena->used == arena->total_objects)
-                Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
-    }
+    else if (pool->skip == GC_NEVER_SKIP
+         || (pool->skip == GC_NO_SKIP
+         &&  mem_pools->header_allocs_since_last_collect >= GC_SIZE_THRESHOLD))
+            Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
 
     /* requires that num_free_objects be updated in Parrot_gc_mark_and_sweep.
        If gc is disabled, then we must check the free list directly. */
 #if GC_USE_LAZY_ALLOCATOR
     if ((!pool->free_list || pool->num_free_objects < pool->replenish_level)
         && !pool->newfree)
-        (*pool->alloc_objects) (interp, pool);
+        (*pool->alloc_objects) (interp, interp->mem_pools, pool);
 #else
     if (!pool->free_list || pool->num_free_objects < pool->replenish_level)
-    (*pool->alloc_objects) (interp, pool);
+    (*pool->alloc_objects) (interp, interp->mem_pools, pool);
 #endif
 }
 
 /*
 
-=item C<static void gc_ms_add_free_object(PARROT_INTERP, Fixed_Size_Pool *pool,
-void *to_add)>
+=item C<static void gc_ms_add_free_object(PARROT_INTERP, Memory_Pools
+*mem_pools, Fixed_Size_Pool *pool, void *to_add)>
 
 Add an unused object back to the pool's free list for later reuse. Set
 the PObj flags to indicate that the item is free.
@@ -366,8 +1322,10 @@
 */
 
 static void
-gc_ms_add_free_object(SHIM_INTERP, ARGMOD(Fixed_Size_Pool *pool),
-    ARGIN(void *to_add))
+gc_ms_add_free_object(SHIM_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool),
+        ARGIN(void *to_add))
 {
     ASSERT_ARGS(gc_ms_add_free_object)
     GC_MS_PObj_Wrapper *object = (GC_MS_PObj_Wrapper *)to_add;
@@ -380,8 +1338,8 @@
 
 /*
 
-=item C<static void * gc_ms_get_free_object(PARROT_INTERP, Fixed_Size_Pool
-*pool)>
+=item C<static void * gc_ms_get_free_object(PARROT_INTERP, Memory_Pools
+*mem_pools, Fixed_Size_Pool *pool)>
 
 Free object allocator for the MS garbage collector system. If there are no
 free objects, call C<gc_ms_add_free_object> to either free them up with a
@@ -395,7 +1353,9 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 static void *
-gc_ms_get_free_object(PARROT_INTERP, ARGMOD(Fixed_Size_Pool *pool))
+gc_ms_get_free_object(PARROT_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool))
 {
     ASSERT_ARGS(gc_ms_get_free_object)
     PObj *ptr;
@@ -403,7 +1363,7 @@
 
 #if GC_USE_LAZY_ALLOCATOR
     if (!free_list && !pool->newfree) {
-        (*pool->more_objects)(interp, pool);
+        (*pool->more_objects)(interp, mem_pools, pool);
         free_list = (PObj *)pool->free_list;
     }
 
@@ -425,7 +1385,7 @@
 #else
     /* if we don't have any objects */
     if (!free_list) {
-        (*pool->more_objects)(interp, pool);
+        (*pool->more_objects)(interp, mem_pools, pool);
         free_list = (PObj *)pool->free_list;
     }
 
@@ -444,7 +1404,8 @@
 
 /*
 
-=item C<static void gc_ms_alloc_objects(PARROT_INTERP, Fixed_Size_Pool *pool)>
+=item C<static void gc_ms_alloc_objects(PARROT_INTERP, Memory_Pools *mem_pools,
+Fixed_Size_Pool *pool)>
 
 New arena allocator function for the MS garbage collector system. Allocates
 and initializes a new memory arena in the given pool. Adds all the new
@@ -455,7 +1416,9 @@
 */
 
 static void
-gc_ms_alloc_objects(PARROT_INTERP, ARGMOD(Fixed_Size_Pool *pool))
+gc_ms_alloc_objects(PARROT_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool))
 {
     ASSERT_ARGS(gc_ms_alloc_objects)
     /* Setup memory for the new objects */
@@ -469,7 +1432,7 @@
     /* could be mem_internal_allocate too, but calloc is fast */
     new_arena->start_objects = mem_internal_allocate_zeroed(size);
 
-    Parrot_append_arena_in_pool(interp, pool, new_arena, size);
+    Parrot_append_arena_in_pool(interp, mem_pools, pool, new_arena, size);
 
     PARROT_ASSERT(pool->last_Arena);
 
@@ -494,6 +1457,189 @@
 
     if (alloc_size > POOL_MAX_BYTES)
         pool->objects_per_alloc = POOL_MAX_BYTES / pool->object_size;
+
+    if (alloc_size > GC_SIZE_THRESHOLD)
+        pool->skip = GC_NEVER_SKIP;
+}
+
+
+/*
+
+=item C<static void gc_ms_block_GC_mark(PARROT_INTERP)>
+
+Blocks the GC from performing its mark phase.
+
+=item C<static void gc_ms_unblock_GC_mark(PARROT_INTERP)>
+
+Unblocks the GC mark.
+
+=item C<static void gc_ms_block_GC_sweep(PARROT_INTERP)>
+
+Blocks the GC from performing its sweep phase.
+
+=item C<static void gc_ms_unblock_GC_sweep(PARROT_INTERP)>
+
+Unblocks GC sweep.
+
+=item C<static unsigned int gc_ms_is_blocked_GC_mark(PARROT_INTERP)>
+
+Determines if the GC mark is currently blocked.
+
+=item C<static unsigned int gc_ms_is_blocked_GC_sweep(PARROT_INTERP)>
+
+Determines if the GC sweep is currently blocked.
+
+=cut
+
+*/
+
+static void
+gc_ms_block_GC_mark(PARROT_INTERP)
+{
+    ASSERT_ARGS(gc_ms_block_GC_mark)
+    interp->mem_pools->gc_mark_block_level++;
+    Parrot_shared_gc_block(interp);
+}
+
+static void
+gc_ms_unblock_GC_mark(PARROT_INTERP)
+{
+    ASSERT_ARGS(gc_ms_unblock_GC_mark)
+    if (interp->mem_pools->gc_mark_block_level) {
+        interp->mem_pools->gc_mark_block_level--;
+        Parrot_shared_gc_unblock(interp);
+    }
+}
+
+static void
+gc_ms_block_GC_sweep(PARROT_INTERP)
+{
+    ASSERT_ARGS(gc_ms_block_GC_sweep)
+    interp->mem_pools->gc_sweep_block_level++;
+}
+
+static void
+gc_ms_unblock_GC_sweep(PARROT_INTERP)
+{
+    ASSERT_ARGS(gc_ms_unblock_GC_sweep)
+    if (interp->mem_pools->gc_sweep_block_level)
+        interp->mem_pools->gc_sweep_block_level--;
+}
+
+static unsigned int
+gc_ms_is_blocked_GC_mark(PARROT_INTERP)
+{
+    ASSERT_ARGS(gc_ms_is_blocked_GC_mark)
+    return interp->mem_pools->gc_mark_block_level;
+}
+
+static unsigned int
+gc_ms_is_blocked_GC_sweep(PARROT_INTERP)
+{
+    ASSERT_ARGS(gc_ms_is_blocked_GC_sweep)
+    return interp->mem_pools->gc_sweep_block_level;
+}
+
+/*
+
+=item C<static size_t gc_ms_get_gc_info(PARROT_INTERP, Interpinfo_enum which)>
+
+Get information about MS GC.
+
+=cut
+
+*/
+
+static size_t
+gc_ms_get_gc_info(PARROT_INTERP, Interpinfo_enum which)
+{
+    ASSERT_ARGS(gc_ms_get_gc_info)
+
+    Memory_Pools * const mem_pools = interp->mem_pools;
+    switch (which) {
+        case TOTAL_MEM_ALLOC:
+            return mem_pools->memory_allocated;
+        case GC_MARK_RUNS:
+            return mem_pools->gc_mark_runs;
+        case GC_COLLECT_RUNS:
+            return mem_pools->gc_collect_runs;
+        case ACTIVE_PMCS:
+            return mem_pools->pmc_pool->total_objects -
+                   mem_pools->pmc_pool->num_free_objects;
+        case ACTIVE_BUFFERS:
+            return gc_ms_active_sized_buffers(interp, mem_pools);
+        case TOTAL_PMCS:
+            return mem_pools->pmc_pool->total_objects;
+        case TOTAL_BUFFERS:
+            return gc_ms_total_sized_buffers(interp, mem_pools);
+        case HEADER_ALLOCS_SINCE_COLLECT:
+            return mem_pools->header_allocs_since_last_collect;
+        case MEM_ALLOCS_SINCE_COLLECT:
+            return mem_pools->mem_allocs_since_last_collect;
+        case TOTAL_COPIED:
+            return mem_pools->memory_collected;
+        case IMPATIENT_PMCS:
+            return mem_pools->num_early_gc_PMCs;
+        case GC_LAZY_MARK_RUNS:
+            return mem_pools->gc_lazy_mark_runs;
+        case EXTENDED_PMCS:
+        default:
+            break;
+    }
+    return 0;
+}
+
+/*
+
+=item C<static int gc_ms_active_sized_buffers(PARROT_INTERP, Memory_Pools *
+const mem_pools)>
+
+Returns the number of actively used sized buffers.
+
+=cut
+
+*/
+
+static int
+gc_ms_active_sized_buffers(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
+{
+    ASSERT_ARGS(gc_ms_active_sized_buffers)
+    int j, ret = 0;
+    for (j = 0; j < (INTVAL)mem_pools->num_sized; j++) {
+        Fixed_Size_Pool * const header_pool =
+            mem_pools->sized_header_pools[j];
+        if (header_pool)
+            ret += header_pool->total_objects -
+                header_pool->num_free_objects;
+    }
+    return ret;
+}
+
+/*
+
+=item C<static int gc_ms_total_sized_buffers(PARROT_INTERP, Memory_Pools * const
+mem_pools)>
+
+Returns the total number of sized buffers that we are managing.
+
+=cut
+
+*/
+
+static int
+gc_ms_total_sized_buffers(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
+{
+    ASSERT_ARGS(gc_ms_total_sized_buffers)
+    int j, ret = 0;
+    for (j = 0; j < (INTVAL)mem_pools->num_sized; j++) {
+        Fixed_Size_Pool * const header_pool =
+            mem_pools->sized_header_pools[j];
+        if (header_pool)
+            ret += header_pool->total_objects;
+    }
+    return ret;
 }
 
 /*

Modified: branches/ops_pct/src/gc/gc_private.h
==============================================================================
--- branches/ops_pct/src/gc/gc_private.h	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/gc/gc_private.h	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -45,6 +45,7 @@
 #define UNITS_PER_ALLOC_GROWTH_FACTOR          1.75
 
 #define POOL_MAX_BYTES                         65536 * 128
+#define GC_SIZE_THRESHOLD                      1024  * 1024
 
 #define PMC_HEADERS_PER_ALLOC     4096 * 10 / sizeof (PMC)
 #define BUFFER_HEADERS_PER_ALLOC  4096      / sizeof (Buffer)
@@ -91,7 +92,8 @@
 typedef enum _gc_skip_type_enum {
     GC_NO_SKIP = 0,
     GC_ONE_SKIP,
-    GC_ALWAYS_SKIP
+    GC_ALWAYS_SKIP,
+    GC_NEVER_SKIP
 } gc_skip_type_enum;
 
 typedef struct GC_Subsystem {
@@ -100,10 +102,57 @@
     gc_sys_type_enum sys_type;
 
     /** Function hooks that each subsystem MUST provide */
-    void (*do_gc_mark)(PARROT_INTERP, UINTVAL flags);
     void (*finalize_gc_system) (PARROT_INTERP);
+    void (*destroy_child_interp)(Interp *dest_interp, Interp *child_interp);
+
+    void (*do_gc_mark)(PARROT_INTERP, UINTVAL flags);
+    void (*compact_string_pool)(PARROT_INTERP);
+
+    void (*mark_special)(PARROT_INTERP, PMC *);
+    void (*pmc_needs_early_collection)(PARROT_INTERP, PMC *);
+
     void (*init_pool)(PARROT_INTERP, struct Fixed_Size_Pool *);
 
+    PMC* (*allocate_pmc_header)(PARROT_INTERP, UINTVAL flags);
+    void (*free_pmc_header)(PARROT_INTERP, PMC *);
+
+    STRING* (*allocate_string_header)(PARROT_INTERP, UINTVAL flags);
+    void (*free_string_header)(PARROT_INTERP, STRING*);
+
+    Buffer* (*allocate_bufferlike_header)(PARROT_INTERP, size_t size);
+    void (*free_bufferlike_header)(PARROT_INTERP, Buffer*, size_t size);
+
+    void* (*allocate_pmc_attributes)(PARROT_INTERP, PMC *);
+    void (*free_pmc_attributes)(PARROT_INTERP, PMC *);
+
+    void (*allocate_string_storage)(PARROT_INTERP, STRING *str, size_t size);
+    void (*reallocate_string_storage)(PARROT_INTERP, STRING *str, size_t size);
+
+    void (*allocate_buffer_storage)(PARROT_INTERP, ARGMOD(Buffer *buffer), size_t nsize);
+    void (*reallocate_buffer_storage)(PARROT_INTERP, ARGMOD(Buffer *buffer), size_t newsize);
+
+    void* (*allocate_fixed_size_storage)(PARROT_INTERP, size_t size);
+    void (*free_fixed_size_storage)(PARROT_INTERP, size_t size, void *);
+
+    void* (*allocate_memory_chunk)(PARROT_INTERP, size_t size);
+    void* (*reallocate_memory_chunk)(PARROT_INTERP, void *data, size_t newsize);
+    void* (*allocate_memory_chunk_with_interior_pointers)(PARROT_INTERP, size_t size);
+    void* (*reallocate_memory_chunk_with_interior_pointers)(PARROT_INTERP, void *data,
+            size_t oldsize, size_t newsize);
+    void (*free_memory_chunk)(PARROT_INTERP, void *data);
+
+    void (*block_mark)(PARROT_INTERP);
+    void (*unblock_mark)(PARROT_INTERP);
+    unsigned int (*is_blocked_mark)(PARROT_INTERP);
+
+    void (*block_sweep)(PARROT_INTERP);
+    void (*unblock_sweep)(PARROT_INTERP);
+    unsigned int (*is_blocked_sweep)(PARROT_INTERP);
+
+    /* Introspection. Each GC must provide this function. Even with fake data */
+    /* Return by value to simplify memory management */
+    size_t (*get_gc_info)(PARROT_INTERP, Interpinfo_enum);
+
     /*Function hooks that GC systems can CHOOSE to provide if they need them
      *These will be called via the GC API functions Parrot_gc_func_name
      *e.g. read barrier && write barrier hooks can go here later ...*/
@@ -126,7 +175,7 @@
 
 typedef struct Variable_Size_Pool {
     Memory_Block *top_block;
-    void (*compact)(PARROT_INTERP, struct Variable_Size_Pool *);
+    void (*compact)(PARROT_INTERP, struct Memory_Pools *const, struct Variable_Size_Pool *);
     size_t minimum_block_size;
     size_t total_allocated; /* total bytes allocated to this pool */
     size_t guaranteed_reclaimable;     /* bytes that can definitely be reclaimed*/
@@ -211,21 +260,20 @@
 } Fixed_Size_Pool;
 
 typedef struct Memory_Pools {
-    Variable_Size_Pool *memory_pool;
-    Variable_Size_Pool *constant_string_pool;
-    struct Fixed_Size_Pool *string_header_pool;
-    struct Fixed_Size_Pool *pmc_pool;
-    struct Fixed_Size_Pool *constant_pmc_pool;
-    struct Fixed_Size_Pool *constant_string_header_pool;
-    struct Fixed_Size_Pool **sized_header_pools;
-    size_t num_sized;
+    Variable_Size_Pool  *memory_pool;
+    Variable_Size_Pool  *constant_string_pool;
+    Fixed_Size_Pool     *string_header_pool;
+    Fixed_Size_Pool     *pmc_pool;
+    Fixed_Size_Pool     *constant_pmc_pool;
+    Fixed_Size_Pool     *constant_string_header_pool;
+    Fixed_Size_Pool    **sized_header_pools;
+    size_t               num_sized;
 
     PMC_Attribute_Pool **attrib_pools;
-    size_t num_attribs;
-
+    size_t               num_attribs;
 
     /** statistics for GC **/
-    size_t  gc_mark_runs;       /* Number of times we've done a mark run*/
+    size_t  gc_mark_runs;       /* Number of times we've done a mark run */
     size_t  gc_lazy_mark_runs;  /* Number of successful lazy mark runs */
     size_t  gc_collect_runs;    /* Number of times we've done a memory
                                    compaction */
@@ -233,7 +281,7 @@
                                                  * allocations from the
                                                  * system since the last
                                                  * compaction run */
-    size_t  header_allocs_since_last_collect;   /* The number of header
+    size_t  header_allocs_since_last_collect;   /* The size of header
                                                  * blocks allocated from
                                                  * the system since the last
                                                  * GC run */
@@ -247,33 +295,33 @@
                                      during collection */
     UINTVAL num_early_gc_PMCs;    /* how many PMCs want immediate destruction */
     UINTVAL num_early_PMCs_seen;  /* how many such PMCs has GC seen */
-    PMC* gc_mark_start;           /* first PMC marked during a GC run */
-    PMC* gc_mark_ptr;             /* last PMC marked during a GC run */
-    PMC* gc_trace_ptr;            /* last PMC trace_children was called on */
-    int lazy_gc;                  /* flag that indicates whether we should stop
+    PMC    *gc_mark_start;        /* first PMC marked during a GC run */
+    PMC    *gc_mark_ptr;          /* last PMC marked during a GC run */
+    PMC    *gc_trace_ptr;         /* last PMC trace_children was called on */
+    int     lazy_gc;              /* flag that indicates whether we should stop
                                      when we've seen all impatient PMCs */
-    /*
-     * GC blocking
-     */
+
+    /* GC blocking */
     UINTVAL gc_mark_block_level;  /* How many outstanding GC block
                                      requests are there? */
     UINTVAL gc_sweep_block_level; /* How many outstanding GC block
                                      requests are there? */
-    /*
-     * private data for the GC subsystem
-     */
-    void *  gc_private;           /* gc subsystem data */
-} Memory_Pools;
 
+    /* private data for the GC subsystem */
+    void *gc_private;           /* gc subsystem data */
+} Memory_Pools;
 
 /* HEADERIZER BEGIN: src/gc/system.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-void trace_system_areas(PARROT_INTERP)
-        __attribute__nonnull__(1);
+void trace_system_areas(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 #define ASSERT_ARGS_trace_system_areas __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: src/gc/system.c */
 
@@ -290,25 +338,35 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-Fixed_Size_Pool * get_bufferlike_pool(PARROT_INTERP, size_t buffer_size)
-        __attribute__nonnull__(1);
+Fixed_Size_Pool * get_bufferlike_pool(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
+    size_t buffer_size)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_IGNORABLE_RESULT
 int /*@alt void@*/
 header_pools_iterate_callback(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
     int flag,
     ARGIN_NULLOK(void *arg),
     NOTNULL(pool_iter_fn func))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(4);
-
-void initialize_fixed_size_pools(PARROT_INTERP)
-        __attribute__nonnull__(1);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(5);
 
-void mark_special(PARROT_INTERP, ARGIN(PMC *obj))
+void initialize_fixed_size_pools(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
+void mark_special(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
+    ARGIN(PMC *obj))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
 void Parrot_add_to_free_list(PARROT_INTERP,
     ARGMOD(Fixed_Size_Pool *pool),
     ARGMOD(Fixed_Size_Arena *arena))
@@ -319,12 +377,14 @@
         FUNC_MODIFIES(*arena);
 
 void Parrot_append_arena_in_pool(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
     ARGMOD(Fixed_Size_Pool *pool),
     ARGMOD(Fixed_Size_Arena *new_arena),
     size_t size)
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*pool)
         FUNC_MODIFIES(*new_arena);
 
@@ -335,8 +395,10 @@
 
 PARROT_CANNOT_RETURN_NULL
 PMC_Attribute_Pool * Parrot_gc_get_attribute_pool(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
     size_t attrib_size)
-        __attribute__nonnull__(1);
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_CANNOT_RETURN_NULL
 void * Parrot_gc_get_attributes_from_pool(PARROT_INTERP,
@@ -346,33 +408,47 @@
         FUNC_MODIFIES(* pool);
 
 void Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
     size_t init_num_pools)
-        __attribute__nonnull__(1);
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
-void Parrot_gc_run_init(PARROT_INTERP)
-        __attribute__nonnull__(1);
+void Parrot_gc_run_init(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
-void Parrot_gc_sweep_pool(PARROT_INTERP, ARGMOD(Fixed_Size_Pool *pool))
+void Parrot_gc_sweep_pool(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
+    ARGMOD(Fixed_Size_Pool *pool))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*pool);
 
-int Parrot_gc_trace_root(PARROT_INTERP, Parrot_gc_trace_type trace)
-        __attribute__nonnull__(1);
+int Parrot_gc_trace_root(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
+    Parrot_gc_trace_type trace)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 #define ASSERT_ARGS_contained_in_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pool) \
     , PARROT_ASSERT_ARG(ptr))
 #define ASSERT_ARGS_get_bufferlike_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_header_pools_iterate_callback __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(func))
 #define ASSERT_ARGS_initialize_fixed_size_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_mark_special __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(obj))
 #define ASSERT_ARGS_Parrot_add_to_free_list __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -380,52 +456,36 @@
     , PARROT_ASSERT_ARG(arena))
 #define ASSERT_ARGS_Parrot_append_arena_in_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(pool) \
     , PARROT_ASSERT_ARG(new_arena))
 #define ASSERT_ARGS_Parrot_gc_clear_live_bits __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_Parrot_gc_get_attribute_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_Parrot_gc_get_attributes_from_pool \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_Parrot_gc_initialize_fixed_size_pools \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_Parrot_gc_run_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_Parrot_gc_sweep_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_Parrot_gc_trace_root __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: src/gc/mark_sweep.c */
 
-/* HEADERIZER BEGIN: src/gc/pools.c */
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-Fixed_Size_Pool * get_bufferlike_pool(PARROT_INTERP, size_t buffer_size)
-        __attribute__nonnull__(1);
-
-PARROT_IGNORABLE_RESULT
-int /*@alt void@*/
-header_pools_iterate_callback(PARROT_INTERP,
-    int flag,
-    ARGIN_NULLOK(void *arg),
-    NOTNULL(pool_iter_fn func))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(4);
-
-void initialize_fixed_size_pools(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-/* HEADERIZER END: src/gc/pools.c */
 
 /* HEADERIZER BEGIN: src/gc/alloc_resources.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
@@ -436,11 +496,6 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-PARROT_PURE_FUNCTION
-PARROT_WARN_UNUSED_RESULT
-size_t aligned_size(ARGIN(const Buffer *buffer), size_t len)
-        __attribute__nonnull__(1);
-
 PARROT_CONST_FUNCTION
 PARROT_WARN_UNUSED_RESULT
 size_t aligned_string_size(size_t len);
@@ -453,21 +508,28 @@
         FUNC_MODIFIES(* pobj)
         FUNC_MODIFIES(* pool);
 
-void compact_pool(PARROT_INTERP, ARGMOD(Variable_Size_Pool *pool))
+void compact_pool(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
+    ARGMOD(Variable_Size_Pool *pool))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*pool);
 
-void initialize_var_size_pools(PARROT_INTERP)
-        __attribute__nonnull__(1);
+void initialize_var_size_pools(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 void * mem_allocate(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
     size_t size,
     ARGMOD(Variable_Size_Pool *pool))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(3)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*pool);
 
 void merge_pools(
@@ -478,26 +540,58 @@
         FUNC_MODIFIES(*dest)
         FUNC_MODIFIES(*source);
 
+void Parrot_gc_destroy_header_pools(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void Parrot_gc_destroy_memory_pools(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void Parrot_gc_merge_memory_pools(
+    ARGMOD(Interp *dest_interp),
+    ARGIN(Memory_Pools * const dest_arena),
+    ARGIN(Memory_Pools * const source_arena))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*dest_interp);
+
 #define ASSERT_ARGS_aligned_mem __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(buffer) \
     , PARROT_ASSERT_ARG(mem))
-#define ASSERT_ARGS_aligned_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(buffer))
 #define ASSERT_ARGS_aligned_string_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_check_buffer_ptr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(pobj) \
     , PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_compact_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_initialize_var_size_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_mem_allocate __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_merge_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(dest) \
     , PARROT_ASSERT_ARG(source))
+#define ASSERT_ARGS_Parrot_gc_destroy_header_pools \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
+#define ASSERT_ARGS_Parrot_gc_destroy_memory_pools \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
+#define ASSERT_ARGS_Parrot_gc_merge_memory_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(dest_interp) \
+    , PARROT_ASSERT_ARG(dest_arena) \
+    , PARROT_ASSERT_ARG(source_arena))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: src/gc/alloc_resources.c */
 
@@ -505,9 +599,67 @@
 /* HEADERIZER BEGIN: src/gc/gc_ms.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
+PARROT_CANNOT_RETURN_NULL
+void * gc_ms_allocate_fixed_size_storage(PARROT_INTERP, size_t size)
+        __attribute__nonnull__(1);
+
+PARROT_CANNOT_RETURN_NULL
+void * gc_ms_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*pmc);
+
+void gc_ms_allocate_string_storage(PARROT_INTERP,
+    ARGOUT(STRING *str),
+    size_t size)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*str);
+
+void gc_ms_compact_memory_pool(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
+void gc_ms_free_fixed_size_storage(PARROT_INTERP,
+    size_t size,
+    ARGMOD(void *data))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*data);
+
+void gc_ms_free_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*pmc);
+
+void gc_ms_pmc_needs_early_collection(PARROT_INTERP, ARGMOD(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*pmc);
+
 void Parrot_gc_ms_init(PARROT_INTERP)
         __attribute__nonnull__(1);
 
+#define ASSERT_ARGS_gc_ms_allocate_fixed_size_storage \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_allocate_pmc_attributes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_gc_ms_allocate_string_storage __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(str))
+#define ASSERT_ARGS_gc_ms_compact_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_free_fixed_size_storage __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(data))
+#define ASSERT_ARGS_gc_ms_free_pmc_attributes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_gc_ms_pmc_needs_early_collection \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc))
 #define ASSERT_ARGS_Parrot_gc_ms_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
@@ -526,8 +678,6 @@
 
 #endif /* PARROT_GC_PRIVATE_H_GUARD */
 
-
-
 /*
  * Local variables:
  *   c-file-style: "parrot"

Modified: branches/ops_pct/src/gc/mark_sweep.c
==============================================================================
--- branches/ops_pct/src/gc/mark_sweep.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/gc/mark_sweep.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -32,31 +32,31 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
 static void free_buffer(SHIM_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
     ARGMOD(Fixed_Size_Pool *pool),
     ARGMOD(Buffer *b))
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*pool)
         FUNC_MODIFIES(*b);
 
-static void free_buffer_malloc(SHIM_INTERP,
-    SHIM(Fixed_Size_Pool *pool),
-    ARGMOD(Buffer *b))
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*b);
-
 static void free_pmc_in_pool(PARROT_INTERP,
+    ARGIN(Memory_Pools *mem_pools),
     SHIM(Fixed_Size_Pool *pool),
     ARGMOD(PObj *p))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(3)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(4)
         FUNC_MODIFIES(*p);
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static Fixed_Size_Pool * new_bufferlike_pool(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
     size_t actual_buffer_size)
-        __attribute__nonnull__(1);
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
@@ -71,8 +71,11 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-static Fixed_Size_Pool * new_string_pool(PARROT_INTERP, INTVAL constant)
-        __attribute__nonnull__(1);
+static Fixed_Size_Pool * new_string_pool(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
+    INTVAL constant)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 static void Parrot_gc_allocate_new_attributes_arena(PARROT_INTERP,
     ARGMOD(PMC_Attribute_Pool *pool))
@@ -86,20 +89,22 @@
         __attribute__nonnull__(1);
 
 #define ASSERT_ARGS_free_buffer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(pool) \
+       PARROT_ASSERT_ARG(mem_pools) \
+    , PARROT_ASSERT_ARG(pool) \
     , PARROT_ASSERT_ARG(b))
-#define ASSERT_ARGS_free_buffer_malloc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(b))
 #define ASSERT_ARGS_free_pmc_in_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(p))
 #define ASSERT_ARGS_new_bufferlike_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_new_fixed_size_obj_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_new_pmc_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_new_string_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_Parrot_gc_allocate_new_attributes_arena \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -114,7 +119,7 @@
 
 /*
 
-=item C<void Parrot_gc_run_init(PARROT_INTERP)>
+=item C<void Parrot_gc_run_init(PARROT_INTERP, Memory_Pools * const mem_pools)>
 
 Prepares the collector for a mark & sweep GC run. Initializes the various
 fields in the Memory_Pools structure that need to be zeroed out prior to the
@@ -125,10 +130,10 @@
 */
 
 void
-Parrot_gc_run_init(PARROT_INTERP)
+Parrot_gc_run_init(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
 {
     ASSERT_ARGS(Parrot_gc_run_init)
-    Memory_Pools * const mem_pools       = interp->mem_pools;
 
     mem_pools->gc_trace_ptr        = NULL;
     mem_pools->gc_mark_start       = NULL;
@@ -137,7 +142,8 @@
 
 /*
 
-=item C<int Parrot_gc_trace_root(PARROT_INTERP, Parrot_gc_trace_type trace)>
+=item C<int Parrot_gc_trace_root(PARROT_INTERP, Memory_Pools * const mem_pools,
+Parrot_gc_trace_type trace)>
 
 Traces the root set with behavior that's dependent on the flags passed.
 Returns 0 if it's a lazy GC run and all objects that need timely destruction
@@ -166,17 +172,18 @@
 */
 
 int
-Parrot_gc_trace_root(PARROT_INTERP, Parrot_gc_trace_type trace)
+Parrot_gc_trace_root(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        Parrot_gc_trace_type trace)
 {
     ASSERT_ARGS(Parrot_gc_trace_root)
-    Memory_Pools  * const mem_pools = interp->mem_pools;
     PObj    *obj;
 
     /* note: adding locals here did cause increased GC runs */
     mark_context_start();
 
     if (trace == GC_TRACE_SYSTEM_ONLY) {
-        trace_system_areas(interp);
+        trace_system_areas(interp, mem_pools);
         return 0;
     }
 
@@ -235,7 +242,7 @@
     Parrot_IOData_mark(interp, interp->piodata);
 
     if (trace == GC_TRACE_FULL)
-        trace_system_areas(interp);
+        trace_system_areas(interp, mem_pools);
 
     /* quick check to see if we have already marked all impatient PMCs. If we
        have, return 0 and exit here. This will alert other parts of the GC
@@ -250,7 +257,8 @@
 
 /*
 
-=item C<void Parrot_gc_sweep_pool(PARROT_INTERP, Fixed_Size_Pool *pool)>
+=item C<void Parrot_gc_sweep_pool(PARROT_INTERP, Memory_Pools * const mem_pools,
+Fixed_Size_Pool *pool)>
 
 Puts any buffers/PMCs that are marked as "dead" or "black" onto the pool
 free list.
@@ -260,7 +268,9 @@
 */
 
 void
-Parrot_gc_sweep_pool(PARROT_INTERP, ARGMOD(Fixed_Size_Pool *pool))
+Parrot_gc_sweep_pool(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool))
 {
     ASSERT_ARGS(Parrot_gc_sweep_pool)
 
@@ -269,8 +279,6 @@
     gc_object_fn_type   gc_object   = pool->gc_object;
     UINTVAL             total_used  = 0;
     const UINTVAL       object_size = pool->object_size;
-    UINTVAL             i;
-
 
     /* Run through all the PObj header pools and mark */
     for (cur_arena = pool->last_Arena; cur_arena; cur_arena = cur_arena->prev) {
@@ -306,9 +314,9 @@
                 }
 
                 if (gc_object)
-                    gc_object(interp, pool, b);
+                    gc_object(interp, mem_pools, pool, b);
 
-                pool->add_free_object(interp, pool, b);
+                pool->add_free_object(interp, mem_pools, pool, b);
             }
 next:
             b = (PObj *)((char *)b + object_size);
@@ -353,7 +361,8 @@
 
 /*
 
-=item C<void mark_special(PARROT_INTERP, PMC *obj)>
+=item C<void mark_special(PARROT_INTERP, Memory_Pools * const mem_pools, PMC
+*obj)>
 
 Handles marking a PMC. Specifically, calls the VTABLE_mark for that PMC
 if one is present. Also handles marking shared PMCs.
@@ -363,7 +372,9 @@
 */
 
 void
-mark_special(PARROT_INTERP, ARGIN(PMC *obj))
+mark_special(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        ARGIN(PMC *obj))
 {
     ASSERT_ARGS(mark_special)
 
@@ -382,8 +393,8 @@
         interp = PMC_sync(obj)->owner;
         PARROT_ASSERT(interp);
 
-        if (!interp->mem_pools->gc_mark_ptr)
-            interp->mem_pools->gc_mark_ptr = obj;
+        if (!mem_pools->gc_mark_ptr)
+            mem_pools->gc_mark_ptr = obj;
     }
 
     PObj_get_FLAGS(obj) |= PObj_custom_GC_FLAG;
@@ -451,7 +462,6 @@
         ARGMOD(Fixed_Size_Arena *arena))
 {
     ASSERT_ARGS(Parrot_add_to_free_list)
-    UINTVAL  i;
     void    *object;
     const UINTVAL num_objects = pool->objects_per_alloc;
 
@@ -480,8 +490,8 @@
 
 /*
 
-=item C<void Parrot_append_arena_in_pool(PARROT_INTERP, Fixed_Size_Pool *pool,
-Fixed_Size_Arena *new_arena, size_t size)>
+=item C<void Parrot_append_arena_in_pool(PARROT_INTERP, Memory_Pools * const
+mem_pools, Fixed_Size_Pool *pool, Fixed_Size_Arena *new_arena, size_t size)>
 
 Insert the new arena into the pool's structure. Arenas are stored in a
 linked list, so add the new arena to the list. Set information in the
@@ -493,8 +503,9 @@
 
 void
 Parrot_append_arena_in_pool(PARROT_INTERP,
-    ARGMOD(Fixed_Size_Pool *pool),
-    ARGMOD(Fixed_Size_Arena *new_arena), size_t size)
+        ARGIN(Memory_Pools * const mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool),
+        ARGMOD(Fixed_Size_Arena *new_arena), size_t size)
 {
     ASSERT_ARGS(Parrot_append_arena_in_pool)
 
@@ -516,7 +527,7 @@
         new_arena->prev->next = new_arena;
 
     pool->last_Arena = new_arena;
-    interp->mem_pools->header_allocs_since_last_collect++;
+    mem_pools->header_allocs_since_last_collect += size;
 }
 
 /*
@@ -554,8 +565,8 @@
 
 /*
 
-=item C<static void free_pmc_in_pool(PARROT_INTERP, Fixed_Size_Pool *pool, PObj
-*p)>
+=item C<static void free_pmc_in_pool(PARROT_INTERP, Memory_Pools *mem_pools,
+Fixed_Size_Pool *pool, PObj *p)>
 
 Frees a PMC that is no longer being used. Calls a custom C<destroy> VTABLE
 method if one is available.
@@ -565,7 +576,9 @@
 */
 
 static void
-free_pmc_in_pool(PARROT_INTERP, SHIM(Fixed_Size_Pool *pool),
+free_pmc_in_pool(PARROT_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        SHIM(Fixed_Size_Pool *pool),
         ARGMOD(PObj *p))
 {
     ASSERT_ARGS(free_pmc_in_pool)
@@ -573,7 +586,6 @@
 
     /* TODO collect objects with finalizers */
     if (PObj_needs_early_gc_TEST(p)) {
-        Memory_Pools * const mem_pools = interp->mem_pools;
         --mem_pools->num_early_gc_PMCs;
     }
 
@@ -583,8 +595,8 @@
 
 /*
 
-=item C<static Fixed_Size_Pool * new_bufferlike_pool(PARROT_INTERP, size_t
-actual_buffer_size)>
+=item C<static Fixed_Size_Pool * new_bufferlike_pool(PARROT_INTERP, Memory_Pools
+* const mem_pools, size_t actual_buffer_size)>
 
 Creates a new pool for buffer-like structures. This is called from
 C<get_bufferlike_pool()>, and should probably not be called directly.
@@ -596,7 +608,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static Fixed_Size_Pool *
-new_bufferlike_pool(PARROT_INTERP, size_t actual_buffer_size)
+new_bufferlike_pool(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        size_t actual_buffer_size)
 {
     ASSERT_ARGS(new_bufferlike_pool)
     const int num_headers          = BUFFER_HEADERS_PER_ALLOC;
@@ -607,7 +621,7 @@
 
     pool->gc_object = (gc_object_fn_type)free_buffer;
 
-    pool->mem_pool  = interp->mem_pools->memory_pool;
+    pool->mem_pool  = mem_pools->memory_pool;
     (interp->gc_sys->init_pool)(interp, pool);
     return pool;
 }
@@ -649,8 +663,8 @@
 
 /*
 
-=item C<static Fixed_Size_Pool * new_string_pool(PARROT_INTERP, INTVAL
-constant)>
+=item C<static Fixed_Size_Pool * new_string_pool(PARROT_INTERP, Memory_Pools *
+const mem_pools, INTVAL constant)>
 
 Creates a new pool for C<STRING>s and returns it. This calls
 C<get_bufferlike_pool> internally, which in turn calls C<new_bufferlike_pool>.
@@ -662,17 +676,19 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static Fixed_Size_Pool *
-new_string_pool(PARROT_INTERP, INTVAL constant)
+new_string_pool(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        INTVAL constant)
 {
     ASSERT_ARGS(new_string_pool)
     Fixed_Size_Pool *pool;
     if (constant) {
-        pool           = new_bufferlike_pool(interp, sizeof (STRING));
+        pool           = new_bufferlike_pool(interp, mem_pools, sizeof (STRING));
         pool->gc_object = NULL;
-        pool->mem_pool = interp->mem_pools->constant_string_pool;
+        pool->mem_pool = mem_pools->constant_string_pool;
     }
     else
-        pool = get_bufferlike_pool(interp, sizeof (STRING));
+        pool = get_bufferlike_pool(interp, mem_pools, sizeof (STRING));
 
     pool->objects_per_alloc = STRING_HEADERS_PER_ALLOC;
 
@@ -681,44 +697,8 @@
 
 /*
 
-=item C<static void free_buffer_malloc(PARROT_INTERP, Fixed_Size_Pool *pool,
-Buffer *b)>
-
-Frees the given buffer, returning the storage space to the operating system
-and removing it from Parrot's memory management system. If the buffer is COW,
-The buffer is not freed if the reference count is greater then 1.
-
-=cut
-
-*/
-
-static void
-free_buffer_malloc(SHIM_INTERP, SHIM(Fixed_Size_Pool *pool),
-        ARGMOD(Buffer *b))
-{
-    ASSERT_ARGS(free_buffer_malloc)
-    /* free allocated space at (int *)bufstart - 1, but not if it used COW or is
-     * external */
-    Buffer_buflen(b) = 0;
-
-    if (!Buffer_bufstart(b) || PObj_is_external_or_free_TESTALL(b))
-        return;
-
-    if (PObj_COW_TEST(b)) {
-        INTVAL * const refcount = Buffer_bufrefcountptr(b);
-
-        if (--(*refcount) == 0) {
-            mem_sys_free(refcount); /* the actual bufstart */
-        }
-    }
-    else
-        mem_sys_free(Buffer_bufrefcountptr(b));
-}
-
-/*
-
-=item C<static void free_buffer(PARROT_INTERP, Fixed_Size_Pool *pool, Buffer
-*b)>
+=item C<static void free_buffer(PARROT_INTERP, Memory_Pools *mem_pools,
+Fixed_Size_Pool *pool, Buffer *b)>
 
 Frees a buffer, returning it to the memory pool for Parrot to possibly
 reuse later.
@@ -728,7 +708,10 @@
 */
 
 static void
-free_buffer(SHIM_INTERP, ARGMOD(Fixed_Size_Pool *pool), ARGMOD(Buffer *b))
+free_buffer(SHIM_INTERP,
+        ARGIN(Memory_Pools *mem_pools),
+        ARGMOD(Fixed_Size_Pool *pool),
+        ARGMOD(Buffer *b))
 {
     ASSERT_ARGS(free_buffer)
     Variable_Size_Pool * const mem_pool = (Variable_Size_Pool *)pool->mem_pool;
@@ -748,8 +731,8 @@
 
 /*
 
-=item C<Fixed_Size_Pool * get_bufferlike_pool(PARROT_INTERP, size_t
-buffer_size)>
+=item C<Fixed_Size_Pool * get_bufferlike_pool(PARROT_INTERP, Memory_Pools *
+const mem_pools, size_t buffer_size)>
 
 Makes and return a bufferlike header pool for objects of a given size. If a
 pool for objects of that size already exists, no new pool will be created and
@@ -762,11 +745,13 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 Fixed_Size_Pool *
-get_bufferlike_pool(PARROT_INTERP, size_t buffer_size)
+get_bufferlike_pool(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        size_t buffer_size)
 {
     ASSERT_ARGS(get_bufferlike_pool)
-    Fixed_Size_Pool **sized_pools = interp->mem_pools->sized_header_pools;
-    const UINTVAL       num_old     = interp->mem_pools->num_sized;
+    Fixed_Size_Pool **sized_pools   = mem_pools->sized_header_pools;
+    const UINTVAL       num_old     = mem_pools->num_sized;
     const UINTVAL       idx         = GET_SIZED_POOL_IDX(buffer_size);
 
     /* Expands the array of sized resource pools, if necessary */
@@ -780,19 +765,20 @@
                                            num_new * sizeof (void *));
         memset(sized_pools + num_old, 0, sizeof (void *) * (num_new - num_old));
 
-        interp->mem_pools->sized_header_pools = sized_pools;
-        interp->mem_pools->num_sized = num_new;
+        mem_pools->sized_header_pools = sized_pools;
+        mem_pools->num_sized = num_new;
     }
 
     if (sized_pools[idx] == NULL)
-        sized_pools[idx] = new_bufferlike_pool(interp, buffer_size);
+        sized_pools[idx] = new_bufferlike_pool(interp, mem_pools, buffer_size);
 
     return sized_pools[idx];
 }
 
 /*
 
-=item C<void initialize_fixed_size_pools(PARROT_INTERP)>
+=item C<void initialize_fixed_size_pools(PARROT_INTERP, Memory_Pools * const
+mem_pools)>
 
 The initialization routine for the interpreter's header pools. Initializes
 pools for string headers, constant string headers, buffers, PMCs and
@@ -806,13 +792,13 @@
 */
 
 void
-initialize_fixed_size_pools(PARROT_INTERP)
+initialize_fixed_size_pools(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
 {
     ASSERT_ARGS(initialize_fixed_size_pools)
-    Memory_Pools * const mem_pools                     = interp->mem_pools;
 
     /* Init the constant string header pool */
-    mem_pools->constant_string_header_pool       = new_string_pool(interp, 1);
+    mem_pools->constant_string_header_pool       = new_string_pool(interp, mem_pools, 1);
     mem_pools->constant_string_header_pool->name = "constant_string_header";
     mem_pools->constant_string_header_pool->skip = GC_ALWAYS_SKIP;
 
@@ -823,7 +809,7 @@
      * new_*_header */
 
     /* Init the string header pool */
-    mem_pools->string_header_pool       = new_string_pool(interp, 0);
+    mem_pools->string_header_pool       = new_string_pool(interp, mem_pools, 0);
     mem_pools->string_header_pool->name = "string_header";
 
     /* Init the PMC header pool */
@@ -841,8 +827,8 @@
 
 /*
 
-=item C<int header_pools_iterate_callback(PARROT_INTERP, int flag, void *arg,
-pool_iter_fn func)>
+=item C<int header_pools_iterate_callback(PARROT_INTERP, Memory_Pools * const
+mem_pools, int flag, void *arg, pool_iter_fn func)>
 
 Iterates through header pools, invoking the given callback function on each
 pool in the list matching the given criteria. Determines which pools to iterate
@@ -881,18 +867,19 @@
 
 PARROT_IGNORABLE_RESULT
 int
-header_pools_iterate_callback(PARROT_INTERP, int flag, ARGIN_NULLOK(void *arg),
+header_pools_iterate_callback(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        int flag, ARGIN_NULLOK(void *arg),
         NOTNULL(pool_iter_fn func))
 {
     ASSERT_ARGS(header_pools_iterate_callback)
-    Memory_Pools * const mem_pools = interp->mem_pools;
 
     if (flag & POOL_PMC) {
         Fixed_Size_Pool *pool = flag & POOL_CONST
             ? mem_pools->constant_pmc_pool
             : mem_pools->pmc_pool;
 
-        const int ret_val = (func)(interp, pool,
+        const int ret_val = (func)(interp, mem_pools, pool,
             flag & (POOL_PMC | POOL_CONST) , arg);
 
         if (ret_val)
@@ -903,7 +890,7 @@
         INTVAL i;
 
         if (flag & POOL_CONST) {
-            const int ret_val = (func)(interp,
+            const int ret_val = (func)(interp, mem_pools,
                 mem_pools->constant_string_header_pool,
                 POOL_BUFFER | POOL_CONST, arg);
 
@@ -911,11 +898,11 @@
                 return ret_val;
         }
 
-        for (i = interp->mem_pools->num_sized - 1; i >= 0; --i) {
+        for (i = mem_pools->num_sized - 1; i >= 0; --i) {
             Fixed_Size_Pool * const pool = mem_pools->sized_header_pools[i];
 
             if (pool) {
-                const int ret_val = (func)(interp, pool, POOL_BUFFER, arg);
+                const int ret_val = (func)(interp, mem_pools, pool, POOL_BUFFER, arg);
                 if (ret_val)
                     return ret_val;
             }
@@ -940,13 +927,13 @@
 
 Allocate a new arena of fixed-sized data structures for the given pool.
 
-=item C<void Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP, size_t
-init_num_pools)>
+=item C<void Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP, Memory_Pools *
+const mem_pools, size_t init_num_pools)>
 
 Initialize the pools (zeroize)
 
-=item C<PMC_Attribute_Pool * Parrot_gc_get_attribute_pool(PARROT_INTERP, size_t
-attrib_size)>
+=item C<PMC_Attribute_Pool * Parrot_gc_get_attribute_pool(PARROT_INTERP,
+Memory_Pools * const mem_pools, size_t attrib_size)>
 
 Find a fixed-sized data structure pool given the size of the object to
 allocate. If the pool does not exist, create it.
@@ -1001,9 +988,8 @@
 Parrot_gc_allocate_new_attributes_arena(PARROT_INTERP, ARGMOD(PMC_Attribute_Pool *pool))
 {
     ASSERT_ARGS(Parrot_gc_allocate_new_attributes_arena)
-    PMC_Attribute_Free_List *list, *next, *first;
+    PMC_Attribute_Free_List *next;
 
-    size_t       i;
     const size_t num_items  = pool->objects_per_alloc;
     const size_t item_size  = pool->attr_size;
     const size_t item_space = item_size * num_items;
@@ -1035,10 +1021,11 @@
 }
 
 void
-Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP, size_t init_num_pools)
+Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        size_t init_num_pools)
 {
     ASSERT_ARGS(Parrot_gc_initialize_fixed_size_pools)
-    Memory_Pools       * const mem_pools = interp->mem_pools;
     PMC_Attribute_Pool **pools;
     const size_t total_size = (init_num_pools + 1) * sizeof (void *);
 
@@ -1052,11 +1039,12 @@
 
 PARROT_CANNOT_RETURN_NULL
 PMC_Attribute_Pool *
-Parrot_gc_get_attribute_pool(PARROT_INTERP, size_t attrib_size)
+Parrot_gc_get_attribute_pool(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        size_t attrib_size)
 {
     ASSERT_ARGS(Parrot_gc_get_attribute_pool)
 
-    Memory_Pools       * const mem_pools = interp->mem_pools;
     PMC_Attribute_Pool **pools = mem_pools->attrib_pools;
     const size_t         idx   = (attrib_size < sizeof (void *))
                                ? 0

Modified: branches/ops_pct/src/gc/system.c
==============================================================================
--- branches/ops_pct/src/gc/system.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/gc/system.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -39,65 +39,91 @@
         __attribute__nonnull__(1);
 
 PARROT_WARN_UNUSED_RESULT
-static size_t get_max_buffer_address(PARROT_INTERP)
-        __attribute__nonnull__(1);
+static size_t get_max_buffer_address(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
-static size_t get_max_pmc_address(PARROT_INTERP)
-        __attribute__nonnull__(1);
+static size_t get_max_pmc_address(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
-static size_t get_min_buffer_address(PARROT_INTERP)
-        __attribute__nonnull__(1);
+static size_t get_min_buffer_address(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
-static size_t get_min_pmc_address(PARROT_INTERP)
-        __attribute__nonnull__(1);
+static size_t get_min_pmc_address(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
-static int is_buffer_ptr(PARROT_INTERP, ARGIN(const void *ptr))
+static int is_buffer_ptr(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
+    ARGIN(const void *ptr))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 PARROT_WARN_UNUSED_RESULT
-static int is_pmc_ptr(PARROT_INTERP, ARGIN(const void *ptr))
+static int is_pmc_ptr(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
+    ARGIN(const void *ptr))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 static void trace_mem_block(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools),
     size_t lo_var_ptr,
     size_t hi_var_ptr)
-        __attribute__nonnull__(1);
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
-static void trace_system_stack(PARROT_INTERP)
-        __attribute__nonnull__(1);
+static void trace_system_stack(PARROT_INTERP,
+    ARGIN(Memory_Pools * const mem_pools))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 #define ASSERT_ARGS_find_common_mask __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_get_max_buffer_address __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_get_max_pmc_address __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_get_min_buffer_address __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_get_min_pmc_address __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_is_buffer_ptr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(ptr))
 #define ASSERT_ARGS_is_pmc_ptr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools) \
     , PARROT_ASSERT_ARG(ptr))
 #define ASSERT_ARGS_trace_mem_block __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 #define ASSERT_ARGS_trace_system_stack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(mem_pools))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
 /*
 
-=item C<void trace_system_areas(PARROT_INTERP)>
+=item C<void trace_system_areas(PARROT_INTERP, Memory_Pools * const mem_pools)>
 
 Initiates a trace of the system stack, looking for pointers which are being
 used by functions in the call chain, but which might not be marked as alive
@@ -110,7 +136,8 @@
 */
 
 void
-trace_system_areas(PARROT_INTERP)
+trace_system_areas(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
 {
     ASSERT_ARGS(trace_system_areas)
     {
@@ -213,12 +240,13 @@
 
     /* With the processor context accounted for above, we can trace the
        system stack here. */
-    trace_system_stack(interp);
+    trace_system_stack(interp, mem_pools);
 }
 
 /*
 
-=item C<static void trace_system_stack(PARROT_INTERP)>
+=item C<static void trace_system_stack(PARROT_INTERP, Memory_Pools * const
+mem_pools)>
 
 Traces the memory block starting at C<< interp->lo_var_ptr >>. This should be
 the address of a local variable which has been created on the stack early in
@@ -230,7 +258,8 @@
 */
 
 static void
-trace_system_stack(PARROT_INTERP)
+trace_system_stack(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
 {
     ASSERT_ARGS(trace_system_stack)
     /* Create a local variable on the system stack. This represents the
@@ -240,13 +269,14 @@
     const size_t lo_var_ptr = (size_t)interp->lo_var_ptr;
     PARROT_ASSERT(lo_var_ptr);
 
-    trace_mem_block(interp, (size_t)lo_var_ptr,
+    trace_mem_block(interp, mem_pools, (size_t)lo_var_ptr,
             (size_t)&lo_var_ptr);
 }
 
 /*
 
-=item C<static size_t get_max_buffer_address(PARROT_INTERP)>
+=item C<static size_t get_max_buffer_address(PARROT_INTERP, Memory_Pools * const
+mem_pools)>
 
 Calculates the maximum buffer address and returns it. This is done by looping
 through all the sized pools, and finding the pool whose C<end_arena_memory>
@@ -260,10 +290,10 @@
 
 PARROT_WARN_UNUSED_RESULT
 static size_t
-get_max_buffer_address(PARROT_INTERP)
+get_max_buffer_address(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
 {
     ASSERT_ARGS(get_max_buffer_address)
-    Memory_Pools * const mem_pools = interp->mem_pools;
     size_t         max        = 0;
     UINTVAL        i;
 
@@ -280,7 +310,8 @@
 
 /*
 
-=item C<static size_t get_min_buffer_address(PARROT_INTERP)>
+=item C<static size_t get_min_buffer_address(PARROT_INTERP, Memory_Pools * const
+mem_pools)>
 
 Calculates the minimum buffer address and returns it. Loops through all sized
 pools, and finds the one with the smallest C<start_arena_memory> field. Notice
@@ -295,10 +326,10 @@
 
 PARROT_WARN_UNUSED_RESULT
 static size_t
-get_min_buffer_address(PARROT_INTERP)
+get_min_buffer_address(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
 {
     ASSERT_ARGS(get_min_buffer_address)
-    Memory_Pools * const mem_pools = interp->mem_pools;
     size_t         min        = (size_t) -1;
     UINTVAL        i;
 
@@ -316,7 +347,8 @@
 
 /*
 
-=item C<static size_t get_max_pmc_address(PARROT_INTERP)>
+=item C<static size_t get_max_pmc_address(PARROT_INTERP, Memory_Pools * const
+mem_pools)>
 
 Returns the maximum memory address used by the C<pmc_pool>.
 
@@ -326,16 +358,18 @@
 
 PARROT_WARN_UNUSED_RESULT
 static size_t
-get_max_pmc_address(PARROT_INTERP)
+get_max_pmc_address(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
 {
     ASSERT_ARGS(get_max_pmc_address)
-    return interp->mem_pools->pmc_pool->end_arena_memory;
+    return mem_pools->pmc_pool->end_arena_memory;
 }
 
 
 /*
 
-=item C<static size_t get_min_pmc_address(PARROT_INTERP)>
+=item C<static size_t get_min_pmc_address(PARROT_INTERP, Memory_Pools * const
+mem_pools)>
 
 Returns the minimum memory address used by the C<pmc_pool>. Notice that the
 memory region between C<get_min_pmc_address> and C<get_max_pmc_address> may be
@@ -347,10 +381,11 @@
 
 PARROT_WARN_UNUSED_RESULT
 static size_t
-get_min_pmc_address(PARROT_INTERP)
+get_min_pmc_address(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools))
 {
     ASSERT_ARGS(get_min_pmc_address)
-    return interp->mem_pools->pmc_pool->start_arena_memory;
+    return mem_pools->pmc_pool->start_arena_memory;
 }
 
 
@@ -397,8 +432,8 @@
 
 /*
 
-=item C<static void trace_mem_block(PARROT_INTERP, size_t lo_var_ptr, size_t
-hi_var_ptr)>
+=item C<static void trace_mem_block(PARROT_INTERP, Memory_Pools * const
+mem_pools, size_t lo_var_ptr, size_t hi_var_ptr)>
 
 Traces the memory block between C<lo_var_ptr> and C<hi_var_ptr>.
 Attempt to find pointers to PObjs or buffers, and mark them as "alive"
@@ -410,16 +445,18 @@
 */
 
 static void
-trace_mem_block(PARROT_INTERP, size_t lo_var_ptr, size_t hi_var_ptr)
+trace_mem_block(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        size_t lo_var_ptr, size_t hi_var_ptr)
 {
     ASSERT_ARGS(trace_mem_block)
     size_t    prefix;
     ptrdiff_t cur_var_ptr;
 
-    const size_t buffer_min = get_min_buffer_address(interp);
-    const size_t buffer_max = get_max_buffer_address(interp);
-    const size_t pmc_min    = get_min_pmc_address(interp);
-    const size_t pmc_max    = get_max_pmc_address(interp);
+    const size_t buffer_min = get_min_buffer_address(interp, mem_pools);
+    const size_t buffer_max = get_max_buffer_address(interp, mem_pools);
+    const size_t pmc_min    = get_min_pmc_address(interp, mem_pools);
+    const size_t pmc_max    = get_max_pmc_address(interp, mem_pools);
 
     const size_t mask       =
         find_common_mask(interp,
@@ -450,11 +487,11 @@
              * had their bufstart/vtable destroyed due to the linked list of
              * free headers... */
             if (pmc_min <= ptr && ptr < pmc_max &&
-                    is_pmc_ptr(interp, (void *)ptr)) {
+                    is_pmc_ptr(interp, mem_pools, (void *)ptr)) {
                 Parrot_gc_mark_PObj_alive(interp, (PObj *)ptr);
             }
             else if (buffer_min <= ptr && ptr < buffer_max &&
-                    is_buffer_ptr(interp, (void *)ptr)) {
+                    is_buffer_ptr(interp, mem_pools, (void *)ptr)) {
                 /* ...and since Parrot_gc_mark_PObj_alive doesn't care about bufstart, it
                  * doesn't really matter if it sets a flag */
                 Parrot_gc_mark_PObj_alive(interp, (PObj *)ptr);
@@ -467,7 +504,8 @@
 
 /*
 
-=item C<static int is_buffer_ptr(PARROT_INTERP, const void *ptr)>
+=item C<static int is_buffer_ptr(PARROT_INTERP, Memory_Pools * const mem_pools,
+const void *ptr)>
 
 Checks whether the given C<ptr> is located within one of the sized
 header pools. Returns C<1> if it is, and C<0> if not.
@@ -478,10 +516,11 @@
 
 PARROT_WARN_UNUSED_RESULT
 static int
-is_buffer_ptr(PARROT_INTERP, ARGIN(const void *ptr))
+is_buffer_ptr(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        ARGIN(const void *ptr))
 {
     ASSERT_ARGS(is_buffer_ptr)
-    Memory_Pools * const mem_pools = interp->mem_pools;
     UINTVAL        i;
 
     for (i = 0; i < mem_pools->num_sized; i++) {
@@ -495,7 +534,8 @@
 
 /*
 
-=item C<static int is_pmc_ptr(PARROT_INTERP, const void *ptr)>
+=item C<static int is_pmc_ptr(PARROT_INTERP, Memory_Pools * const mem_pools,
+const void *ptr)>
 
 Checks that C<ptr> is actually a PMC pointer. Returns C<1> if it is, C<0>
 otherwise.
@@ -506,10 +546,12 @@
 
 PARROT_WARN_UNUSED_RESULT
 static int
-is_pmc_ptr(PARROT_INTERP, ARGIN(const void *ptr))
+is_pmc_ptr(PARROT_INTERP,
+        ARGIN(Memory_Pools * const mem_pools),
+        ARGIN(const void *ptr))
 {
     ASSERT_ARGS(is_pmc_ptr)
-        return contained_in_pool(interp, interp->mem_pools->pmc_pool, ptr);
+        return contained_in_pool(interp, mem_pools->pmc_pool, ptr);
 }
 
 

Modified: branches/ops_pct/src/global.c
==============================================================================
--- branches/ops_pct/src/global.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/global.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -249,7 +249,7 @@
         return PMCNULL;
 
     /* TT #1221 - match HLL of enclosing namespace? */
-    sub_ns = pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
+    sub_ns = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
                                                  enum_class_NameSpace));
 
     if (PMC_IS_NULL(sub_ns))
@@ -765,7 +765,7 @@
 
     /* is there an existing MultiSub PMC? or do we need to create one? */
     if (PMC_IS_NULL(multisub)) {
-        multisub = pmc_new(interp,  Parrot_get_ctx_HLL_type(interp, enum_class_MultiSub));
+        multisub = Parrot_pmc_new(interp,  Parrot_get_ctx_HLL_type(interp, enum_class_MultiSub));
         /* we have to push the sub onto the MultiSub before we try to store
         it because storing requires information from the sub */
         VTABLE_push_pmc(interp, multisub, sub_pmc);

Modified: branches/ops_pct/src/global_setup.c
==============================================================================
--- branches/ops_pct/src/global_setup.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/global_setup.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -104,7 +104,7 @@
         config_hash = Parrot_thaw(interp, config_string);
     }
     else {
-        config_hash = pmc_new(interp, enum_class_Hash);
+        config_hash = Parrot_pmc_new(interp, enum_class_Hash);
     }
 
     VTABLE_set_pmc_keyed_int(interp, iglobals,
@@ -172,7 +172,7 @@
     VTABLE_set_pmc_keyed_int(interp, iglobals,
             (INTVAL)IGLOBALS_CLASSNAME_HASH, interp->class_hash);
 
-    self           = pmc_new_noinit(interp, enum_class_ParrotInterpreter);
+    self           = Parrot_pmc_new_noinit(interp, enum_class_ParrotInterpreter);
     VTABLE_set_pointer(interp, self, interp);
     /* PMC_data(self) = interp; */
 
@@ -185,11 +185,16 @@
     parrot_init_library_paths(interp);
 
     /* load_bytecode and dynlib loaded hash */
-    pmc = pmc_new(interp, enum_class_Hash);
+    pmc = Parrot_pmc_new(interp, enum_class_Hash);
     VTABLE_set_pmc_keyed_int(interp, iglobals, IGLOBALS_PBC_LIBS, pmc);
 
-    pmc = pmc_new(interp, enum_class_Hash);
+    pmc = Parrot_pmc_new(interp, enum_class_Hash);
     VTABLE_set_pmc_keyed_int(interp, iglobals, IGLOBALS_DYN_LIBS, pmc);
+
+    pmc = Parrot_pmc_new(interp, enum_class_Hash);
+    VTABLE_set_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS, pmc);
+    Parrot_nci_load_core_thunks(interp);
+    Parrot_nci_load_extra_thunks(interp);
 }
 
 /*
@@ -212,18 +217,18 @@
     create_initial_context(interp);
 
     /* create the namespace root stash */
-    interp->root_namespace = pmc_new(interp, enum_class_NameSpace);
+    interp->root_namespace = Parrot_pmc_new(interp, enum_class_NameSpace);
     Parrot_init_HLL(interp);
 
     Parrot_pcc_set_namespace(interp, CURRENT_CONTEXT(interp),
         VTABLE_get_pmc_keyed_int(interp, interp->HLL_namespace, 0));
 
     /* We need a class hash */
-    interp->class_hash = classname_hash = pmc_new(interp, enum_class_NameSpace);
+    interp->class_hash = classname_hash = Parrot_pmc_new(interp, enum_class_NameSpace);
     Parrot_register_core_pmcs(interp, classname_hash);
 
     /* init the interpreter globals array */
-    iglobals         = pmc_new(interp, enum_class_FixedPMCArray);
+    iglobals         = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
     interp->iglobals = iglobals;
     VTABLE_set_integer_native(interp, iglobals, (INTVAL)IGLOBALS_SIZE);
 

Modified: branches/ops_pct/src/hash.c
==============================================================================
--- branches/ops_pct/src/hash.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/hash.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -61,9 +61,7 @@
         __attribute__nonnull__(3)
         FUNC_MODIFIES(*info);
 
-static void hash_thaw(PARROT_INTERP,
-    ARGMOD(Hash *hash),
-    ARGMOD(PMC *info))
+static void hash_thaw(PARROT_INTERP, ARGMOD(Hash *hash), ARGMOD(PMC *info))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
@@ -752,11 +750,13 @@
     /* resize mem */
     if (old_offset != old_mem) {
         /* This buffer has been reallocated at least once before. */
-        new_mem = (HashBucket *)mem_sys_realloc(old_mem, HASH_ALLOC_SIZE(new_size));
+        new_mem = (HashBucket *)Parrot_gc_reallocate_memory_chunk_with_interior_pointers(
+                interp, old_mem, HASH_ALLOC_SIZE(new_size), HASH_ALLOC_SIZE(old_size));
     }
     else {
         /* Allocate a new buffer. */
-        new_mem = (HashBucket *)mem_sys_allocate(HASH_ALLOC_SIZE(new_size));
+        new_mem = (HashBucket *)Parrot_gc_allocate_memory_chunk_with_interior_pointers(
+                interp, HASH_ALLOC_SIZE(new_size));
         memcpy(new_mem, old_mem, HASH_ALLOC_SIZE(old_size));
     }
 
@@ -953,7 +953,8 @@
 {
     ASSERT_ARGS(parrot_create_hash)
     HashBucket  *bp;
-    void        *alloc = mem_sys_allocate(sizeof (Hash) + HASH_ALLOC_SIZE(INITIAL_BUCKETS));
+    void        *alloc = Parrot_gc_allocate_memory_chunk_with_interior_pointers(
+                            interp, sizeof (Hash) + HASH_ALLOC_SIZE(INITIAL_BUCKETS));
     Hash * const hash  = (Hash*)alloc;
     size_t       i;
 
@@ -1012,13 +1013,13 @@
 
 PARROT_EXPORT
 void
-parrot_hash_destroy(SHIM_INTERP, ARGMOD(Hash *hash))
+parrot_hash_destroy(PARROT_INTERP, ARGMOD(Hash *hash))
 {
     ASSERT_ARGS(parrot_hash_destroy)
     HashBucket *bp = (HashBucket*)((char*)hash + sizeof (Hash));
     if (bp != hash->bs)
-        mem_sys_free(hash->bs);
-    mem_sys_free(hash);
+        mem_gc_free(interp, hash->bs);
+    mem_gc_free(interp, hash);
 }
 
 
@@ -1042,8 +1043,8 @@
     for (i = 0; i <= hash->mask; i++) {
         HashBucket *bucket = hash->bi[i];
         while (bucket) {
-            mem_sys_free(bucket->key);
-            mem_sys_free(bucket->value);
+            mem_gc_free(interp, bucket->key);
+            mem_gc_free(interp, bucket->value);
             bucket = bucket->next;
         }
     }
@@ -1077,7 +1078,7 @@
     for (i = 0; i <= hash->mask; i++) {
         HashBucket *bucket = hash->bi[i];
         while (bucket) {
-            mem_sys_free(bucket->key);
+            mem_gc_free(interp, bucket->key);
             func(bucket->value);
             bucket = bucket->next;
         }
@@ -1448,7 +1449,7 @@
 get_integer_pmc(PARROT_INTERP, INTVAL value)
 {
     ASSERT_ARGS(get_integer_pmc)
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
     VTABLE_set_integer_native(interp, ret, value);
     return ret;
 }
@@ -1469,7 +1470,7 @@
 get_number_pmc(PARROT_INTERP, FLOATVAL value)
 {
     ASSERT_ARGS(get_number_pmc)
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
     VTABLE_set_number_native(interp, ret, value);
     return ret;
 }
@@ -1489,7 +1490,7 @@
 get_string_pmc(PARROT_INTERP, ARGIN(STRING *value))
 {
     ASSERT_ARGS(get_string_pmc)
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
     VTABLE_set_string_native(interp, ret, value);
     return ret;
 }

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

Modified: branches/ops_pct/src/interp/inter_cb.c
==============================================================================
--- branches/ops_pct/src/interp/inter_cb.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/interp/inter_cb.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -25,6 +25,7 @@
 */
 
 #include "parrot/parrot.h"
+#include "pmc/pmc_parrotinterpreter.h"
 #include "inter_cb.str"
 
 
@@ -109,7 +110,7 @@
         Parrot_ex_throw_from_c_args(interp, NULL, 1,
             "unhandled signature '%Ss' in make_cb", cb_signature);
 
-    cb_sig = pmc_new(interp, enum_class_String);
+    cb_sig = Parrot_pmc_new(interp, enum_class_String);
     VTABLE_set_string_native(interp, cb_sig, cb_signature);
     sc = CONST_STRING(interp, "_signature");
     VTABLE_setprop(interp, user_data, sc, cb_sig);
@@ -121,14 +122,14 @@
      * we need to anchor it.
      *
      */
-    gc_register_pmc(interp, user_data);
+    Parrot_pmc_gc_register(interp, user_data);
 
     /*
      * Finally, the external lib awaits a function pointer.
      * Create a PMC that points to Parrot_callback_C (or _D);
      * it can be passed on with signature 'p'.
      */
-    cb = pmc_new(interp, enum_class_UnManagedStruct);
+    cb = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
     /*
      * Currently, we handle only 2 types:
      * _C ... user_data is 2nd parameter
@@ -138,7 +139,7 @@
         VTABLE_set_pointer(interp, cb, F2DPTR(Parrot_callback_C));
     else
         VTABLE_set_pointer(interp, cb, F2DPTR(Parrot_callback_D));
-    gc_register_pmc(interp, cb);
+    Parrot_pmc_gc_register(interp, cb);
 
     return cb;
 }
@@ -159,6 +160,8 @@
     ASSERT_ARGS(verify_CD)
     PARROT_INTERP = NULL;
     size_t i;
+    PMC    *interp_pmc;
+    STRING *sc;
 
     /*
      * 1.) user_data is from external code so:
@@ -174,19 +177,14 @@
     if ((UINTVAL)user_data & 3)
         PANIC(interp, "user_data doesn't look like a pointer");
 
-    /*
-     * We don't yet know which interpreter this PMC is from, so run
-     * through all of the existing interpreters and check their PMC
-     * pools
-     */
+    /* Fetch original interpreter from prop */
     LOCK(interpreter_array_mutex);
-    for (i = 0; i < n_interpreters; ++i) {
-        Parrot_Interp checkinterp = interpreter_array [i];
-        if (checkinterp && Parrot_gc_ptr_is_pmc(checkinterp, user_data)) {
-            interp = checkinterp;
-            break;
-        }
-    }
+
+    interp      = interpreter_array[0];
+    sc          = CONST_STRING(interp, "_interpreter");
+    interp_pmc  = VTABLE_getprop(interp, user_data, sc);
+    GETATTR_ParrotInterpreter_interp(interp, interp_pmc, interp);
+
     UNLOCK(interpreter_array_mutex);
     if (!interp)
         PANIC(interp, "interpreter not found for callback");
@@ -347,7 +345,7 @@
 #endif
       case 'p':
         /* created a UnManagedStruct */
-        p_param = pmc_new(interp, enum_class_UnManagedStruct);
+        p_param = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
         VTABLE_set_pointer(interp, p_param, external_data);
         pasm_sig[1] = 'P';
         param = (void*) p_param;

Modified: branches/ops_pct/src/interp/inter_create.c
==============================================================================
--- branches/ops_pct/src/interp/inter_create.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/interp/inter_create.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -24,6 +24,7 @@
 #include "parrot/oplib/core_ops.h"
 #include "../compilers/imcc/imc.h"
 #include "pmc/pmc_callcontext.h"
+#include "../gc/gc_private.h"
 #include "inter_create.str"
 
 /* HEADERIZER HFILE: include/parrot/interpreter.h */
@@ -36,14 +37,9 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void setup_default_compreg(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
 #define ASSERT_ARGS_is_env_var_set __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(var))
-#define ASSERT_ARGS_setup_default_compreg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
@@ -77,29 +73,40 @@
 
 /*
 
-=item C<static void setup_default_compreg(PARROT_INTERP)>
+=item C<Parrot_Interp make_interpreter(Interp *parent, INTVAL flags)>
 
-Setup default compiler for PASM.
+Create the Parrot interpreter. Allocate memory and clear the registers.
 
 =cut
 
 */
 
-static void
-setup_default_compreg(PARROT_INTERP)
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+Parrot_Interp
+make_interpreter(ARGIN_NULLOK(Interp *parent), INTVAL flags)
 {
-    ASSERT_ARGS(setup_default_compreg)
-    STRING * const pasm1 = CONST_STRING(interp, "PASM1");
+    ASSERT_ARGS(make_interpreter)
+    int stacktop;
+    Interp *interp;
 
-    /* register the nci compiler object */
-    Parrot_compreg(interp, pasm1, (Parrot_compiler_func_t)PDB_compile);
+    interp = allocate_interpreter(parent, flags);
+    initialize_interpreter(interp, (void*)&stacktop);
+    return interp;
 }
 
 /*
 
-=item C<Parrot_Interp make_interpreter(Interp *parent, INTVAL flags)>
+=item C<Parrot_Interp allocate_interpreter(Interp *parent, INTVAL flags)>
 
-Create the Parrot interpreter. Allocate memory and clear the registers.
+Allocate new interpreter from system memory. Everything is preallocated but not
+initialized. Used in next cycle:
+
+    allocate_interpreter
+    parseflags
+    initialize_interpreter
+
+for overriding subsystems (e.g. GC) which require early initialization.
 
 =cut
 
@@ -108,14 +115,14 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 Parrot_Interp
-make_interpreter(ARGIN_NULLOK(Interp *parent), INTVAL flags)
+allocate_interpreter(ARGIN_NULLOK(Interp *parent), INTVAL flags)
 {
-    ASSERT_ARGS(make_interpreter)
+    ASSERT_ARGS(allocate_interpreter)
     int stacktop;
     Interp *interp;
 
     /* Get an empty interpreter from system memory */
-    interp = mem_allocate_zeroed_typed(Interp);
+    interp = mem_internal_allocate_zeroed_typed(Interp);
 
     interp->lo_var_ptr = NULL;
 
@@ -135,8 +142,50 @@
     /* Must initialize flags before Parrot_gc_initialize() is called
      * so the GC_DEBUG stuff is available. */
     interp->flags = flags;
+
+    interp->ctx         = PMCNULL;
+    interp->resume_flag = RESUME_INITIAL;
+
+    interp->recursion_limit = RECURSION_LIMIT;
+
+    /* PANIC will fail until this is done */
+    interp->piodata = NULL;
+
+    /* create exceptions list */
+    interp->current_runloop_id    = 0;
+    interp->current_runloop_level = 0;
+
+    /* Allocate IMCC info */
+    IMCC_INFO(interp) = mem_internal_allocate_zeroed_typed(imc_info_t);
+
+    interp->gc_sys           = mem_internal_allocate_zeroed_typed(GC_Subsystem);
+    interp->gc_sys->sys_type = parent
+                                    ? parent->gc_sys->sys_type
+                                    : PARROT_GC_DEFAULT_TYPE;
+
+    /* Done. Return and be done with it */
+    return interp;
+}
+
+/*
+
+=item C<Parrot_Interp initialize_interpreter(PARROT_INTERP, void *stacktop)>
+
+Initialize previously allocated interpreter.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+Parrot_Interp
+initialize_interpreter(PARROT_INTERP, ARGIN(void *stacktop))
+{
+    ASSERT_ARGS(initialize_interpreter)
+
     /* Set up the memory allocation system */
-    Parrot_gc_initialize(interp, (void*)&stacktop);
+    Parrot_gc_initialize(interp, stacktop);
     Parrot_block_GC_mark(interp);
     Parrot_block_GC_sweep(interp);
 
@@ -155,17 +204,6 @@
      */
     Parrot_str_init(interp);
 
-    if (is_env_var_set(interp, CONST_STRING(interp, "PARROT_GC_DEBUG"))) {
-#if ! DISABLE_GC_DEBUG
-        Interp_flags_SET(interp, PARROT_GC_DEBUG_FLAG);
-#else
-        fprintf(stderr, "PARROT_GC_DEBUG is set but the binary was compiled "
-                "with DISABLE_GC_DEBUG.\n");
-#endif
-    }
-
-    Parrot_initialize_core_vtables(interp);
-
     /* Set up MMD; MMD cache for builtins. */
     interp->op_mmd_cache = Parrot_mmd_cache_create(interp);
 
@@ -174,9 +212,20 @@
 
     /* initialize classes - this needs mmd func table */
     interp->HLL_info = NULL;
+
+    Parrot_initialize_core_vtables(interp);
     init_world_once(interp);
 
     /* context data */
+    if (is_env_var_set(interp, CONST_STRING(interp, "PARROT_GC_DEBUG"))) {
+#if ! DISABLE_GC_DEBUG
+        Interp_flags_SET(interp, PARROT_GC_DEBUG_FLAG);
+#else
+        fprintf(stderr, "PARROT_GC_DEBUG is set but the binary was compiled "
+                "with DISABLE_GC_DEBUG.\n");
+#endif
+    }
+
     /* Initialize interpreter's flags */
     PARROT_WARNINGS_off(interp, PARROT_WARNINGS_ALL_FLAG);
 
@@ -205,7 +254,7 @@
     Parrot_runcore_init(interp);
 
     /* Load the core op func and info tables */
-    interp->op_lib          = PARROT_CORE_OPLIB_INIT(1);
+    interp->op_lib          = PARROT_CORE_OPLIB_INIT(interp, 1);
     interp->op_count        = interp->op_lib->op_count;
     interp->op_func_table   = interp->op_lib->op_func_table;
     interp->op_info_table   = interp->op_lib->op_info_table;
@@ -215,19 +264,16 @@
     interp->code            = NULL;
 
     /* create the root set registry */
-    interp->gc_registry     = pmc_new(interp, enum_class_AddrRegistry);
+    interp->gc_registry     = Parrot_pmc_new(interp, enum_class_AddrRegistry);
 
     /* And a dynamic environment stack */
     /* TODO: We should really consider removing this (TT #876) */
-    interp->dynamic_env = pmc_new(interp, enum_class_ResizablePMCArray);
+    interp->dynamic_env = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
     /* create exceptions list */
     interp->current_runloop_id    = 0;
     interp->current_runloop_level = 0;
 
-    /* register assembler/compilers */
-    setup_default_compreg(interp);
-
     /* setup stdio PMCs */
     Parrot_io_init(interp);
 
@@ -264,6 +310,7 @@
     return interp;
 }
 
+
 /*
 
 =item C<void Parrot_destroy(PARROT_INTERP)>
@@ -373,12 +420,9 @@
     if (interp->parent_interpreter
     &&  interp->thread_data
     && (interp->thread_data->state & THREAD_STATE_JOINED)) {
-        Parrot_gc_merge_header_pools(interp->parent_interpreter, interp);
-        Parrot_gc_merge_header_pools(interp->parent_interpreter, interp);
+        Parrot_gc_destroy_child_interp(interp->parent_interpreter, interp);
     }
 
-    Parrot_gc_finalize(interp);
-
     /* MMD cache */
     Parrot_mmd_cache_destroy(interp, interp->op_mmd_cache);
 
@@ -390,44 +434,34 @@
     /* packfile */
     if (interp->initial_pf)
         PackFile_destroy(interp, interp->initial_pf);
-
-    /* buffer headers, PMCs */
-    Parrot_gc_destroy_header_pools(interp);
-
-    /* memory pools in resources */
-    Parrot_gc_destroy_memory_pools(interp);
-
-    /* mem subsystem is dead now */
-    mem_sys_free(interp->mem_pools);
-    interp->mem_pools = NULL;
-    mem_sys_free(interp->gc_sys);
-    interp->gc_sys = NULL;
-
     /* cache structure */
     destroy_object_cache(interp);
 
     if (interp->evc_func_table) {
-        mem_sys_free(interp->evc_func_table);
+        mem_gc_free(interp, interp->evc_func_table);
         interp->evc_func_table = NULL;
     }
 
     /* strings, charsets, encodings - only once */
     Parrot_str_finish(interp);
 
-    PARROT_CORE_OPLIB_INIT(0);
+    PARROT_CORE_OPLIB_INIT(interp, 0);
 
     if (!interp->parent_interpreter) {
         if (interp->thread_data)
-            mem_sys_free(interp->thread_data);
+            mem_internal_free(interp->thread_data);
 
         /* free vtables */
         parrot_free_vtables(interp);
 
+        /* Finalyze GC */
+        Parrot_gc_finalize(interp);
+
         MUTEX_DESTROY(interpreter_array_mutex);
-        mem_sys_free(interp);
+        mem_internal_free(interp);
 
         /* finally free other globals */
-        mem_sys_free(interpreter_array);
+        mem_internal_free(interpreter_array);
         interpreter_array = NULL;
     }
 
@@ -437,12 +471,16 @@
         || (interp->thread_data
         && (interp->thread_data->state & THREAD_STATE_JOINED))) {
             if (interp->thread_data) {
-                mem_sys_free(interp->thread_data);
+                mem_internal_free(interp->thread_data);
                 interp->thread_data = NULL;
             }
 
             parrot_free_vtables(interp);
-            mem_sys_free(interp);
+
+            /* Finalyze GC */
+            Parrot_gc_finalize(interp);
+
+            mem_internal_free(interp);
         }
     }
 }

Modified: branches/ops_pct/src/interp/inter_misc.c
==============================================================================
--- branches/ops_pct/src/interp/inter_misc.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/interp/inter_misc.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -51,7 +51,7 @@
                     ARGIN(const char *name), ARGIN(const char *proto))
 {
     ASSERT_ARGS(register_nci_method)
-    PMC    * const method      = pmc_new(interp, enum_class_NCI);
+    PMC    * const method      = Parrot_pmc_new(interp, enum_class_NCI);
     STRING * const method_name = string_make(interp, name, strlen(name),
         NULL, PObj_constant_FLAG|PObj_external_FLAG);
 
@@ -84,7 +84,7 @@
         ARGIN(STRING *name))
 {
     ASSERT_ARGS(register_raw_nci_method_in_ns)
-    PMC    * const method      = pmc_new(interp, enum_class_NCI);
+    PMC    * const method      = Parrot_pmc_new(interp, enum_class_NCI);
 
     /* setup call func */
     VTABLE_set_pointer(interp, method, func);
@@ -111,7 +111,7 @@
 {
     ASSERT_ARGS(Parrot_mark_method_writes)
     STRING *const str_name = Parrot_str_new_constant(interp, name);
-    PMC    *const pmc_true = pmc_new(interp, enum_class_Integer);
+    PMC    *const pmc_true = Parrot_pmc_new(interp, enum_class_Integer);
     PMC    *const method   = VTABLE_get_pmc_keyed_str(
         interp, interp->vtables[type]->_namespace, str_name);
     VTABLE_set_integer_native(interp, pmc_true, 1);
@@ -136,13 +136,13 @@
 {
     ASSERT_ARGS(Parrot_compreg)
     PMC* const iglobals = interp->iglobals;
-    PMC        *nci     = pmc_new(interp, enum_class_NCI);
+    PMC        *nci     = Parrot_pmc_new(interp, enum_class_NCI);
     STRING     *sc      = CONST_STRING(interp, "PJt");
     PMC        *hash    = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
                               IGLOBALS_COMPREG_HASH);
 
     if (!hash) {
-        hash = pmc_new_noinit(interp, enum_class_Hash);
+        hash = Parrot_pmc_new_noinit(interp, enum_class_Hash);
         VTABLE_init(interp, hash);
         VTABLE_set_pmc_keyed_int(interp, iglobals,
                 (INTVAL)IGLOBALS_COMPREG_HASH, hash);
@@ -322,16 +322,14 @@
 {
     ASSERT_ARGS(interpinfo_s)
     switch (what) {
-      case EXECUTABLE_FULLNAME:
-        {
+        case EXECUTABLE_FULLNAME: {
             PMC *exe_name = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
                     IGLOBALS_EXECUTABLE);
             if (PMC_IS_NULL(exe_name))
                 return string_from_literal(interp, "");
             return VTABLE_get_string(interp, exe_name);
         }
-      case EXECUTABLE_BASENAME:
-        {
+        case EXECUTABLE_BASENAME: {
             STRING *basename;
             PMC    *exe_name = VTABLE_get_pmc_keyed_int(interp,
                                 interp->iglobals, IGLOBALS_EXECUTABLE);
@@ -359,8 +357,12 @@
                 return basename;
             }
         }
-      case RUNTIME_PREFIX:
-        return Parrot_get_runtime_path(interp);
+        case RUNTIME_PREFIX:
+            return Parrot_get_runtime_path(interp);
+        case GC_SYS_NAME: {
+            STRING * name = Parrot_gc_sys_name(interp);
+            return name;
+        }
       default:
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
                 "illegal argument in interpinfo");

Modified: branches/ops_pct/src/io/api.c
==============================================================================
--- branches/ops_pct/src/io/api.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/io/api.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -89,7 +89,7 @@
 Parrot_io_new_pmc(PARROT_INTERP, INTVAL flags)
 {
     ASSERT_ARGS(Parrot_io_new_pmc)
-    PMC * const new_io = pmc_new(interp, enum_class_FileHandle);
+    PMC * const new_io = Parrot_pmc_new(interp, enum_class_FileHandle);
 
     Parrot_io_set_flags(interp, new_io, flags);
 
@@ -125,7 +125,7 @@
     if (PMC_IS_NULL(pmc)) {
         /* TODO: We should look up the HLL mapped type, instead of always
            using FileHandle here */
-        new_filehandle = pmc_new(interp, enum_class_FileHandle);
+        new_filehandle = Parrot_pmc_new(interp, enum_class_FileHandle);
         PARROT_ASSERT(new_filehandle->vtable->base_type == enum_class_FileHandle);
     }
     else

Modified: branches/ops_pct/src/io/buffer.c
==============================================================================
--- branches/ops_pct/src/io/buffer.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/io/buffer.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -99,14 +99,14 @@
     buffer_size = Parrot_io_get_buffer_size(interp, filehandle);
 
     if (buffer_start && (buffer_flags & PIO_BF_MALLOC)) {
-        mem_sys_free(buffer_start);
+        mem_gc_free(interp, buffer_start);
         Parrot_io_set_buffer_start(interp, filehandle, NULL);
         Parrot_io_set_buffer_next(interp, filehandle, NULL);
         buffer_start = buffer_next = NULL;
     }
 
     if (buffer_size > 0) {
-        buffer_start = buffer_next = (unsigned char *)mem_sys_allocate(buffer_size);
+        buffer_start = buffer_next = mem_gc_allocate_n_typed(interp, buffer_size, unsigned char);
         Parrot_io_set_buffer_start(interp, filehandle, buffer_start);
         Parrot_io_set_buffer_next(interp, filehandle, buffer_next);
         buffer_flags |= PIO_BF_MALLOC;
@@ -357,9 +357,12 @@
         }
 
         got = Parrot_io_fill_readbuf(interp, filehandle);
-        len = (len < got)
-            ? len
-            : (got > 0) ? got : 0;
+
+        /* got is never < 0, but C's type system can't tell */
+        if (got < 0)
+            got = 0;
+
+        len = (len < got) ? len : got;
     }
 
     /* read from the read_buffer */

Modified: branches/ops_pct/src/io/core.c
==============================================================================
--- branches/ops_pct/src/io/core.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/io/core.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -64,12 +64,12 @@
     }
 
 
-    interp->piodata = mem_allocate_typed(ParrotIOData);
+    interp->piodata = mem_gc_allocate_zeroed_typed(interp, ParrotIOData);
     if (interp->piodata == NULL)
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PIO_ERROR,
             "PIO alloc piodata failure.");
     interp->piodata->table         =
-        (PMC **)mem_sys_allocate_zeroed(PIO_NR_OPEN * sizeof (PMC *));
+            mem_gc_allocate_n_zeroed_typed(interp, PIO_NR_OPEN, PMC *);
 
     if (!interp->piodata->table)
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PIO_ERROR,
@@ -95,9 +95,9 @@
     /*
      * TODO free IO of std-handles
      */
-    mem_sys_free(interp->piodata->table);
+    mem_gc_free(interp, interp->piodata->table);
     interp->piodata->table = NULL;
-    mem_sys_free(interp->piodata);
+    mem_gc_free(interp, interp->piodata);
     interp->piodata = NULL;
 
 }

Modified: branches/ops_pct/src/io/filehandle.c
==============================================================================
--- branches/ops_pct/src/io/filehandle.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/io/filehandle.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -552,12 +552,12 @@
 
 PARROT_CAN_RETURN_NULL
 void
-Parrot_io_clear_buffer(SHIM_INTERP, ARGIN(PMC *filehandle))
+Parrot_io_clear_buffer(PARROT_INTERP, ARGIN(PMC *filehandle))
 {
     ASSERT_ARGS(Parrot_io_clear_buffer)
     Parrot_FileHandle_attributes * const io = PARROT_FILEHANDLE(filehandle);
     if (io->buffer_start && (io->flags & PIO_BF_MALLOC)) {
-        mem_sys_free(io->buffer_start);
+        mem_gc_free(interp, io->buffer_start);
         io->buffer_start = NULL;
     }
 }

Modified: branches/ops_pct/src/io/socket_api.c
==============================================================================
--- branches/ops_pct/src/io/socket_api.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/io/socket_api.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -346,7 +346,7 @@
 Parrot_io_new_socket_pmc(PARROT_INTERP, INTVAL flags)
 {
     ASSERT_ARGS(Parrot_io_new_socket_pmc)
-    PMC * const new_io = pmc_new(interp, enum_class_Socket);
+    PMC * const new_io = Parrot_pmc_new(interp, enum_class_Socket);
 
     Parrot_io_set_flags(interp, new_io, flags);
 

Modified: branches/ops_pct/src/io/socket_unix.c
==============================================================================
--- branches/ops_pct/src/io/socket_unix.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/io/socket_unix.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -102,7 +102,7 @@
     ASSERT_ARGS(Parrot_io_sockaddr_in)
 
     char * const s        = Parrot_str_to_cstring(interp, addr);
-    PMC  * const sockaddr = pmc_new(interp, enum_class_Sockaddr);
+    PMC  * const sockaddr = Parrot_pmc_new(interp, enum_class_Sockaddr);
 
     get_sockaddr_in(interp, sockaddr, s, port);
     Parrot_str_free_cstring(s);
@@ -258,7 +258,7 @@
     int newsock;
 
     PARROT_SOCKET(newio)->local  = PARROT_SOCKET(socket)->local;
-    PARROT_SOCKET(newio)->remote = pmc_new(interp, enum_class_Sockaddr);
+    PARROT_SOCKET(newio)->remote = Parrot_pmc_new(interp, enum_class_Sockaddr);
     saddr                        = SOCKADDR_REMOTE(newio);
 
     newsock = accept(io->os_handle, (struct sockaddr *)saddr, &addrlen);

Modified: branches/ops_pct/src/io/socket_win32.c
==============================================================================
--- branches/ops_pct/src/io/socket_win32.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/io/socket_win32.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -205,7 +205,7 @@
     int newsock;
 
     PARROT_SOCKET(newio)->local  = PARROT_SOCKET(socket)->local;
-    PARROT_SOCKET(newio)->remote = pmc_new(interp, enum_class_Sockaddr);
+    PARROT_SOCKET(newio)->remote = Parrot_pmc_new(interp, enum_class_Sockaddr);
     saddr                        = SOCKADDR_REMOTE(newio);
 
     newsock = accept((int)io->os_handle, (struct sockaddr *)saddr, &addrlen);
@@ -445,7 +445,7 @@
     ASSERT_ARGS(Parrot_io_sockaddr_in)
     PMC  * sockaddr;
     char * const s = Parrot_str_to_cstring(interp, addr);
-    sockaddr = pmc_new(interp, enum_class_Sockaddr);
+    sockaddr = Parrot_pmc_new(interp, enum_class_Sockaddr);
     get_sockaddr_in(interp, sockaddr, s, port);
     Parrot_str_free_cstring(s);
     return sockaddr;

Modified: branches/ops_pct/src/io/unix.c
==============================================================================
--- branches/ops_pct/src/io/unix.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/io/unix.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -181,17 +181,19 @@
          */
         if ((oflags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) {
             close(fd);
-            Parrot_str_free_cstring(spath); /* returning before C string freed */
+
+            /* returning before C string freed */
+            Parrot_str_free_cstring(spath);
             return PMCNULL;
         }
-        /*
-         * Check for truncate?
-         */
+
+        /* Check for truncate?  */
         if (oflags & O_TRUNC) {
             int tfd;
             while ((tfd = creat(spath, PIO_DEFAULTMODE)) < 0 && errno == EINTR)
                 errno = 0;
-            close(tfd);
+            if (tfd > 0)
+                close(tfd);
         }
     }
     else if (oflags & O_CREAT) {
@@ -199,10 +201,10 @@
         while ((fd = creat(spath, PIO_DEFAULTMODE)) < 0 && errno == EINTR)
             errno = 0;
         if (!(oflags & O_WRONLY)) {
-            close(fd);
-            /*
-             * File created, reopen with read+write
-             */
+            if (fd > 0)
+                close(fd);
+
+            /* File created, reopen with read+write */
             while ((fd = open(spath, oflags & (O_WRONLY | O_RDWR),
                               DEFAULT_OPEN_MODE)) < 0 && errno == EINTR)
                 errno = 0;

Modified: branches/ops_pct/src/key.c
==============================================================================
--- branches/ops_pct/src/key.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/key.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -43,7 +43,7 @@
 key_new(PARROT_INTERP)
 {
     ASSERT_ARGS(key_new)
-    return pmc_new(interp, enum_class_Key);
+    return Parrot_pmc_new(interp, enum_class_Key);
 }
 
 
@@ -64,7 +64,7 @@
 key_new_integer(PARROT_INTERP, INTVAL value)
 {
     ASSERT_ARGS(key_new_integer)
-    PMC * const key = pmc_new(interp, enum_class_Key);
+    PMC * const key = Parrot_pmc_new(interp, enum_class_Key);
 
     PObj_get_FLAGS(key) |= KEY_integer_FLAG;
     SETATTR_Key_int_key(interp, key, value);
@@ -90,7 +90,7 @@
 key_new_number(PARROT_INTERP, FLOATVAL value)
 {
     ASSERT_ARGS(key_new_number)
-    PMC * const key = pmc_new(interp, enum_class_Key);
+    PMC * const key = Parrot_pmc_new(interp, enum_class_Key);
 
     PObj_get_FLAGS(key) |= KEY_number_FLAG;
     SETATTR_Key_num_key(interp, key, value);
@@ -116,7 +116,7 @@
 key_new_string(PARROT_INTERP, ARGIN(STRING *value))
 {
     ASSERT_ARGS(key_new_string)
-    PMC * const key = pmc_new(interp, enum_class_Key);
+    PMC * const key = Parrot_pmc_new(interp, enum_class_Key);
 
     PObj_get_FLAGS(key) |= KEY_string_FLAG;
     SETATTR_Key_str_key(interp, key, value);
@@ -164,7 +164,7 @@
 key_new_pmc(PARROT_INTERP, ARGIN(PMC *value))
 {
     ASSERT_ARGS(key_new_pmc)
-    PMC * const key = pmc_new(interp, enum_class_Key);
+    PMC * const key = Parrot_pmc_new(interp, enum_class_Key);
 
     PObj_get_FLAGS(key) |= KEY_pmc_FLAG;
     Parrot_ex_throw_from_c_args(interp, NULL, 1, "this is broken - see slice.pmc");

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

Modified: branches/ops_pct/src/main.c
==============================================================================
--- branches/ops_pct/src/main.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/main.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2007-2008, Parrot Foundation.
+Copyright (C) 2007-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -23,6 +23,67 @@
 #include "parrot/parrot.h"
 #include "parrot/embed.h"
 #include "parrot/imcc.h"
+#include "parrot/longopt.h"
+#include "parrot/runcore_api.h"
+#include "pmc/pmc_callcontext.h"
+
+/* For gc_sys_type_enum */
+#include "gc/gc_private.h"
+
+/* HEADERIZER HFILE: none */
+
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static void help(void);
+static void help_debug(void);
+PARROT_WARN_UNUSED_RESULT
+PARROT_PURE_FUNCTION
+static int is_all_hex_digits(ARGIN(const char *s))
+        __attribute__nonnull__(1);
+
+static void Parrot_version(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
+PARROT_CAN_RETURN_NULL
+static const char * parseflags(PARROT_INTERP,
+    ARGIN(int *argc),
+    ARGIN(char **argv[]),
+    ARGIN(Parrot_Run_core_t *core),
+    ARGIN(Parrot_trace_flags *trace))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
+        __attribute__nonnull__(5);
+
+static void parseflags_minimal(PARROT_INTERP, int argc, ARGIN(char *argv[]))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3);
+
+static void usage(ARGMOD(FILE *fp))
+        __attribute__nonnull__(1)
+        FUNC_MODIFIES(*fp);
+
+#define ASSERT_ARGS_help __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_help_debug __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_is_all_hex_digits __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(s))
+#define ASSERT_ARGS_Parrot_version __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_parseflags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(argc) \
+    , PARROT_ASSERT_ARG(argv) \
+    , PARROT_ASSERT_ARG(core) \
+    , PARROT_ASSERT_ARG(trace))
+#define ASSERT_ARGS_parseflags_minimal __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(argv))
+#define ASSERT_ARGS_usage __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(fp))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
 
 /*
 
@@ -37,10 +98,15 @@
 int
 main(int argc, char * argv[])
 {
+    int         stacktop;
     const char *sourcefile;
+    const char *execname;
     Interp     *interp;
     int         status;
 
+    Parrot_Run_core_t  core  = PARROT_SLOW_CORE;
+    Parrot_trace_flags trace = PARROT_NO_TRACE;
+
     /* internationalization setup */
     /* setlocale(LC_ALL, ""); */
     PARROT_BINDTEXTDOMAIN(PACKAGE, LOCALEDIR);
@@ -48,15 +114,39 @@
 
     Parrot_set_config_hash();
 
-    interp = Parrot_new(NULL);
-    imcc_initialize(interp);
+    interp = allocate_interpreter(NULL, PARROT_NO_FLAGS);
 
     /* We parse the arguments, but first store away the name of the Parrot
        executable, since parsing destroys that and we want to make it
        available. */
-    Parrot_set_executable_name(interp, Parrot_str_new(interp, argv[0], 0));
+    execname = argv[0];
+
+    /* Parse minimal subset of flags */
+    parseflags_minimal(interp, argc, argv);
+
+    /* Now initialize interpreter */
+    initialize_interpreter(interp, (void*)&stacktop);
+    imcc_initialize(interp);
+
+    { /* EXPERIMENTAL: add library and include paths from environment */
+        PMC *env = Parrot_pmc_new(interp, enum_class_Env);
+        STRING *path = VTABLE_get_string_keyed_str(interp, env,
+                Parrot_str_new_constant(interp, "PARROT_LIBRARY"));
+        if (!STRING_is_null(interp, path) && Parrot_str_length(interp, path) > 0)
+            Parrot_lib_add_path(interp, path, PARROT_LIB_PATH_LIBRARY);
+        path = VTABLE_get_string_keyed_str(interp, env,
+                Parrot_str_new_constant(interp, "PARROT_INCLUDE"));
+        if (!STRING_is_null(interp, path) && Parrot_str_length(interp, path) > 0)
+            Parrot_lib_add_path(interp, path, PARROT_LIB_PATH_INCLUDE);
+    }
+
+    /* Parse flags */
+    sourcefile = parseflags(interp, &argc, &argv, &core, &trace);
+
+    Parrot_set_trace(interp, trace);
+    Parrot_set_run_core(interp, (Parrot_Run_core_t) core);
+    Parrot_set_executable_name(interp, Parrot_str_new(interp, execname, 0));
 
-    sourcefile = parseflags(interp, &argc, &argv);
     status     = imcc_run(interp, sourcefile, argc, argv);
     UNUSED(status);
 
@@ -65,6 +155,438 @@
     Parrot_exit(interp, 0);
 }
 
+#define OPT_GC_DEBUG       128
+#define OPT_DESTROY_FLAG   129
+#define OPT_HELP_DEBUG     130
+#define OPT_PBC_OUTPUT     131
+#define OPT_RUNTIME_PREFIX 132
+
+#define SET_FLAG(flag)   Parrot_set_flag(interp, (flag))
+#define SET_DEBUG(flag)  Parrot_set_debug(interp, (flag))
+#define SET_TRACE(flag)  Parrot_set_trace(interp, (flag))
+
+static struct longopt_opt_decl options[] = {
+    { '.', '.', (OPTION_flags)0, { "--wait" } },
+    { 'D', 'D', OPTION_optional_FLAG, { "--parrot-debug" } },
+    { 'E', 'E', (OPTION_flags)0, { "--pre-process-only" } },
+    { 'G', 'G', (OPTION_flags)0, { "--no-gc" } },
+    { 'H', 'H', OPTION_required_FLAG, { "--hash-seed" } },
+    { 'I', 'I', OPTION_required_FLAG, { "--include" } },
+    { 'L', 'L', OPTION_required_FLAG, { "--library" } },
+    { 'O', 'O', OPTION_optional_FLAG, { "--optimize" } },
+    { 'R', 'R', OPTION_required_FLAG, { "--runcore" } },
+    { 'g', 'g', OPTION_required_FLAG, { "--gc" } },
+    { 'V', 'V', (OPTION_flags)0, { "--version" } },
+    { 'X', 'X', OPTION_required_FLAG, { "--dynext" } },
+    { '\0', OPT_DESTROY_FLAG, (OPTION_flags)0,
+                                 { "--leak-test", "--destroy-at-end" } },
+    { '\0', OPT_GC_DEBUG, (OPTION_flags)0, { "--gc-debug" } },
+    { 'a', 'a', (OPTION_flags)0, { "--pasm" } },
+    { 'c', 'c', (OPTION_flags)0, { "--pbc" } },
+    { 'd', 'd', OPTION_optional_FLAG, { "--imcc-debug" } },
+    { '\0', OPT_HELP_DEBUG, (OPTION_flags)0, { "--help-debug" } },
+    { 'h', 'h', (OPTION_flags)0, { "--help" } },
+    { 'o', 'o', OPTION_required_FLAG, { "--output" } },
+    { '\0', OPT_PBC_OUTPUT, (OPTION_flags)0, { "--output-pbc" } },
+    { 'r', 'r', (OPTION_flags)0, { "--run-pbc" } },
+    { '\0', OPT_RUNTIME_PREFIX, (OPTION_flags)0, { "--runtime-prefix" } },
+    { 't', 't', OPTION_optional_FLAG, { "--trace" } },
+    { 'v', 'v', (OPTION_flags)0, { "--verbose" } },
+    { 'w', 'w', (OPTION_flags)0, { "--warnings" } },
+    { 'y', 'y', (OPTION_flags)0, { "--yydebug" } },
+    { 0, 0, (OPTION_flags)0, { NULL } }
+};
+
+/*
+
+=item C<static int is_all_hex_digits(const char *s)>
+
+Tests all characters in a string are hexadecimal digits.
+Returns 1 if true, 0 as soon as a non-hex found
+
+=cut
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_PURE_FUNCTION
+static int
+is_all_hex_digits(ARGIN(const char *s))
+{
+    ASSERT_ARGS(is_all_hex_digits)
+    for (; *s; s++)
+        if (!isxdigit(*s))
+            return 0;
+    return 1;
+}
+
+/*
+
+=item C<static void usage(FILE *fp)>
+
+Outputs usage error message.
+
+=cut
+
+*/
+
+static void
+usage(ARGMOD(FILE *fp))
+{
+    ASSERT_ARGS(usage)
+    fprintf(fp,
+            "parrot -[acEGhprtvVwy.] [-d [FLAGS]] [-D [FLAGS]]"
+            "[-O [level]] [-R runcore] [-o FILE] <file>\n");
+}
+
+/*
+
+=item C<static void help_debug(void)>
+
+Print out list of debugging flag values.
+
+=cut
+
+*/
+
+static void
+help_debug(void)
+{
+    ASSERT_ARGS(help_debug)
+    /* split printf for C89 compliance on string length */
+    printf(
+    "--imcc-debug -d [Flags] ...\n"
+    "    0002    lexer\n"
+    "    0004    parser\n"
+    "    0008    imc\n"
+    "    0010    CFG\n"
+    "    0020    optimization 1\n"
+    "    0040    optimization 2\n"
+    "    0100    AST\n"
+    "    1000    PBC\n"
+    "    2000    PBC constants\n"
+    "    4000    PBC fixups\n"
+    "\n");
+    printf(
+    "--parrot-debug -D [Flags] ...\n"
+    "    0001    memory statistics\n"
+    "    0002    print backtrace on exception\n"
+    "    0004    JIT debugging\n"
+    "    0008    interpreter startup\n"
+    "    0010    thread debugging\n"
+    "    0020    eval/compile\n"
+    "    0040    fill I, N registers with garbage\n"
+    "    0080    show when a context is destroyed\n"
+    "\n"
+    "--trace -t [Flags] ...\n"
+    "    0001    opcodes\n"
+    "    0002    find_method\n"
+    "    0004    function calls\n");
+}
+
+/*
+
+=item C<static void help(void)>
+
+Print out "help" list of options.
+
+=cut
+
+*/
+
+static void
+help(void)
+{
+    ASSERT_ARGS(help)
+    /* split printf for C89 compliance on string length */
+    printf(
+    "parrot [Options] <file>\n"
+    "  Options:\n"
+    "    -h --help\n"
+    "    -V --version\n"
+    "    -I --include add path to include search\n"
+    "    -L --library add path to library search\n"
+    "    -H --hash-seed F00F  specify hex value to use as hash seed\n"
+    "    -X --dynext add path to dynamic extension search\n"
+    "   <Run core options>\n"
+    "    -R --runcore slow|bounds|fast|cgoto|cgp\n"
+    "    -R --runcore switch|trace|profiling|gcdebug\n"
+    "    -t --trace [flags]\n"
+    "   <VM options>\n"
+    "    -D --parrot-debug[=HEXFLAGS]\n"
+    "       --help-debug\n");
+    printf(
+    "    -w --warnings\n"
+    "    -G --no-gc\n"
+    "       --gc-debug\n"
+    "       --leak-test|--destroy-at-end\n"
+    "    -g --gc ms|inf set GC type\n"
+    "    -. --wait    Read a keystroke before starting\n"
+    "       --runtime-prefix\n"
+    "   <Compiler options>\n"
+    "    -d --imcc-debug[=HEXFLAGS]\n"
+    "    -v --verbose\n"
+    "    -E --pre-process-only\n"
+    "    -o --output=FILE\n"
+    "       --output-pbc\n"
+    "    -O --optimize[=LEVEL]\n"
+    "    -a --pasm\n"
+    "    -c --pbc\n"
+    "    -r --run-pbc\n"
+    "    -y --yydebug\n"
+    "   <Language options>\n"
+    "see docs/running.pod for more\n");
+}
+
+
+/*
+
+=item C<static void Parrot_version(PARROT_INTERP)>
+
+Print out parrot version number.
+
+=cut
+
+*/
+
+static void
+Parrot_version(PARROT_INTERP)
+{
+    ASSERT_ARGS(Parrot_version)
+    printf("This is Parrot version " PARROT_VERSION);
+    printf(" built for " PARROT_ARCHNAME ".\n");
+    printf("Copyright (C) 2001-2010, Parrot Foundation.\n\
+\n\
+This code is distributed under the terms of the Artistic License 2.0.\
+\n\
+For more details, see the full text of the license in the LICENSE file\
+\n\
+included in the Parrot source tree.\n\n");
+
+    exit(EXIT_SUCCESS);
+}
+
+/*
+
+=item C<static void parseflags_minimal(PARROT_INTERP, int argc, char *argv[])>
+
+Parse minimal subset of args required for initializing interpreter.
+
+=cut
+
+*/
+static void
+parseflags_minimal(PARROT_INTERP, int argc, ARGIN(char *argv[]))
+{
+    ASSERT_ARGS(parseflags_minimal)
+
+    int pos = 0;
+    const char *arg;
+    while (pos < argc) {
+        arg = argv[pos];
+        if (STREQ(arg, "--gc")) {
+            ++pos;
+            if (pos == argc) {
+                fprintf(stderr,
+                        "main: No GC specified."
+                        "\n\nhelp: parrot -h\n");
+                exit(EXIT_FAILURE);
+            }
+            arg = argv[pos];
+            if (STREQ(arg, "ms"))
+                interp->gc_sys->sys_type = MS;
+            else if (STREQ(arg, "inf"))
+                interp->gc_sys->sys_type = INF;
+            else {
+                fprintf(stderr,
+                        "main: Unrecognized GC '%s' specified."
+                        "\n\nhelp: parrot -h\n", arg);
+                exit(EXIT_FAILURE);
+            }
+            break;
+        }
+        else if (STREQ(arg, "--hash-seed")) {
+            ++pos;
+            arg = argv[pos];
+            if (is_all_hex_digits(arg)) {
+                interp->hash_seed = strtoul(arg, NULL, 16);
+            }
+        }
+        ++pos;
+    }
+}
+
+/*
+
+=item C<static const char * parseflags(PARROT_INTERP, int *argc, char **argv[],
+Parrot_Run_core_t *core, Parrot_trace_flags *trace)>
+
+Parse Parrot's command line for options and set appropriate flags.
+
+=cut
+
+*/
+
+PARROT_CAN_RETURN_NULL
+static const char *
+parseflags(PARROT_INTERP,
+        ARGIN(int *argc), ARGIN(char **argv[]),
+        ARGIN(Parrot_Run_core_t *core), ARGIN(Parrot_trace_flags *trace))
+{
+    ASSERT_ARGS(parseflags)
+    struct longopt_opt_info opt  = LONGOPT_OPT_INFO_INIT;
+    int                     status;
+    /* g++ complains if we cast char** to const char** directly. However, nobody
+       ever complains if you const to void* first. Sure we lose a certain
+       amount of compiler-enforced type safety, but this is a rare occasion
+       with a very long explanatory comment. */
+    const char ** const _tempargv = (const char **)((void *)*argv);
+
+    if (*argc == 1) {
+        usage(stderr);
+        exit(EXIT_SUCCESS);
+    }
+
+    imcc_start_handling_flags(interp);
+
+    while ((status = longopt_get(interp, *argc, _tempargv, options,
+            &opt)) > 0) {
+        switch (opt.opt_id) {
+          case 'R':
+            if (STREQ(opt.opt_arg, "slow") || STREQ(opt.opt_arg, "bounds"))
+                *core = PARROT_SLOW_CORE;
+            else if (STREQ(opt.opt_arg, "fast") || STREQ(opt.opt_arg, "function"))
+                *core = PARROT_FAST_CORE;
+            else if (STREQ(opt.opt_arg, "switch"))
+                *core = PARROT_SWITCH_CORE;
+            else if (STREQ(opt.opt_arg, "cgp"))
+                *core = PARROT_CGP_CORE;
+            else if (STREQ(opt.opt_arg, "cgoto"))
+                *core = PARROT_CGOTO_CORE;
+            else if (STREQ(opt.opt_arg, "jit"))
+                *core = PARROT_FAST_CORE;
+            else if (STREQ(opt.opt_arg, "cgp-jit"))
+                *core = PARROT_CGP_CORE;
+            else if (STREQ(opt.opt_arg, "switch-jit"))
+                *core = PARROT_SWITCH_CORE;
+            else if (STREQ(opt.opt_arg, "exec"))
+                *core = PARROT_EXEC_CORE;
+            else if (STREQ(opt.opt_arg, "trace"))
+                *core = PARROT_SLOW_CORE;
+            else if (STREQ(opt.opt_arg, "profiling"))
+                *core = PARROT_PROFILING_CORE;
+            else if (STREQ(opt.opt_arg, "gcdebug"))
+                *core = PARROT_GC_DEBUG_CORE;
+            else {
+                fprintf(stderr,
+                        "main: Unrecognized runcore '%s' specified."
+                        "\n\nhelp: parrot -h\n", opt.opt_arg);
+                exit(EXIT_FAILURE);
+            }
+            break;
+          case 'g':
+            /* Handled in parseflags_minimal */
+            break;
+          case 't':
+            if (opt.opt_arg && is_all_hex_digits(opt.opt_arg)) {
+                const unsigned long _temp = strtoul(opt.opt_arg, NULL, 16);
+                const Parrot_trace_flags _temp_flag = (Parrot_trace_flags)_temp;
+                *trace = _temp_flag;
+            }
+            else
+                *trace = PARROT_TRACE_OPS_FLAG;
+            break;
+          case 'D':
+            if (opt.opt_arg && is_all_hex_digits(opt.opt_arg)) {
+                SET_DEBUG(strtoul(opt.opt_arg, NULL, 16));
+            }
+            else
+                SET_DEBUG(PARROT_MEM_STAT_DEBUG_FLAG);
+            break;
+
+          case '.':  /* Give Windows Parrot hackers an opportunity to
+                      * attach a debuggger. */
+            fgetc(stdin);
+            break;
+          case 'h':
+            help();
+            exit(EXIT_FAILURE);
+            break;
+          case 'H':
+            /* handled in parseflags_minimal */
+            break;
+          case OPT_HELP_DEBUG:
+            help_debug();
+            exit(EXIT_FAILURE);
+            break;
+          case OPT_RUNTIME_PREFIX:
+            Parrot_io_printf(interp, "%Ss\n",
+                    Parrot_get_runtime_path(interp));
+            exit(EXIT_SUCCESS);
+          case 'V':
+            Parrot_version(interp);
+            break;
+
+          case OPT_GC_DEBUG:
+#if DISABLE_GC_DEBUG
+            Parrot_warn(interp, PARROT_WARNINGS_ALL_FLAG,
+                "PARROT_GC_DEBUG is set but the binary was compiled "
+                "with DISABLE_GC_DEBUG.");
+#endif
+            SET_FLAG(PARROT_GC_DEBUG_FLAG);
+            break;
+          case OPT_DESTROY_FLAG:
+            SET_FLAG(PARROT_DESTROY_FLAG);
+            break;
+          case 'I':
+            Parrot_lib_add_path_from_cstring(interp, opt.opt_arg,
+                    PARROT_LIB_PATH_INCLUDE);
+            break;
+          case 'L':
+            Parrot_lib_add_path_from_cstring(interp, opt.opt_arg,
+                    PARROT_LIB_PATH_LIBRARY);
+            break;
+          case 'X':
+            Parrot_lib_add_path_from_cstring(interp, opt.opt_arg,
+                    PARROT_LIB_PATH_DYNEXT);
+            break;
+          default:
+            /* Delegate handling of IMCC flags to IMCC */
+            if (imcc_handle_flag(interp, &opt, core))
+                break;
+
+            /* PIRC flags handling goes here */
+            fprintf(stderr,
+                    "main: Invalid flag '%s' used.\n\nhelp: parrot -h\n",
+                    (*argv)[0]);
+            exit(EXIT_FAILURE);
+        }
+    }
+
+    if (status == -1) {
+        fprintf(stderr, "%s\n", opt.opt_error);
+        usage(stderr);
+        exit(EXIT_FAILURE);
+    }
+
+    /* reached the end of the option list and consumed all of argv */
+    if (*argc == opt.opt_index) {
+        if (interp->output_file) {
+            fprintf(stderr, "Missing program name or argument for -o\n");
+        }
+        else {
+            /* We are not looking at an option, so it must be a program name */
+            fprintf(stderr, "Missing program name\n");
+        }
+        usage(stderr);
+        exit(EXIT_FAILURE);
+    }
+
+    *argc -= opt.opt_index;
+    *argv += opt.opt_index;
+
+    return (*argv)[0];
+}
 /*
 
 =back

Modified: branches/ops_pct/src/multidispatch.c
==============================================================================
--- branches/ops_pct/src/multidispatch.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/multidispatch.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -51,7 +51,6 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-static INTVAL distance_cmp(SHIM_INTERP, INTVAL a, INTVAL b);
 static void mmd_add_multi_global(PARROT_INTERP,
     ARGIN(STRING *sub_name),
     ARGIN(PMC *sub_obj))
@@ -129,13 +128,6 @@
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
-static int mmd_search_local(PARROT_INTERP,
-    ARGIN(STRING *name),
-    ARGIN(PMC *candidates))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
-
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 static PMC * Parrot_mmd_get_cached_multi_sig(PARROT_INTERP,
@@ -151,12 +143,6 @@
         __attribute__nonnull__(3);
 
 PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static PMC* Parrot_mmd_search_scopes(PARROT_INTERP, ARGIN(STRING *meth))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
 static PMC * Parrot_mmd_sort_candidates(PARROT_INTERP,
     ARGIN(PMC *arg_tuple),
     ARGIN(PMC *cl))
@@ -164,7 +150,6 @@
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
-#define ASSERT_ARGS_distance_cmp __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_mmd_add_multi_global __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(sub_name) \
@@ -206,10 +191,6 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(cl))
-#define ASSERT_ARGS_mmd_search_local __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(name) \
-    , PARROT_ASSERT_ARG(candidates))
 #define ASSERT_ARGS_Parrot_mmd_get_cached_multi_sig \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -218,9 +199,6 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc) \
     , PARROT_ASSERT_ARG(cl))
-#define ASSERT_ARGS_Parrot_mmd_search_scopes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(meth))
 #define ASSERT_ARGS_Parrot_mmd_sort_candidates __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(arg_tuple) \
@@ -255,7 +233,7 @@
 Parrot_mmd_find_multi_from_sig_obj(PARROT_INTERP, ARGIN(STRING *name), ARGIN(PMC *invoke_sig))
 {
     ASSERT_ARGS(Parrot_mmd_find_multi_from_sig_obj)
-    PMC * const candidate_list = pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC * const candidate_list = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
     mmd_search_by_sig_obj(interp, name, invoke_sig, candidate_list);
     mmd_search_global(interp, name, candidate_list);
@@ -389,41 +367,6 @@
         VTABLE_get_pmc(interp, invoke_sig), candidates);
 }
 
-
-
-/*
-
-=item C<static INTVAL distance_cmp(PARROT_INTERP, INTVAL a, INTVAL b)>
-
-Compare distance values C<a> and C<b>. Return 1 if C<a> is larger, -1 if
-C<b> is.
-
-=cut
-
-*/
-
-static INTVAL
-distance_cmp(SHIM_INTERP, INTVAL a, INTVAL b)
-{
-    ASSERT_ARGS(distance_cmp)
-    short da = (short)(a & 0xffff);
-    short db = (short)(b & 0xffff);
-
-    /* sort first by distance */
-    if (da > db)
-        return 1;
-
-    if (da < db)
-        return -1;
-
-    /* end then by index in candidate list */
-    da = (short)(a >> 16);
-    db = (short)(b >> 16);
-
-    return da > db ? 1 : da < db ? -1 : 0;
-}
-
-
 /*
 
 =item C<static PMC* mmd_build_type_tuple_from_type_list(PARROT_INTERP, PMC
@@ -442,7 +385,7 @@
 mmd_build_type_tuple_from_type_list(PARROT_INTERP, ARGIN(PMC *type_list))
 {
     ASSERT_ARGS(mmd_build_type_tuple_from_type_list)
-    PMC   *multi_sig   = constant_pmc_new(interp, enum_class_FixedIntegerArray);
+    PMC   *multi_sig   = Parrot_pmc_new_constant(interp, enum_class_FixedIntegerArray);
     INTVAL param_count = VTABLE_elements(interp, type_list);
     INTVAL i;
 
@@ -461,7 +404,7 @@
         else if (Parrot_str_equal(interp, type_name, CONST_STRING(interp, "FLOATVAL")))
             type = enum_type_FLOATVAL;
         else
-            type = pmc_type(interp, type_name);
+            type = Parrot_pmc_get_type_str(interp, type_name);
 
         VTABLE_set_integer_keyed_int(interp, multi_sig, i, type);
     }
@@ -513,9 +456,8 @@
 Parrot_mmd_build_type_tuple_from_sig_obj(PARROT_INTERP, ARGIN(PMC *sig_obj))
 {
     ASSERT_ARGS(Parrot_mmd_build_type_tuple_from_sig_obj)
-    PMC * const  type_tuple = pmc_new(interp, enum_class_ResizableIntegerArray);
+    PMC * const  type_tuple = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
     STRING      *string_sig = VTABLE_get_string(interp, sig_obj);
-    INTVAL       tuple_size = 0;
     INTVAL       args_ended = 0;
     INTVAL       i, seen_invocant = 0;
     INTVAL       sig_len;
@@ -633,7 +575,7 @@
             if (!sig)
                 return PMCNULL;
 
-            type = pmc_type(interp, sig);
+            type = Parrot_pmc_get_type_str(interp, sig);
 
             if (type == enum_type_undef)
                 return PMCNULL;
@@ -642,11 +584,11 @@
             type = VTABLE_get_integer(interp, sig_elem);
         }
         else
-            type = pmc_type_p(interp, sig_elem);
+            type = Parrot_pmc_get_type(interp, sig_elem);
 
         /* create destination PMC only as necessary */
         if (PMC_IS_NULL(ar)) {
-            ar = pmc_new(interp, enum_class_FixedIntegerArray);
+            ar = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
             VTABLE_set_integer_native(interp, ar, n);
         }
 
@@ -884,33 +826,6 @@
 
 /*
 
-=item C<static PMC* Parrot_mmd_search_scopes(PARROT_INTERP, STRING *meth)>
-
-Search all scopes for MMD candidates matching the arguments given in
-C<arg_tuple>.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static PMC*
-Parrot_mmd_search_scopes(PARROT_INTERP, ARGIN(STRING *meth))
-{
-    ASSERT_ARGS(Parrot_mmd_search_scopes)
-    PMC * const candidates = pmc_new(interp, enum_class_ResizablePMCArray);
-    const int stop         = mmd_search_local(interp, meth, candidates);
-
-    if (!stop)
-        mmd_search_global(interp, meth, candidates);
-
-    return candidates;
-}
-
-
-/*
-
 =item C<static int Parrot_mmd_maybe_candidate(PARROT_INTERP, PMC *pmc, PMC *cl)>
 
 If the candidate C<pmc> is a Sub PMC, push it on the candidate list and
@@ -956,28 +871,6 @@
 
 /*
 
-=item C<static int mmd_search_local(PARROT_INTERP, STRING *name, PMC
-*candidates)>
-
-Search the current package namespace for matching candidates. Return
-TRUE if the MMD search should stop.
-
-=cut
-
-*/
-
-static int
-mmd_search_local(PARROT_INTERP, ARGIN(STRING *name), ARGIN(PMC *candidates))
-{
-    ASSERT_ARGS(mmd_search_local)
-    PMC * const multi_sub = Parrot_find_global_cur(interp, name);
-
-    return multi_sub && Parrot_mmd_maybe_candidate(interp, multi_sub, candidates);
-}
-
-
-/*
-
 =item C<static void mmd_search_by_sig_obj(PARROT_INTERP, STRING *name, PMC
 *sig_obj, PMC *candidates)>
 
@@ -1061,7 +954,7 @@
     PMC           *multi_sub = Parrot_get_global(interp, ns, sub_name);
 
     if (PMC_IS_NULL(multi_sub)) {
-        multi_sub = constant_pmc_new(interp, enum_class_MultiSub);
+        multi_sub = Parrot_pmc_new_constant(interp, enum_class_MultiSub);
         Parrot_set_global(interp, ns, sub_name, multi_sub);
     }
 
@@ -1094,7 +987,7 @@
     PMC        *multi_sub = Parrot_get_global(interp, ns, sub_name);
 
     if (PMC_IS_NULL(multi_sub)) {
-        multi_sub = constant_pmc_new(interp, enum_class_MultiSub);
+        multi_sub = Parrot_pmc_new_constant(interp, enum_class_MultiSub);
         Parrot_set_global(interp, ns, sub_name, multi_sub);
     }
 
@@ -1172,7 +1065,7 @@
     STRING *ns_name       = VTABLE_get_string_keyed_int(interp, type_list, 0);
 
     /* Create an NCI sub for the C function */
-    PMC    *sub_obj       = constant_pmc_new(interp, enum_class_NCI);
+    PMC    *sub_obj       = Parrot_pmc_new_constant(interp, enum_class_NCI);
     PMC    *multi_sig     = mmd_build_type_tuple_from_long_sig(interp,
                                 long_sig_str);
 
@@ -1219,7 +1112,7 @@
         STRING   *ns_name   = mmd_info[i].ns_name;
 
         /* Create an NCI sub for the C function */
-        PMC    *sub_obj       = constant_pmc_new(interp, enum_class_NCI);
+        PMC    *sub_obj       = Parrot_pmc_new_constant(interp, enum_class_NCI);
 
         VTABLE_set_pointer_keyed_str(interp, sub_obj, short_sig,
                                      F2DPTR(func_ptr));
@@ -1278,14 +1171,14 @@
     const INTVAL num_values = VTABLE_elements(interp, values);
     const INTVAL name_len   = name ? strlen(name) + 1: 0;
     const size_t id_size    = num_values * sizeof (INTVAL) + name_len;
-    INTVAL *type_ids        = (INTVAL *)mem_sys_allocate(id_size);
+    INTVAL *type_ids        = mem_gc_allocate_n_typed(interp, num_values + name_len, INTVAL);
     STRING *key;
     INTVAL  i;
 
     for (i = 0; i < num_values; i++) {
         const INTVAL id = VTABLE_type(interp, VTABLE_get_pmc_keyed_int(interp, values, i));
         if (id == 0) {
-            mem_sys_free(type_ids);
+            mem_gc_free(interp, type_ids);
             return NULL;
         }
 
@@ -1296,7 +1189,7 @@
         strcpy((char *)(type_ids + num_values), name);
 
     key = Parrot_str_new(interp, (char *)type_ids, id_size);
-    mem_sys_free(type_ids);
+    mem_gc_free(interp, type_ids);
 
     return key;
 }
@@ -1378,7 +1271,7 @@
     const INTVAL num_types  = VTABLE_elements(interp, types);
     const INTVAL name_len   = name ? strlen(name) + 1: 0;
     const size_t id_size    = num_types * sizeof (INTVAL) + name_len;
-    INTVAL * const type_ids = (INTVAL *)mem_sys_allocate(id_size);
+    INTVAL * const type_ids = mem_gc_allocate_n_typed(interp, num_types + name_len, INTVAL);
 
     STRING *key;
     INTVAL  i;
@@ -1387,7 +1280,7 @@
         const INTVAL id = VTABLE_get_integer_keyed_int(interp, types, i);
 
         if (id == 0) {
-            mem_sys_free(type_ids);
+            mem_gc_free(interp, type_ids);
             return NULL;
         }
 
@@ -1399,7 +1292,7 @@
 
     key = Parrot_str_new(interp, (char *)type_ids, id_size);
 
-    mem_sys_free(type_ids);
+    mem_gc_free(interp, type_ids);
     return key;
 }
 

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

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

Copied: branches/ops_pct/src/nci/core_thunks.nci (from r44740, trunk/src/nci/core_thunks.nci)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/src/nci/core_thunks.nci	Sun Mar  7 19:33:20 2010	(r44743, copy of r44740, trunk/src/nci/core_thunks.nci)
@@ -0,0 +1,70 @@
+# Copyright (C) 2002-2010, Parrot Foundation.
+
+# This file contains the Parrot Native Call Interface signature
+# declarations required by Parrot's core. To add signatures for extensions,
+# add to F<src/nci/extra_thunks.nci>
+
+# The format of this file is explained in F<src/nci/extra_thunks.nci>
+
+d    JOd      # Parrot builtins
+I    JOS
+P    JOl
+P    Jt
+S    JOS      # ParrotIO.readline
+I    JI       # Parrot_is_char_*
+v    JOSP     # String.trans
+v    JOS      # String.reverse
+P    JOS      # Added for os.stat
+I    JOI      # os.umask
+P    JOP      # atan2
+P    JOPS     # Namespace.get_global
+v    JOPSP    # Namespace.set_global
+
+v    JPPP     # infix MMD
+v    JPIP
+v    JPSP
+v    JPNP
+
+v    JPP      # inplace infix MMD
+v    JPI
+v    JPS
+v    JPN
+
+P    JPPP     # infix MMD new
+P    JPIP
+P    JPSP
+P    JPNP
+
+I    JPP      # MMD compare
+
+# These are needed for packfileconstanttable.pmc
+I    JPS
+I    JPN
+
+# These are needed for parrotio.pmc
+i    JP
+v    JP
+i    JPi
+i    JPii
+i    JPiii
+i    JPt
+P    JOSSS
+
+# Needed by string.pmc
+v    JOSS
+
+# Needed by integer.pmc
+S    JOI
+
+# src/pmc/nci.pmc
+v    JOb
+
+# ParrotThread creation
+i    JOP@
+I    JOP@
+I    JOIP@
+
+# other ParrotThread
+P    JO
+v    JOP
+P    Ji

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

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

Modified: branches/ops_pct/src/nci_test.c
==============================================================================
--- branches/ops_pct/src/nci_test.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/nci_test.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -67,7 +67,7 @@
 /* Function declarations.
 
 *** If you add a new test function here,
-*** please update src/libnci_test.def and src/call_list.txt too. ***
+*** please update src/libnci_test.def and src/nci/extra_thunks.nci too. ***
 
 */
 

Modified: branches/ops_pct/src/oo.c
==============================================================================
--- branches/ops_pct/src/oo.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/oo.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -152,35 +152,6 @@
 
 /*
 
-=item C<PMC * Parrot_oo_get_namespace(PARROT_INTERP, const PMC *classobj)>
-
-Lookup a namespace object from a class PMC.
-
-This function is deprecated, see TT #1069.
-Use the inspect interface in the Class PMC instead.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-PMC *
-Parrot_oo_get_namespace(SHIM_INTERP, ARGIN(const PMC *classobj))
-{
-    ASSERT_ARGS(Parrot_oo_get_namespace)
-    Parrot_Class_attributes * const _class     = PARROT_CLASS(classobj);
-    PMC          * const _namespace = _class->_namespace;
-
-    if (PMC_IS_NULL(_namespace))
-        return PMCNULL;
-
-    return _namespace;
-}
-
-
-/*
-
 =item C<PMC * Parrot_oo_get_class(PARROT_INTERP, PMC *key)>
 
 Lookup a class object from a namespace, string, or key PMC.
@@ -236,9 +207,9 @@
         if (base_type == enum_class_Key
          || base_type == enum_class_ResizableStringArray
          || base_type == enum_class_String)
-            type = pmc_type_p(interp, key);
+            type = Parrot_pmc_get_type(interp, key);
         else
-            type = pmc_type(interp, VTABLE_get_string(interp, key));
+            type = Parrot_pmc_get_type_str(interp, VTABLE_get_string(interp, key));
 
         classobj = get_pmc_proxy(interp, type);
     }
@@ -280,7 +251,7 @@
     }
     else {
         obj    = PARROT_OBJECT(pmc);
-        cloned = pmc_new_noinit(interp, enum_class_Object);
+        cloned = Parrot_pmc_new_noinit(interp, enum_class_Object);
     }
 
     _class = PARROT_CLASS(obj->_class);
@@ -371,9 +342,9 @@
 
         /* Create proxy if not found */
         if (PMC_IS_NULL(proxy)) {
-            PMC * const type_num = pmc_new(interp, enum_class_Integer);
+            PMC * const type_num = Parrot_pmc_new(interp, enum_class_Integer);
             VTABLE_set_integer_native(interp, type_num, type);
-            proxy = pmc_new_init(interp, enum_class_PMCProxy, type_num);
+            proxy = Parrot_pmc_new_init(interp, enum_class_PMCProxy, type_num);
             Parrot_pcc_invoke_method_from_c_args(interp, pmc_ns, CONST_STRING(interp, "set_class"), "P->", proxy);
         }
         return proxy;
@@ -411,7 +382,7 @@
 
         /* If not found, check for a PMC */
         if (PMC_IS_NULL(_class))
-            return get_pmc_proxy(interp, pmc_type(interp, name));
+            return get_pmc_proxy(interp, Parrot_pmc_get_type_str(interp, name));
         else
             return _class;
     }
@@ -434,14 +405,14 @@
 Parrot_oo_newclass_from_str(PARROT_INTERP, ARGIN(STRING *name))
 {
     ASSERT_ARGS(Parrot_oo_newclass_from_str)
-    PMC * const namearg  = pmc_new(interp, enum_class_String);
-    PMC * const namehash = pmc_new(interp, enum_class_Hash);
+    PMC * const namearg  = Parrot_pmc_new(interp, enum_class_String);
+    PMC * const namehash = Parrot_pmc_new(interp, enum_class_Hash);
     PMC        *classobj;
 
     VTABLE_set_string_native(interp, namearg, name);
     VTABLE_set_pmc_keyed_str(interp, namehash, CONST_STRING(interp, "name"), namearg);
 
-    classobj = pmc_new_init(interp, enum_class_Class, namehash);
+    classobj = Parrot_pmc_new_init(interp, enum_class_Class, namehash);
 
     PARROT_ASSERT(classobj);
     return classobj;
@@ -516,7 +487,7 @@
                 break;
         }
         if (PMC_IS_NULL(result))
-            result = pmc_new(interp, enum_class_Undef);
+            result = Parrot_pmc_new(interp, enum_class_Undef);
         VTABLE_set_pmc_keyed_str(interp, _class->parent_overrides, name, result);
     }
     if (result->vtable->base_type == enum_class_Undef)
@@ -678,12 +649,12 @@
      * pt_shared_fixup() can safely do a type lookup. */
     LOCK_INTERPRETER(interp);
     {
-        type = get_new_vtable_index(interp);
+        type = Parrot_pmc_get_new_vtable_index(interp);
     }
     {
         if (!typeid_exists) {
             PMC * const classname_hash = interp->class_hash;
-            PMC * const item           = pmc_new(interp, enum_class_Integer);
+            PMC * const item           = Parrot_pmc_new(interp, enum_class_Integer);
             /* set entry in name->type hash */
             VTABLE_set_integer_native(interp, item, type);
 
@@ -749,7 +720,7 @@
 init_object_cache(PARROT_INTERP)
 {
     ASSERT_ARGS(init_object_cache)
-    Caches * const mc = interp->caches = mem_allocate_zeroed_typed(Caches);
+    Caches * const mc = interp->caches = mem_gc_allocate_zeroed_typed(interp, Caches);
     mc->idx = NULL;
 }
 
@@ -778,8 +749,8 @@
             invalidate_type_caches(interp, i);
     }
 
-    mem_sys_free(mc->idx);
-    mem_sys_free(mc);
+    mem_gc_free(interp, mc->idx);
+    mem_gc_free(interp, mc);
 }
 
 
@@ -812,12 +783,12 @@
         Meth_cache_entry *e = mc->idx[type][i];
         while (e) {
             Meth_cache_entry * const next = e->next;
-            mem_sys_free(e);
+            mem_gc_free(interp, e);
             e = next;
         }
     }
 
-    mem_sys_free(mc->idx[type]);
+    mem_gc_free(interp, mc->idx[type]);
     mc->idx[type] = NULL;
 }
 
@@ -874,7 +845,7 @@
         return;
     }
 
-    type = pmc_type(interp, _class);
+    type = Parrot_pmc_get_type_str(interp, _class);
 
     if (type == 0)
         invalidate_all_caches(interp);
@@ -958,19 +929,18 @@
 
     if (type >= mc->mc_size) {
         if (mc->idx) {
-            mc->idx = (Meth_cache_entry ***)mem_sys_realloc_zeroed(mc->idx,
-                sizeof (Meth_cache_entry ***) * (type + 1),
-                sizeof (Meth_cache_entry ***) * mc->mc_size);
+            mc->idx = mem_gc_realloc_n_typed_zeroed(interp, mc->idx,
+                    type + 1, mc->mc_size, Meth_cache_entry**);
         }
         else {
-            mc->idx = mem_allocate_n_zeroed_typed(type + 1, Meth_cache_entry**);
+            mc->idx = mem_gc_allocate_n_zeroed_typed(interp, type + 1, Meth_cache_entry**);
         }
         mc->mc_size = type + 1;
     }
 
     if (mc->idx[type] == NULL) {
-        mc->idx[type] = (Meth_cache_entry **)mem_sys_allocate_zeroed(
-            sizeof (Meth_cache_entry *) * TBL_SIZE);
+        mc->idx[type] = mem_gc_allocate_n_zeroed_typed(interp,
+                TBL_SIZE, Meth_cache_entry*);
     }
 
     e   = mc->idx[type][bits];
@@ -981,7 +951,7 @@
 
     if (!e) {
         /* when here no or no correct entry was at [bits] */
-        e     = mem_allocate_typed(Meth_cache_entry);
+        e     = mem_gc_allocate_typed(interp, Meth_cache_entry);
 
         mc->idx[type][bits] = e;
 
@@ -1159,7 +1129,7 @@
 
     /* If we never found any candidates, return an empty list. */
     if (cand_count == 0)
-        return pmc_new(interp, enum_class_ResizablePMCArray);
+        return Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
     /* If we didn't find anything to accept, error. */
     if (PMC_IS_NULL(accepted))
@@ -1229,7 +1199,7 @@
 
     if (parent_count == 0) {
         /* No parents - MRO just contains this class. */
-        result = pmc_new(interp, enum_class_ResizablePMCArray);
+        result = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
         VTABLE_push_pmc(interp, result, _class);
         return result;
     }
@@ -1246,7 +1216,7 @@
 
         /* instantiated lazily */
         if (PMC_IS_NULL(merge_list))
-            merge_list = pmc_new(interp, enum_class_ResizablePMCArray);
+            merge_list = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
         VTABLE_push_pmc(interp, merge_list, lin);
     }
@@ -1318,7 +1288,7 @@
     /* We need to check for conflicts before we do the composition. We
      * put each method that would be OK to add into a proposal list, and
      * bail out right away if we find a problem. */
-    proposed_add_methods = pmc_new(interp, enum_class_Hash);
+    proposed_add_methods = Parrot_pmc_new(interp, enum_class_Hash);
     methods_iter         = VTABLE_get_iter(interp, methods);
 
     while (VTABLE_get_bool(interp, methods_iter)) {

Modified: branches/ops_pct/src/ops/bit.ops
==============================================================================
--- branches/ops_pct/src/ops/bit.ops	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/ops/bit.ops	Sun Mar  7 19:33:20 2010	(r44743)
@@ -63,11 +63,15 @@
 }
 
 inline op band(invar PMC, in INT) :base_core {
-    VTABLE_i_bitwise_and_int(interp, $1, $2);
+    const INTVAL a = VTABLE_get_integer(interp, $1);
+    const INTVAL b = a & $2;
+    VTABLE_set_integer_native(interp, $1, b);
 }
 
 inline op band(invar PMC, invar PMC) :base_core {
-    VTABLE_i_bitwise_and(interp, $1, $2);
+    const INTVAL a = VTABLE_get_integer(interp, $1);
+    const INTVAL b = VTABLE_get_integer(interp, $2);
+    VTABLE_set_integer_native(interp, $1, a & b);
 }
 
 inline op band(out INT, in INT, in INT) :base_core {
@@ -75,11 +79,14 @@
 }
 
 inline op band(invar PMC, invar PMC, in INT) :base_core {
-    $1 = VTABLE_bitwise_and_int(interp, $2, $3, $1);
+    const INTVAL a = VTABLE_get_integer(interp, $2);
+    VTABLE_set_integer_native(interp, $1, a & $3);
 }
 
 inline op band(invar PMC, invar PMC, invar PMC) :base_core {
-    $1 = VTABLE_bitwise_and(interp, $2, $3, $1);
+    const INTVAL a = VTABLE_get_integer(interp, $2);
+    const INTVAL b = VTABLE_get_integer(interp, $3);
+    VTABLE_set_integer_native(interp, $1, a & b);
 }
 
 =item B<bands>(inout STR, in STR)
@@ -107,11 +114,16 @@
 }
 
 inline op bands(invar PMC, in STR) :base_core {
-    VTABLE_i_bitwise_ands_str(interp, $1, $2);
+    STRING * const a = VTABLE_get_string(interp, $1);
+    STRING * const b = Parrot_str_bitwise_and(interp, a, $2, NULL);
+    VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bands(invar PMC, invar PMC) :base_core {
-    VTABLE_i_bitwise_ands(interp, $1, $2);
+    STRING * a = VTABLE_get_string(interp, $1);
+    STRING * b = VTABLE_get_string(interp, $2);
+    a = Parrot_str_bitwise_and(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, $1, a);
 }
 
 inline op bands(out STR, in STR, in STR) :base_core {
@@ -119,11 +131,16 @@
 }
 
 inline op bands(invar PMC, invar PMC, in STR) :base_core {
-    $1 = VTABLE_bitwise_ands_str(interp, $2, $3, $1);
+    STRING * const a = VTABLE_get_string(interp, $2);
+    STRING * const b = Parrot_str_bitwise_and(interp, a, $3, NULL);
+    VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bands(invar PMC, invar PMC, invar PMC) :base_core {
-    $1 = VTABLE_bitwise_ands(interp, $2, $3, $1);
+    STRING * const a = VTABLE_get_string(interp, $2);
+    STRING * const b = VTABLE_get_string(interp, $3);
+    STRING * const c = Parrot_str_bitwise_and(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, $1, c);
 }
 
 ########################################
@@ -149,11 +166,15 @@
 }
 
 inline op bnot(invar PMC) :base_core {
-    VTABLE_i_bitwise_not(interp, $1);
+    const INTVAL a = VTABLE_get_integer(interp, $1);
+    VTABLE_set_integer_native(interp, $1, ~a);
 }
 
 inline op bnot(out PMC, invar PMC) :base_core {
-    $1 = VTABLE_bitwise_not(interp, $2, $1);
+    const INTVAL a = VTABLE_get_integer(interp, $2);
+    PMC * const b = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
+    VTABLE_set_integer_native(interp, b, ~a);
+    $1 = b;
 }
 
 =item B<bnots>(inout STR)
@@ -175,11 +196,15 @@
 }
 
 inline op bnots(invar PMC) :base_core {
-    VTABLE_i_bitwise_nots(interp, $1);
+    STRING * a = VTABLE_get_string(interp, $1);
+    STRING * b = Parrot_str_bitwise_not(interp, a, NULL);
+    VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bnots(out PMC, invar PMC) :base_core {
-    $1 = VTABLE_bitwise_nots(interp, $2, $1);
+    STRING * a = VTABLE_get_string(interp, $2);
+    STRING * b = Parrot_str_bitwise_not(interp, a, NULL);
+    VTABLE_set_string_native(interp, $1, b);
 }
 
 ########################################
@@ -209,11 +234,14 @@
 }
 
 inline op bor(invar PMC, in INT) :base_core {
-    VTABLE_i_bitwise_or_int(interp, $1, $2);
+    const INTVAL a = VTABLE_get_integer(interp, $1);
+    VTABLE_set_integer_native(interp, $1, a | $2);
 }
 
 inline op bor(invar PMC, invar PMC) :base_core {
-    VTABLE_i_bitwise_or(interp, $1, $2);
+    const INTVAL a = VTABLE_get_integer(interp, $1);
+    const INTVAL b = VTABLE_get_integer(interp, $2);
+    VTABLE_set_integer_native(interp, $1, a | b);
 }
 
 inline op bor(out INT, in INT, in INT) :base_core {
@@ -221,11 +249,14 @@
 }
 
 inline op bor(invar PMC, invar PMC, in INT) :base_core {
-    $1 = VTABLE_bitwise_or_int(interp, $2, $3, $1);
+    const INTVAL a = VTABLE_get_integer(interp, $2);
+    VTABLE_set_integer_native(interp, $1, a | $3);
 }
 
 inline op bor(invar PMC, invar PMC, invar PMC) :base_core {
-    $1 = VTABLE_bitwise_or(interp, $2, $3, $1);
+    const INTVAL a = VTABLE_get_integer(interp, $2);
+    const INTVAL b = VTABLE_get_integer(interp, $3);
+    VTABLE_set_integer_native(interp, $1, a | b);
 }
 
 =item B<bors>(inout STR, in STR)
@@ -253,11 +284,16 @@
 }
 
 inline op bors(invar PMC, in STR) :base_core {
-    VTABLE_i_bitwise_ors_str(interp, $1, $2);
+    STRING * const a = VTABLE_get_string(interp, $1);
+    STRING * const b = Parrot_str_bitwise_or(interp, a, $2, NULL);
+    VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bors(invar PMC, invar PMC) :base_core {
-    VTABLE_i_bitwise_ors(interp, $1, $2);
+    STRING * const a = VTABLE_get_string(interp, $1);
+    STRING * const b = VTABLE_get_string(interp, $2);
+    STRING * const c = Parrot_str_bitwise_or(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, $1, c);
 }
 
 inline op bors(out STR, in STR, in STR) :base_core {
@@ -265,11 +301,16 @@
 }
 
 inline op bors(invar PMC, invar PMC, in STR) :base_core {
-    $1 = VTABLE_bitwise_ors_str(interp, $2, $3, $1);
+    STRING * const b = VTABLE_get_string(interp, $2);
+    STRING * const c = Parrot_str_bitwise_or(interp, b, $3, NULL);
+    VTABLE_set_string_native(interp, $1, c);
 }
 
 inline op bors(invar PMC, invar PMC, invar PMC) :base_core {
-    $1 = VTABLE_bitwise_ors(interp, $2, $3, $1);
+    STRING * const a = VTABLE_get_string(interp, $2);
+    STRING * const b = VTABLE_get_string(interp, $3);
+    STRING * const c = Parrot_str_bitwise_or(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, $1, c);
 }
 
 ########################################
@@ -297,11 +338,16 @@
 }
 
 inline op shl(invar PMC, in INT) :base_core {
-    VTABLE_i_bitwise_shl_int(interp, $1, $2);
+    const INTVAL a = VTABLE_get_integer(interp, $1);
+    const INTVAL b = bit_shift_left(a, $2);
+    VTABLE_set_integer_native(interp, $1, b);
 }
 
 inline op shl(invar PMC, invar PMC) :base_core {
-    VTABLE_i_bitwise_shl(interp, $1, $2);
+    const INTVAL a = VTABLE_get_integer(interp, $1);
+    const INTVAL b = VTABLE_get_integer(interp, $2);
+    const INTVAL c = bit_shift_left(a, b);
+    VTABLE_set_integer_native(interp, $1, c);
 }
 
 inline op shl(out INT, in INT, in INT) :base_core {
@@ -309,11 +355,16 @@
 }
 
 inline op shl(invar PMC, invar PMC, in INT) :base_core {
-    $1 = VTABLE_bitwise_shl_int(interp, $2, $3, $1);
+    const INTVAL a = VTABLE_get_integer(interp, $2);
+    const INTVAL b = bit_shift_left(a, $3);
+    VTABLE_set_integer_native(interp, $1, b);
 }
 
 inline op shl(invar PMC, invar PMC, invar PMC) :base_core {
-    $1 = VTABLE_bitwise_shl(interp, $2, $3, $1);
+    const INTVAL a = VTABLE_get_integer(interp, $2);
+    const INTVAL b = VTABLE_get_integer(interp, $3);
+    const INTVAL c = bit_shift_left(a, b);
+    VTABLE_set_integer_native(interp, $1, c);
 }
 
 ########################################
@@ -342,11 +393,16 @@
 }
 
 inline op shr(invar PMC, in INT) :base_core {
-    VTABLE_i_bitwise_shr_int(interp, $1, $2);
+    const INTVAL a = VTABLE_get_integer(interp, $1);
+    const INTVAL b = bit_shift_left(a, -$2);
+    VTABLE_set_integer_native(interp, $1, b);
 }
 
 inline op shr(invar PMC, invar PMC) :base_core {
-    VTABLE_i_bitwise_shr(interp, $1, $2);
+    const INTVAL a = VTABLE_get_integer(interp, $1);
+    const INTVAL b = VTABLE_get_integer(interp, $2);
+    const INTVAL c = bit_shift_left(a, -b);
+    VTABLE_set_integer_native(interp, $1, c);
 }
 
 inline op shr(out INT, in INT, in INT) :base_core {
@@ -355,11 +411,16 @@
 }
 
 inline op shr(invar PMC, invar PMC, in INT) :base_core {
-    $1 = VTABLE_bitwise_shr_int(interp, $2, $3, $1);
+    const INTVAL a = VTABLE_get_integer(interp, $2);
+    const INTVAL c = bit_shift_left(a, -$3);
+    VTABLE_set_integer_native(interp, $1, c);
 }
 
 inline op shr(invar PMC, invar PMC, invar PMC) :base_core {
-    $1 = VTABLE_bitwise_shr(interp, $2, $3, $1);
+    const INTVAL a = VTABLE_get_integer(interp, $2);
+    const INTVAL b = VTABLE_get_integer(interp, $3);
+    const INTVAL c = bit_shift_left(a, -b);
+    VTABLE_set_integer_native(interp, $1, c);
 }
 
 ########################################
@@ -383,19 +444,22 @@
 =cut
 
 inline op lsr(out INT, in INT) :base_core {
-    /*
-     * lvalue casts are evil, but this one isn't evil enough to kill.
-     * it's just casting a signed integral to the equivalent unsigned.
-     */
-    LVALUE_CAST(UINTVAL, $1) >>= $2;
+    const UINTVAL a = (UINTVAL)$1;
+    const UINTVAL b = a >> $2;
+    $1 = (INTVAL)b;
 }
 
 inline op lsr(invar PMC, in INT) :base_core {
-    VTABLE_i_bitwise_lsr_int(interp, $1, $2);
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, $1);
+    const UINTVAL b = a >> $2;
+    VTABLE_set_integer_native(interp, $1, (INTVAL)b);
 }
 
 inline op lsr(invar PMC, invar PMC) :base_core {
-    VTABLE_i_bitwise_lsr(interp, $1, $2);
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, $1);
+    const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, $2);
+    const UINTVAL c = a >> b;
+    VTABLE_set_integer_native(interp, $1, (INTVAL)c);
 }
 
 inline op lsr(out INT, in INT, in INT) :base_core {
@@ -403,11 +467,17 @@
 }
 
 inline op lsr(invar PMC, invar PMC, in INT) :base_core {
-    $1 = VTABLE_bitwise_lsr_int(interp, $2, $3, $1);
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, $2);
+    const UINTVAL b = (UINTVAL)$3;
+    const UINTVAL c = a >> b;
+    VTABLE_set_integer_native(interp, $1, (INTVAL)c);
 }
 
 inline op lsr(invar PMC, invar PMC, invar PMC) :base_core {
-    $1 = VTABLE_bitwise_lsr(interp, $2, $3, $1);
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, $2);
+    const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, $3);
+    const UINTVAL c = a >> b;
+    VTABLE_set_integer_native(interp, $3, (INTVAL)c);
 }
 
 =item B<rot>(out INT, in INT, in INT, inconst INT)
@@ -433,7 +503,6 @@
     $1 = d;
 }
 
-
 ########################################
 
 =item B<bxor>(inout INT, in INT)
@@ -461,11 +530,16 @@
 }
 
 inline op bxor(invar PMC, in INT) :base_core {
-    VTABLE_i_bitwise_xor_int(interp, $1, $2);
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, $1);
+    const UINTVAL b = a ^ $2;
+    VTABLE_set_integer_native(interp, $1, (INTVAL)b);
 }
 
 inline op bxor(invar PMC, invar PMC) :base_core {
-    VTABLE_i_bitwise_xor(interp, $1, $2);
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, $1);
+    const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, $2);
+    const UINTVAL c = a ^ b;
+    VTABLE_set_integer_native(interp, $1, (INTVAL)c);
 }
 
 inline op bxor(out INT, in INT, in INT) :base_core {
@@ -473,11 +547,16 @@
 }
 
 inline op bxor(invar PMC, invar PMC, in INT) :base_core {
-    $1 = VTABLE_bitwise_xor_int(interp, $2, $3, $1);
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, $2);
+    const UINTVAL b = a ^ $3;
+    VTABLE_set_integer_native(interp, $1, (INTVAL)b);
 }
 
 inline op bxor(invar PMC, invar PMC, invar PMC) :base_core {
-    $1 = VTABLE_bitwise_xor(interp, $2, $3, $1);
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, $2);
+    const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, $3);
+    const UINTVAL c = a ^ b;
+    VTABLE_set_integer_native(interp, $1, (INTVAL)c);
 }
 
 =item B<bxors>(inout STR, in STR)
@@ -505,11 +584,16 @@
 }
 
 inline op bxors(invar PMC, in STR) :base_core {
-    VTABLE_i_bitwise_xors_str(interp, $1, $2);
+    STRING *a = VTABLE_get_string(interp, $1);
+    STRING *b = Parrot_str_bitwise_xor(interp, a, $2, NULL);
+    VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bxors(invar PMC, invar PMC) :base_core {
-    VTABLE_i_bitwise_xors(interp, $1, $2);
+    STRING *a = VTABLE_get_string(interp, $1);
+    STRING *b = VTABLE_get_string(interp, $2);
+    STRING *c = Parrot_str_bitwise_xor(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, $1, c);
 }
 
 inline op bxors(out STR, in STR, in STR) :base_core {
@@ -517,11 +601,16 @@
 }
 
 inline op bxors(invar PMC, invar PMC, in STR) :base_core {
-    $1 = VTABLE_bitwise_xors_str(interp, $2, $3, $1);
+    STRING *a = VTABLE_get_string(interp, $2);
+    STRING *b = Parrot_str_bitwise_xor(interp, a, $3, NULL);
+    VTABLE_set_string_native(interp, $1, b);
 }
 
 inline op bxors(invar PMC, invar PMC, invar PMC) :base_core {
-    $1 = VTABLE_bitwise_xors(interp, $2, $3, $1);
+    STRING *a = VTABLE_get_string(interp, $2);
+    STRING *b = VTABLE_get_string(interp, $3);
+    STRING *c = Parrot_str_bitwise_xor(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, $1, c);
 }
 
 =back

Modified: branches/ops_pct/src/ops/cmp.ops
==============================================================================
--- branches/ops_pct/src/ops/cmp.ops	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/ops/cmp.ops	Sun Mar  7 19:33:20 2010	(r44743)
@@ -87,15 +87,15 @@
 }
 
 op eq(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (VTABLE_is_equal(interp, $1, temp)) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op eq(invar PMC, in NUM, inconst LABEL) :base_core {
@@ -193,15 +193,15 @@
 }
 
 op ne(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (!VTABLE_is_equal(interp, $1, temp)) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op ne(invar PMC, in NUM, inconst LABEL) :base_core {
@@ -289,15 +289,15 @@
 }
 
 op lt(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (VTABLE_cmp(interp, $1, temp) < 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op lt(invar PMC, in NUM, inconst LABEL) :base_core {
@@ -373,15 +373,15 @@
 }
 
 op le(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (VTABLE_cmp(interp, $1, temp) <= 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op le(invar PMC, in NUM, inconst LABEL) :base_core {
@@ -433,15 +433,15 @@
 }
 
 op gt(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (VTABLE_cmp(interp, $1, temp) > 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op gt(invar PMC, in NUM, inconst LABEL) :base_core {
@@ -493,15 +493,15 @@
 }
 
 op ge(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (VTABLE_cmp(interp, $1, temp) >= 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op ge(invar PMC, in NUM, inconst LABEL) :base_core {

Modified: branches/ops_pct/src/ops/core.ops
==============================================================================
--- branches/ops_pct/src/ops/core.ops	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/ops/core.ops	Sun Mar  7 19:33:20 2010	(r44743)
@@ -88,16 +88,6 @@
 Don't use.
 (Must be op #5, CORE_OPS_wrapper__).
 
-=item B<prederef__>()
-
-Internal opcode to prederef opcodes on the fly.
-Don't use.
-(Must be op #6, CORE_OPS_prederef__).
-
-=item B<reserved>(inconst INT)
-
-Reserve 1 more fix entry.
-
 =item B<load_bytecode>(in STR)
 
 Load Parrot bytecode from file $1, and search the library path to locate the
@@ -148,21 +138,6 @@
     goto ADDRESS(pc);
 }
 
-inline op prederef__() :internal :flow {
-    opcode_t * const _this = CUR_OPCODE;
-    if (PARROT_RUNCORE_CGOTO_OPS_TEST(interp->run_core)) {
-        /* must be CGP then - check for events in not yet prederefed code */
-        Parrot_cx_runloop_wake(interp, interp->scheduler);
-    /*    _this = CHECK_EVENTS(interp, _this); */
-    }
-    do_prederef((void**)cur_opcode, interp, interp->run_core);
-    goto ADDRESS(_this); /* force this being a branch op */
-}
-
-inline op reserved(inconst INT) {
-    /* reserve 1 entries */
-}
-
 inline op load_bytecode(in STR) :load_file {
     Parrot_load_bytecode(interp, $1);
 }
@@ -467,14 +442,6 @@
 
     Parrot_pcc_merge_signature_for_tailcall(interp, parent_call_sig, this_call_sig);
 
-    /* Detach continuation from current CallContext to avoid marking dead object. */
-    /* RetContinuation will kill itself after invoke */
-    if (interp->current_cont->vtable->base_type == enum_class_RetContinuation
-        && Parrot_pcc_do_run_ops(interp, p)) {
-        PMC_cont(interp->current_cont)->from_ctx = parent_ctx;
-        Parrot_pcc_set_continuation(interp, ctx, PMCNULL);
-    }
-
     SUB_FLAG_TAILCALL_SET(interp->current_cont);
     dest = VTABLE_invoke(interp, p, dest);
     goto ADDRESS(dest);
@@ -614,7 +581,7 @@
 
     /* If no elements, hand back empty array; otherwise PMC. */
     if (!sig)
-        $1 = pmc_new(interp, enum_class_FixedIntegerArray);
+        $1 = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
     else
         $1 = sig;
 }
@@ -770,7 +737,7 @@
 =cut
 
 inline op push_eh(inconst LABEL) {
-    PMC * const eh = pmc_new(interp, enum_class_ExceptionHandler);
+    PMC * const eh = Parrot_pmc_new(interp, enum_class_ExceptionHandler);
     VTABLE_set_pointer(interp, eh, CUR_OPCODE + $1);
     Parrot_cx_add_handler_local(interp, eh);
 }
@@ -886,7 +853,7 @@
 }
 
 inline op pushmark(in INT) {
-    PMC * const newint = pmc_new(interp, enum_class_Integer);
+    PMC * const newint = Parrot_pmc_new(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, newint, $1);
     VTABLE_push_pmc(interp, interp->dynamic_env, newint);
 }
@@ -1040,7 +1007,8 @@
 }
 
 op interpinfo(out STR, in INT) {
-    $1 = interpinfo_s(interp, $2);
+    STRING * s = interpinfo_s(interp, $2);
+    $1 = s;
 }
 
 =item B<warningson>(in INT)
@@ -1330,10 +1298,10 @@
         const char * err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
                 "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
-        $1 = pmc_new(interp, enum_class_Undef);
+        $1 = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
-        $1 = pmc_new(interp, enum_class_NCI);
+        $1 = Parrot_pmc_new(interp, enum_class_NCI);
         VTABLE_set_pointer_keyed_str(interp, $1, $4, F2DPTR(p));
         PObj_get_FLAGS($1) |= PObj_private1_FLAG;
     }
@@ -1353,12 +1321,12 @@
         const char * const err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
                 "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
-        $1 = pmc_new(interp, enum_class_Undef);
+        $1 = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
         /* At this point we have the symbol's address. We just need to build
            a PMC with it so we can get and set the value */
-        $1 = pmc_new(interp, enum_class_UnManagedStruct);
+        $1 = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
         VTABLE_set_pointer(interp, $1, p);
     }
     Parrot_str_free_cstring(name);
@@ -1410,7 +1378,7 @@
                 cur_pos, NULL);
     }
     else {
-        $1 = pmc_new(interp, enum_class_Hash);
+        $1 = Parrot_pmc_new(interp, enum_class_Hash);
     }
 }
 

Modified: branches/ops_pct/src/ops/core_ops.c
==============================================================================
--- branches/ops_pct/src/ops/core_ops.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/ops/core_ops.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -25,7 +25,7 @@
 #define CONST(i) Parrot_pcc_get_constants(interp, interp->ctx)[cur_opcode[i]]
 
 
-static int get_op(const char * name, int full);
+static int get_op(PARROT_INTERP, const char * name, int full);
 
 
 
@@ -70,7 +70,7 @@
 ** Op Info Table:
 */
 
-static op_info_t core_op_info_table[1303] = {
+static op_info_t core_op_info_table[1301] = {
   { /* 0 */
     /* type PARROT_INLINE_OP, */
     "end",
@@ -79,10 +79,9 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
   { /* 1 */
     /* type PARROT_INLINE_OP, */
@@ -92,10 +91,9 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
   { /* 2 */
     /* type PARROT_INLINE_OP, */
@@ -103,12 +101,11 @@
     "cpu_ret",
     "Parrot_cpu_ret",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
   { /* 3 */
     /* type PARROT_INLINE_OP, */
@@ -116,12 +113,11 @@
     "check_events",
     "Parrot_check_events",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
   { /* 4 */
     /* type PARROT_INLINE_OP, */
@@ -129,12 +125,11 @@
     "check_events__",
     "Parrot_check_events__",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
   { /* 5 */
     /* type PARROT_INLINE_OP, */
@@ -142,41 +137,14 @@
     "wrapper__",
     "Parrot_wrapper__",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
   { /* 6 */
     /* type PARROT_INLINE_OP, */
-    "prederef__",
-    "prederef__",
-    "Parrot_prederef__",
-    /* "",  body */
-    PARROT_JUMP_ADDRESS,
-    1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
-  },
-  { /* 7 */
-    /* type PARROT_INLINE_OP, */
-    "reserved",
-    "reserved_ic",
-    "Parrot_reserved_ic",
-    /* "",  body */
-    0,
-    2,
-    { PARROT_ARG_IC },
-    { PARROT_ARGDIR_IN },
-    { 0 },
-    0
-  },
-  { /* 8 */
-    /* type PARROT_INLINE_OP, */
     "load_bytecode",
     "load_bytecode_s",
     "Parrot_load_bytecode_s",
@@ -185,10 +153,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 9 */
+  { /* 7 */
     /* type PARROT_INLINE_OP, */
     "load_bytecode",
     "load_bytecode_sc",
@@ -198,10 +165,9 @@
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 10 */
+  { /* 8 */
     /* type PARROT_INLINE_OP, */
     "load_language",
     "load_language_s",
@@ -211,10 +177,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 11 */
+  { /* 9 */
     /* type PARROT_INLINE_OP, */
     "load_language",
     "load_language_sc",
@@ -224,23 +189,21 @@
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 12 */
+  { /* 10 */
     /* type PARROT_INLINE_OP, */
     "branch",
     "branch_i",
     "Parrot_branch_i",
     /* "",  body */
-    PARROT_JUMP_RELATIVE|PARROT_JUMP_GNEXT,
+    PARROT_JUMP_RELATIVE,
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 1 },
-    0
+    { 1 }
   },
-  { /* 13 */
+  { /* 11 */
     /* type PARROT_INLINE_OP, */
     "branch",
     "branch_ic",
@@ -250,88 +213,81 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 1 },
-    0
+    { 1 }
   },
-  { /* 14 */
+  { /* 12 */
     /* type PARROT_INLINE_OP, */
     "local_branch",
     "local_branch_p_i",
     "Parrot_local_branch_p_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_RELATIVE|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    PARROT_JUMP_RELATIVE,
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 15 */
+  { /* 13 */
     /* type PARROT_INLINE_OP, */
     "local_branch",
     "local_branch_p_ic",
     "Parrot_local_branch_p_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_RELATIVE|PARROT_JUMP_ENEXT,
+    PARROT_JUMP_RELATIVE,
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 16 */
+  { /* 14 */
     /* type PARROT_INLINE_OP, */
     "local_return",
     "local_return_p",
     "Parrot_local_return_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 17 */
+  { /* 15 */
     /* type PARROT_INLINE_OP, */
     "jump",
     "jump_i",
     "Parrot_jump_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_GNEXT,
+    0,
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 1 },
-    0
+    { 1 }
   },
-  { /* 18 */
+  { /* 16 */
     /* type PARROT_INLINE_OP, */
     "jump",
     "jump_ic",
     "Parrot_jump_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 1 },
-    0
+    { 1 }
   },
-  { /* 19 */
+  { /* 17 */
     /* type PARROT_FUNCTION_OP, */
     "enternative",
     "enternative",
     "Parrot_enternative",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 20 */
+  { /* 18 */
     /* type PARROT_INLINE_OP, */
     "if",
     "if_i_ic",
@@ -341,10 +297,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 21 */
+  { /* 19 */
     /* type PARROT_INLINE_OP, */
     "if",
     "if_n_ic",
@@ -354,10 +309,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 22 */
+  { /* 20 */
     /* type PARROT_FUNCTION_OP, */
     "if",
     "if_s_ic",
@@ -367,10 +321,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 23 */
+  { /* 21 */
     /* type PARROT_FUNCTION_OP, */
     "if",
     "if_p_ic",
@@ -380,10 +333,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 24 */
+  { /* 22 */
     /* type PARROT_INLINE_OP, */
     "unless",
     "unless_i_ic",
@@ -393,10 +345,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 25 */
+  { /* 23 */
     /* type PARROT_INLINE_OP, */
     "unless",
     "unless_n_ic",
@@ -406,10 +357,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 26 */
+  { /* 24 */
     /* type PARROT_FUNCTION_OP, */
     "unless",
     "unless_s_ic",
@@ -419,10 +369,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 27 */
+  { /* 25 */
     /* type PARROT_FUNCTION_OP, */
     "unless",
     "unless_p_ic",
@@ -432,75 +381,69 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 28 */
+  { /* 26 */
     /* type PARROT_INLINE_OP, */
     "invokecc",
     "invokecc_p",
     "Parrot_invokecc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 29 */
+  { /* 27 */
     /* type PARROT_INLINE_OP, */
     "invoke",
     "invoke_p_p",
     "Parrot_invoke_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 30 */
+  { /* 28 */
     /* type PARROT_INLINE_OP, */
     "yield",
     "yield",
     "Parrot_yield",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 31 */
+  { /* 29 */
     /* type PARROT_INLINE_OP, */
     "tailcall",
     "tailcall_p",
     "Parrot_tailcall_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 32 */
+  { /* 30 */
     /* type PARROT_INLINE_OP, */
     "returncc",
     "returncc",
     "Parrot_returncc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 33 */
+  { /* 31 */
     /* type PARROT_INLINE_OP, */
     "capture_lex",
     "capture_lex_p",
@@ -510,10 +453,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 34 */
+  { /* 32 */
     /* type PARROT_INLINE_OP, */
     "newclosure",
     "newclosure_p_p",
@@ -523,10 +465,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 35 */
+  { /* 33 */
     /* type PARROT_FUNCTION_OP, */
     "set_args",
     "set_args_pc",
@@ -536,10 +477,9 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 36 */
+  { /* 34 */
     /* type PARROT_FUNCTION_OP, */
     "get_results",
     "get_results_pc",
@@ -549,10 +489,9 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 37 */
+  { /* 35 */
     /* type PARROT_FUNCTION_OP, */
     "get_params",
     "get_params_pc",
@@ -562,10 +501,9 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 38 */
+  { /* 36 */
     /* type PARROT_FUNCTION_OP, */
     "set_returns",
     "set_returns_pc",
@@ -575,10 +513,9 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 39 */
+  { /* 37 */
     /* type PARROT_INLINE_OP, */
     "result_info",
     "result_info_p",
@@ -588,10 +525,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 40 */
+  { /* 38 */
     /* type PARROT_INLINE_OP, */
     "set_addr",
     "set_addr_i_ic",
@@ -601,10 +537,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 41 */
+  { /* 39 */
     /* type PARROT_INLINE_OP, */
     "set_addr",
     "set_addr_p_ic",
@@ -614,10 +549,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 42 */
+  { /* 40 */
     /* type PARROT_INLINE_OP, */
     "set_addr",
     "set_addr_p_i",
@@ -627,10 +561,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 43 */
+  { /* 41 */
     /* type PARROT_INLINE_OP, */
     "get_addr",
     "get_addr_i_p",
@@ -640,10 +573,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 44 */
+  { /* 42 */
     /* type PARROT_INLINE_OP, */
     "schedule",
     "schedule_p",
@@ -653,10 +585,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 45 */
+  { /* 43 */
     /* type PARROT_INLINE_OP, */
     "addhandler",
     "addhandler_p",
@@ -666,10 +597,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 46 */
+  { /* 44 */
     /* type PARROT_INLINE_OP, */
     "push_eh",
     "push_eh_ic",
@@ -679,10 +609,9 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 1 },
-    0
+    { 1 }
   },
-  { /* 47 */
+  { /* 45 */
     /* type PARROT_INLINE_OP, */
     "push_eh",
     "push_eh_p",
@@ -692,10 +621,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 48 */
+  { /* 46 */
     /* type PARROT_INLINE_OP, */
     "pop_eh",
     "pop_eh",
@@ -703,51 +631,47 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 49 */
+  { /* 47 */
     /* type PARROT_INLINE_OP, */
     "throw",
     "throw_p",
     "Parrot_throw_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 50 */
+  { /* 48 */
     /* type PARROT_INLINE_OP, */
     "throw",
     "throw_p_p",
     "Parrot_throw_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 51 */
+  { /* 49 */
     /* type PARROT_INLINE_OP, */
     "rethrow",
     "rethrow_p",
     "Parrot_rethrow_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 52 */
+  { /* 50 */
     /* type PARROT_INLINE_OP, */
     "count_eh",
     "count_eh_i",
@@ -757,140 +681,129 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 53 */
+  { /* 51 */
     /* type PARROT_INLINE_OP, */
     "die",
     "die_s",
     "Parrot_die_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 54 */
+  { /* 52 */
     /* type PARROT_INLINE_OP, */
     "die",
     "die_sc",
     "Parrot_die_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 55 */
+  { /* 53 */
     /* type PARROT_INLINE_OP, */
     "die",
     "die_p",
     "Parrot_die_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 56 */
+  { /* 54 */
     /* type PARROT_INLINE_OP, */
     "die",
     "die_pc",
     "Parrot_die_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 57 */
+  { /* 55 */
     /* type PARROT_INLINE_OP, */
     "die",
     "die_i_i",
     "Parrot_die_i_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 58 */
+  { /* 56 */
     /* type PARROT_INLINE_OP, */
     "die",
     "die_ic_i",
     "Parrot_die_ic_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     3,
     { PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 59 */
+  { /* 57 */
     /* type PARROT_INLINE_OP, */
     "die",
     "die_i_ic",
     "Parrot_die_i_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 60 */
+  { /* 58 */
     /* type PARROT_INLINE_OP, */
     "die",
     "die_ic_ic",
     "Parrot_die_ic_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 61 */
+  { /* 59 */
     /* type PARROT_INLINE_OP, */
     "exit",
     "exit_i",
     "Parrot_exit_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 62 */
+  { /* 60 */
     /* type PARROT_INLINE_OP, */
     "exit",
     "exit_ic",
     "Parrot_exit_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 63 */
+  { /* 61 */
     /* type PARROT_INLINE_OP, */
     "pushmark",
     "pushmark_i",
@@ -900,10 +813,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 64 */
+  { /* 62 */
     /* type PARROT_INLINE_OP, */
     "pushmark",
     "pushmark_ic",
@@ -913,36 +825,33 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 65 */
+  { /* 63 */
     /* type PARROT_INLINE_OP, */
     "popmark",
     "popmark_i",
     "Parrot_popmark_i",
     /* "",  body */
-    PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 66 */
+  { /* 64 */
     /* type PARROT_INLINE_OP, */
     "popmark",
     "popmark_ic",
     "Parrot_popmark_ic",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 67 */
+  { /* 65 */
     /* type PARROT_INLINE_OP, */
     "pushaction",
     "pushaction_p",
@@ -952,114 +861,105 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 68 */
+  { /* 66 */
     /* type PARROT_INLINE_OP, */
     "debug",
     "debug_i",
     "Parrot_debug_i",
     /* "",  body */
-    PARROT_JUMP_ENEXT|PARROT_JUMP_RESTART|PARROT_JUMP_GNEXT,
+    0,
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 69 */
+  { /* 67 */
     /* type PARROT_INLINE_OP, */
     "debug",
     "debug_ic",
     "Parrot_debug_ic",
     /* "",  body */
-    PARROT_JUMP_ENEXT|PARROT_JUMP_RESTART,
+    0,
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 70 */
+  { /* 68 */
     /* type PARROT_INLINE_OP, */
     "bounds",
     "bounds_i",
     "Parrot_bounds_i",
     /* "",  body */
-    PARROT_JUMP_ENEXT|PARROT_JUMP_RESTART|PARROT_JUMP_GNEXT,
+    0,
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 71 */
+  { /* 69 */
     /* type PARROT_INLINE_OP, */
     "bounds",
     "bounds_ic",
     "Parrot_bounds_ic",
     /* "",  body */
-    PARROT_JUMP_ENEXT|PARROT_JUMP_RESTART,
+    0,
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 72 */
+  { /* 70 */
     /* type PARROT_INLINE_OP, */
     "profile",
     "profile_i",
     "Parrot_profile_i",
     /* "",  body */
-    PARROT_JUMP_ENEXT|PARROT_JUMP_RESTART|PARROT_JUMP_GNEXT,
+    0,
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 73 */
+  { /* 71 */
     /* type PARROT_INLINE_OP, */
     "profile",
     "profile_ic",
     "Parrot_profile_ic",
     /* "",  body */
-    PARROT_JUMP_ENEXT|PARROT_JUMP_RESTART,
+    0,
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 74 */
+  { /* 72 */
     /* type PARROT_INLINE_OP, */
     "trace",
     "trace_i",
     "Parrot_trace_i",
     /* "",  body */
-    PARROT_JUMP_ENEXT|PARROT_JUMP_RESTART|PARROT_JUMP_GNEXT,
+    0,
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 75 */
+  { /* 73 */
     /* type PARROT_INLINE_OP, */
     "trace",
     "trace_ic",
     "Parrot_trace_ic",
     /* "",  body */
-    PARROT_JUMP_ENEXT|PARROT_JUMP_RESTART,
+    0,
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 76 */
+  { /* 74 */
     /* type PARROT_INLINE_OP, */
     "gc_debug",
     "gc_debug_i",
@@ -1069,10 +969,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 77 */
+  { /* 75 */
     /* type PARROT_INLINE_OP, */
     "gc_debug",
     "gc_debug_ic",
@@ -1082,10 +981,9 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 78 */
+  { /* 76 */
     /* type PARROT_FUNCTION_OP, */
     "interpinfo",
     "interpinfo_i_i",
@@ -1095,10 +993,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 79 */
+  { /* 77 */
     /* type PARROT_FUNCTION_OP, */
     "interpinfo",
     "interpinfo_i_ic",
@@ -1108,10 +1005,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 80 */
+  { /* 78 */
     /* type PARROT_FUNCTION_OP, */
     "interpinfo",
     "interpinfo_p_i",
@@ -1121,10 +1017,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 81 */
+  { /* 79 */
     /* type PARROT_FUNCTION_OP, */
     "interpinfo",
     "interpinfo_p_ic",
@@ -1134,10 +1029,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 82 */
+  { /* 80 */
     /* type PARROT_FUNCTION_OP, */
     "interpinfo",
     "interpinfo_s_i",
@@ -1147,10 +1041,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 83 */
+  { /* 81 */
     /* type PARROT_FUNCTION_OP, */
     "interpinfo",
     "interpinfo_s_ic",
@@ -1160,10 +1053,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 84 */
+  { /* 82 */
     /* type PARROT_INLINE_OP, */
     "warningson",
     "warningson_i",
@@ -1173,10 +1065,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 85 */
+  { /* 83 */
     /* type PARROT_INLINE_OP, */
     "warningson",
     "warningson_ic",
@@ -1186,10 +1077,9 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 86 */
+  { /* 84 */
     /* type PARROT_INLINE_OP, */
     "warningsoff",
     "warningsoff_i",
@@ -1199,10 +1089,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 87 */
+  { /* 85 */
     /* type PARROT_INLINE_OP, */
     "warningsoff",
     "warningsoff_ic",
@@ -1212,10 +1101,9 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 88 */
+  { /* 86 */
     /* type PARROT_INLINE_OP, */
     "errorson",
     "errorson_i",
@@ -1225,10 +1113,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 89 */
+  { /* 87 */
     /* type PARROT_INLINE_OP, */
     "errorson",
     "errorson_ic",
@@ -1238,10 +1125,9 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 90 */
+  { /* 88 */
     /* type PARROT_INLINE_OP, */
     "errorsoff",
     "errorsoff_i",
@@ -1251,10 +1137,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 91 */
+  { /* 89 */
     /* type PARROT_INLINE_OP, */
     "errorsoff",
     "errorsoff_ic",
@@ -1264,36 +1149,33 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 92 */
+  { /* 90 */
     /* type PARROT_FUNCTION_OP, */
     "runinterp",
     "runinterp_p_i",
     "Parrot_runinterp_p_i",
     /* "",  body */
-    PARROT_JUMP_RELATIVE|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    PARROT_JUMP_RELATIVE,
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 93 */
+  { /* 91 */
     /* type PARROT_FUNCTION_OP, */
     "runinterp",
     "runinterp_p_ic",
     "Parrot_runinterp_p_ic",
     /* "",  body */
-    PARROT_JUMP_RELATIVE|PARROT_JUMP_ENEXT,
+    PARROT_JUMP_RELATIVE,
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 94 */
+  { /* 92 */
     /* type PARROT_FUNCTION_OP, */
     "getinterp",
     "getinterp_p",
@@ -1303,10 +1185,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 95 */
+  { /* 93 */
     /* type PARROT_FUNCTION_OP, */
     "sweep",
     "sweep_ic",
@@ -1316,10 +1197,9 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 96 */
+  { /* 94 */
     /* type PARROT_FUNCTION_OP, */
     "collect",
     "collect",
@@ -1327,12 +1207,11 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 97 */
+  { /* 95 */
     /* type PARROT_FUNCTION_OP, */
     "sweepoff",
     "sweepoff",
@@ -1340,12 +1219,11 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 98 */
+  { /* 96 */
     /* type PARROT_FUNCTION_OP, */
     "sweepon",
     "sweepon",
@@ -1353,12 +1231,11 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 99 */
+  { /* 97 */
     /* type PARROT_FUNCTION_OP, */
     "collectoff",
     "collectoff",
@@ -1366,12 +1243,11 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 100 */
+  { /* 98 */
     /* type PARROT_FUNCTION_OP, */
     "collecton",
     "collecton",
@@ -1379,12 +1255,11 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 101 */
+  { /* 99 */
     /* type PARROT_FUNCTION_OP, */
     "needs_destroy",
     "needs_destroy_p",
@@ -1394,10 +1269,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 102 */
+  { /* 100 */
     /* type PARROT_INLINE_OP, */
     "loadlib",
     "loadlib_p_s",
@@ -1407,10 +1281,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 103 */
+  { /* 101 */
     /* type PARROT_INLINE_OP, */
     "loadlib",
     "loadlib_p_sc",
@@ -1420,10 +1293,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 104 */
+  { /* 102 */
     /* type PARROT_FUNCTION_OP, */
     "dlfunc",
     "dlfunc_p_p_s_s",
@@ -1433,10 +1305,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 105 */
+  { /* 103 */
     /* type PARROT_FUNCTION_OP, */
     "dlfunc",
     "dlfunc_p_p_sc_s",
@@ -1446,10 +1317,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 106 */
+  { /* 104 */
     /* type PARROT_FUNCTION_OP, */
     "dlfunc",
     "dlfunc_p_p_s_sc",
@@ -1459,10 +1329,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 107 */
+  { /* 105 */
     /* type PARROT_FUNCTION_OP, */
     "dlfunc",
     "dlfunc_p_p_sc_sc",
@@ -1472,10 +1341,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 108 */
+  { /* 106 */
     /* type PARROT_FUNCTION_OP, */
     "dlvar",
     "dlvar_p_p_s",
@@ -1485,10 +1353,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 109 */
+  { /* 107 */
     /* type PARROT_FUNCTION_OP, */
     "dlvar",
     "dlvar_p_p_sc",
@@ -1498,10 +1365,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 110 */
+  { /* 108 */
     /* type PARROT_INLINE_OP, */
     "compreg",
     "compreg_s_p",
@@ -1511,10 +1377,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 111 */
+  { /* 109 */
     /* type PARROT_INLINE_OP, */
     "compreg",
     "compreg_sc_p",
@@ -1524,10 +1389,9 @@
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 112 */
+  { /* 110 */
     /* type PARROT_INLINE_OP, */
     "compreg",
     "compreg_p_s",
@@ -1537,10 +1401,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 113 */
+  { /* 111 */
     /* type PARROT_INLINE_OP, */
     "compreg",
     "compreg_p_sc",
@@ -1550,10 +1413,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 114 */
+  { /* 112 */
     /* type PARROT_FUNCTION_OP, */
     "new_callback",
     "new_callback_p_p_p_s",
@@ -1563,10 +1425,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 115 */
+  { /* 113 */
     /* type PARROT_FUNCTION_OP, */
     "new_callback",
     "new_callback_p_p_p_sc",
@@ -1576,49 +1437,45 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 116 */
+  { /* 114 */
     /* type PARROT_INLINE_OP, */
     "annotations",
     "annotations_p",
     "Parrot_annotations_p",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 117 */
+  { /* 115 */
     /* type PARROT_INLINE_OP, */
     "annotations",
     "annotations_p_s",
     "Parrot_annotations_p_s",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 118 */
+  { /* 116 */
     /* type PARROT_INLINE_OP, */
     "annotations",
     "annotations_p_sc",
     "Parrot_annotations_p_sc",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 119 */
+  { /* 117 */
     /* type PARROT_INLINE_OP, */
     "band",
     "band_i_i",
@@ -1628,10 +1485,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 120 */
+  { /* 118 */
     /* type PARROT_INLINE_OP, */
     "band",
     "band_i_ic",
@@ -1641,10 +1497,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 121 */
+  { /* 119 */
     /* type PARROT_INLINE_OP, */
     "band",
     "band_p_i",
@@ -1654,10 +1509,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 122 */
+  { /* 120 */
     /* type PARROT_INLINE_OP, */
     "band",
     "band_p_ic",
@@ -1667,10 +1521,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 123 */
+  { /* 121 */
     /* type PARROT_INLINE_OP, */
     "band",
     "band_p_p",
@@ -1680,10 +1533,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 124 */
+  { /* 122 */
     /* type PARROT_INLINE_OP, */
     "band",
     "band_i_i_i",
@@ -1693,10 +1545,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 125 */
+  { /* 123 */
     /* type PARROT_INLINE_OP, */
     "band",
     "band_i_ic_i",
@@ -1706,10 +1557,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 126 */
+  { /* 124 */
     /* type PARROT_INLINE_OP, */
     "band",
     "band_i_i_ic",
@@ -1719,10 +1569,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 127 */
+  { /* 125 */
     /* type PARROT_INLINE_OP, */
     "band",
     "band_p_p_i",
@@ -1732,10 +1581,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 128 */
+  { /* 126 */
     /* type PARROT_INLINE_OP, */
     "band",
     "band_p_p_ic",
@@ -1745,10 +1593,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 129 */
+  { /* 127 */
     /* type PARROT_INLINE_OP, */
     "band",
     "band_p_p_p",
@@ -1758,10 +1605,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 130 */
+  { /* 128 */
     /* type PARROT_INLINE_OP, */
     "bands",
     "bands_s_s",
@@ -1771,10 +1617,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 131 */
+  { /* 129 */
     /* type PARROT_INLINE_OP, */
     "bands",
     "bands_s_sc",
@@ -1784,10 +1629,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 132 */
+  { /* 130 */
     /* type PARROT_INLINE_OP, */
     "bands",
     "bands_p_s",
@@ -1797,10 +1641,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 133 */
+  { /* 131 */
     /* type PARROT_INLINE_OP, */
     "bands",
     "bands_p_sc",
@@ -1810,10 +1653,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 134 */
+  { /* 132 */
     /* type PARROT_INLINE_OP, */
     "bands",
     "bands_p_p",
@@ -1823,10 +1665,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 135 */
+  { /* 133 */
     /* type PARROT_INLINE_OP, */
     "bands",
     "bands_s_s_s",
@@ -1836,10 +1677,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 136 */
+  { /* 134 */
     /* type PARROT_INLINE_OP, */
     "bands",
     "bands_s_sc_s",
@@ -1849,10 +1689,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 137 */
+  { /* 135 */
     /* type PARROT_INLINE_OP, */
     "bands",
     "bands_s_s_sc",
@@ -1862,10 +1701,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 138 */
+  { /* 136 */
     /* type PARROT_INLINE_OP, */
     "bands",
     "bands_p_p_s",
@@ -1875,10 +1713,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 139 */
+  { /* 137 */
     /* type PARROT_INLINE_OP, */
     "bands",
     "bands_p_p_sc",
@@ -1888,10 +1725,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 140 */
+  { /* 138 */
     /* type PARROT_INLINE_OP, */
     "bands",
     "bands_p_p_p",
@@ -1901,10 +1737,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 141 */
+  { /* 139 */
     /* type PARROT_INLINE_OP, */
     "bnot",
     "bnot_i",
@@ -1914,10 +1749,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 142 */
+  { /* 140 */
     /* type PARROT_INLINE_OP, */
     "bnot",
     "bnot_i_i",
@@ -1927,10 +1761,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 143 */
+  { /* 141 */
     /* type PARROT_INLINE_OP, */
     "bnot",
     "bnot_p",
@@ -1940,10 +1773,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 144 */
+  { /* 142 */
     /* type PARROT_INLINE_OP, */
     "bnot",
     "bnot_p_p",
@@ -1953,10 +1785,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 145 */
+  { /* 143 */
     /* type PARROT_INLINE_OP, */
     "bnots",
     "bnots_s",
@@ -1966,10 +1797,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 146 */
+  { /* 144 */
     /* type PARROT_INLINE_OP, */
     "bnots",
     "bnots_s_s",
@@ -1979,10 +1809,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 147 */
+  { /* 145 */
     /* type PARROT_INLINE_OP, */
     "bnots",
     "bnots_s_sc",
@@ -1992,10 +1821,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 148 */
+  { /* 146 */
     /* type PARROT_INLINE_OP, */
     "bnots",
     "bnots_p",
@@ -2005,10 +1833,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 149 */
+  { /* 147 */
     /* type PARROT_INLINE_OP, */
     "bnots",
     "bnots_p_p",
@@ -2018,10 +1845,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 150 */
+  { /* 148 */
     /* type PARROT_INLINE_OP, */
     "bor",
     "bor_i_i",
@@ -2031,10 +1857,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 151 */
+  { /* 149 */
     /* type PARROT_INLINE_OP, */
     "bor",
     "bor_i_ic",
@@ -2044,10 +1869,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 152 */
+  { /* 150 */
     /* type PARROT_INLINE_OP, */
     "bor",
     "bor_p_i",
@@ -2057,10 +1881,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 153 */
+  { /* 151 */
     /* type PARROT_INLINE_OP, */
     "bor",
     "bor_p_ic",
@@ -2070,10 +1893,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 154 */
+  { /* 152 */
     /* type PARROT_INLINE_OP, */
     "bor",
     "bor_p_p",
@@ -2083,10 +1905,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 155 */
+  { /* 153 */
     /* type PARROT_INLINE_OP, */
     "bor",
     "bor_i_i_i",
@@ -2096,10 +1917,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 156 */
+  { /* 154 */
     /* type PARROT_INLINE_OP, */
     "bor",
     "bor_i_ic_i",
@@ -2109,10 +1929,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 157 */
+  { /* 155 */
     /* type PARROT_INLINE_OP, */
     "bor",
     "bor_i_i_ic",
@@ -2122,10 +1941,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 158 */
+  { /* 156 */
     /* type PARROT_INLINE_OP, */
     "bor",
     "bor_p_p_i",
@@ -2135,10 +1953,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 159 */
+  { /* 157 */
     /* type PARROT_INLINE_OP, */
     "bor",
     "bor_p_p_ic",
@@ -2148,10 +1965,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 160 */
+  { /* 158 */
     /* type PARROT_INLINE_OP, */
     "bor",
     "bor_p_p_p",
@@ -2161,10 +1977,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 161 */
+  { /* 159 */
     /* type PARROT_INLINE_OP, */
     "bors",
     "bors_s_s",
@@ -2174,10 +1989,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 162 */
+  { /* 160 */
     /* type PARROT_INLINE_OP, */
     "bors",
     "bors_s_sc",
@@ -2187,10 +2001,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 163 */
+  { /* 161 */
     /* type PARROT_INLINE_OP, */
     "bors",
     "bors_p_s",
@@ -2200,10 +2013,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 164 */
+  { /* 162 */
     /* type PARROT_INLINE_OP, */
     "bors",
     "bors_p_sc",
@@ -2213,10 +2025,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 165 */
+  { /* 163 */
     /* type PARROT_INLINE_OP, */
     "bors",
     "bors_p_p",
@@ -2226,10 +2037,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 166 */
+  { /* 164 */
     /* type PARROT_INLINE_OP, */
     "bors",
     "bors_s_s_s",
@@ -2239,10 +2049,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 167 */
+  { /* 165 */
     /* type PARROT_INLINE_OP, */
     "bors",
     "bors_s_sc_s",
@@ -2252,10 +2061,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 168 */
+  { /* 166 */
     /* type PARROT_INLINE_OP, */
     "bors",
     "bors_s_s_sc",
@@ -2265,10 +2073,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 169 */
+  { /* 167 */
     /* type PARROT_INLINE_OP, */
     "bors",
     "bors_p_p_s",
@@ -2278,10 +2085,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 170 */
+  { /* 168 */
     /* type PARROT_INLINE_OP, */
     "bors",
     "bors_p_p_sc",
@@ -2291,10 +2097,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 171 */
+  { /* 169 */
     /* type PARROT_INLINE_OP, */
     "bors",
     "bors_p_p_p",
@@ -2304,10 +2109,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 172 */
+  { /* 170 */
     /* type PARROT_INLINE_OP, */
     "shl",
     "shl_i_i",
@@ -2317,10 +2121,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 173 */
+  { /* 171 */
     /* type PARROT_INLINE_OP, */
     "shl",
     "shl_i_ic",
@@ -2330,10 +2133,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 174 */
+  { /* 172 */
     /* type PARROT_INLINE_OP, */
     "shl",
     "shl_p_i",
@@ -2343,10 +2145,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 175 */
+  { /* 173 */
     /* type PARROT_INLINE_OP, */
     "shl",
     "shl_p_ic",
@@ -2356,10 +2157,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 176 */
+  { /* 174 */
     /* type PARROT_INLINE_OP, */
     "shl",
     "shl_p_p",
@@ -2369,10 +2169,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 177 */
+  { /* 175 */
     /* type PARROT_INLINE_OP, */
     "shl",
     "shl_i_i_i",
@@ -2382,10 +2181,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 178 */
+  { /* 176 */
     /* type PARROT_INLINE_OP, */
     "shl",
     "shl_i_ic_i",
@@ -2395,10 +2193,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 179 */
+  { /* 177 */
     /* type PARROT_INLINE_OP, */
     "shl",
     "shl_i_i_ic",
@@ -2408,10 +2205,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 180 */
+  { /* 178 */
     /* type PARROT_INLINE_OP, */
     "shl",
     "shl_p_p_i",
@@ -2421,10 +2217,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 181 */
+  { /* 179 */
     /* type PARROT_INLINE_OP, */
     "shl",
     "shl_p_p_ic",
@@ -2434,10 +2229,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 182 */
+  { /* 180 */
     /* type PARROT_INLINE_OP, */
     "shl",
     "shl_p_p_p",
@@ -2447,10 +2241,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 183 */
+  { /* 181 */
     /* type PARROT_INLINE_OP, */
     "shr",
     "shr_i_i",
@@ -2460,10 +2253,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 184 */
+  { /* 182 */
     /* type PARROT_INLINE_OP, */
     "shr",
     "shr_i_ic",
@@ -2473,10 +2265,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 185 */
+  { /* 183 */
     /* type PARROT_INLINE_OP, */
     "shr",
     "shr_p_i",
@@ -2486,10 +2277,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 186 */
+  { /* 184 */
     /* type PARROT_INLINE_OP, */
     "shr",
     "shr_p_ic",
@@ -2499,10 +2289,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 187 */
+  { /* 185 */
     /* type PARROT_INLINE_OP, */
     "shr",
     "shr_p_p",
@@ -2512,10 +2301,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 188 */
+  { /* 186 */
     /* type PARROT_INLINE_OP, */
     "shr",
     "shr_i_i_i",
@@ -2525,10 +2313,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 189 */
+  { /* 187 */
     /* type PARROT_INLINE_OP, */
     "shr",
     "shr_i_ic_i",
@@ -2538,10 +2325,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 190 */
+  { /* 188 */
     /* type PARROT_INLINE_OP, */
     "shr",
     "shr_i_i_ic",
@@ -2551,10 +2337,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 191 */
+  { /* 189 */
     /* type PARROT_INLINE_OP, */
     "shr",
     "shr_p_p_i",
@@ -2564,10 +2349,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 192 */
+  { /* 190 */
     /* type PARROT_INLINE_OP, */
     "shr",
     "shr_p_p_ic",
@@ -2577,10 +2361,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 193 */
+  { /* 191 */
     /* type PARROT_INLINE_OP, */
     "shr",
     "shr_p_p_p",
@@ -2590,10 +2373,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 194 */
+  { /* 192 */
     /* type PARROT_INLINE_OP, */
     "lsr",
     "lsr_i_i",
@@ -2603,10 +2385,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 195 */
+  { /* 193 */
     /* type PARROT_INLINE_OP, */
     "lsr",
     "lsr_i_ic",
@@ -2616,10 +2397,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 196 */
+  { /* 194 */
     /* type PARROT_INLINE_OP, */
     "lsr",
     "lsr_p_i",
@@ -2629,10 +2409,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 197 */
+  { /* 195 */
     /* type PARROT_INLINE_OP, */
     "lsr",
     "lsr_p_ic",
@@ -2642,10 +2421,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 198 */
+  { /* 196 */
     /* type PARROT_INLINE_OP, */
     "lsr",
     "lsr_p_p",
@@ -2655,10 +2433,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 199 */
+  { /* 197 */
     /* type PARROT_INLINE_OP, */
     "lsr",
     "lsr_i_i_i",
@@ -2668,10 +2445,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 200 */
+  { /* 198 */
     /* type PARROT_INLINE_OP, */
     "lsr",
     "lsr_i_ic_i",
@@ -2681,10 +2457,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 201 */
+  { /* 199 */
     /* type PARROT_INLINE_OP, */
     "lsr",
     "lsr_i_i_ic",
@@ -2694,10 +2469,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 202 */
+  { /* 200 */
     /* type PARROT_INLINE_OP, */
     "lsr",
     "lsr_p_p_i",
@@ -2707,10 +2481,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 203 */
+  { /* 201 */
     /* type PARROT_INLINE_OP, */
     "lsr",
     "lsr_p_p_ic",
@@ -2720,10 +2493,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 204 */
+  { /* 202 */
     /* type PARROT_INLINE_OP, */
     "lsr",
     "lsr_p_p_p",
@@ -2733,10 +2505,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 205 */
+  { /* 203 */
     /* type PARROT_INLINE_OP, */
     "rot",
     "rot_i_i_i_ic",
@@ -2746,10 +2517,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 206 */
+  { /* 204 */
     /* type PARROT_INLINE_OP, */
     "rot",
     "rot_i_ic_i_ic",
@@ -2759,10 +2529,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 207 */
+  { /* 205 */
     /* type PARROT_INLINE_OP, */
     "rot",
     "rot_i_i_ic_ic",
@@ -2772,10 +2541,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 208 */
+  { /* 206 */
     /* type PARROT_INLINE_OP, */
     "bxor",
     "bxor_i_i",
@@ -2785,10 +2553,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 209 */
+  { /* 207 */
     /* type PARROT_INLINE_OP, */
     "bxor",
     "bxor_i_ic",
@@ -2798,10 +2565,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 210 */
+  { /* 208 */
     /* type PARROT_INLINE_OP, */
     "bxor",
     "bxor_p_i",
@@ -2811,10 +2577,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 211 */
+  { /* 209 */
     /* type PARROT_INLINE_OP, */
     "bxor",
     "bxor_p_ic",
@@ -2824,10 +2589,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 212 */
+  { /* 210 */
     /* type PARROT_INLINE_OP, */
     "bxor",
     "bxor_p_p",
@@ -2837,10 +2601,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 213 */
+  { /* 211 */
     /* type PARROT_INLINE_OP, */
     "bxor",
     "bxor_i_i_i",
@@ -2850,10 +2613,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 214 */
+  { /* 212 */
     /* type PARROT_INLINE_OP, */
     "bxor",
     "bxor_i_ic_i",
@@ -2863,10 +2625,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 215 */
+  { /* 213 */
     /* type PARROT_INLINE_OP, */
     "bxor",
     "bxor_i_i_ic",
@@ -2876,10 +2637,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 216 */
+  { /* 214 */
     /* type PARROT_INLINE_OP, */
     "bxor",
     "bxor_p_p_i",
@@ -2889,10 +2649,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 217 */
+  { /* 215 */
     /* type PARROT_INLINE_OP, */
     "bxor",
     "bxor_p_p_ic",
@@ -2902,10 +2661,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 218 */
+  { /* 216 */
     /* type PARROT_INLINE_OP, */
     "bxor",
     "bxor_p_p_p",
@@ -2915,10 +2673,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 219 */
+  { /* 217 */
     /* type PARROT_INLINE_OP, */
     "bxors",
     "bxors_s_s",
@@ -2928,10 +2685,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 220 */
+  { /* 218 */
     /* type PARROT_INLINE_OP, */
     "bxors",
     "bxors_s_sc",
@@ -2941,10 +2697,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 221 */
+  { /* 219 */
     /* type PARROT_INLINE_OP, */
     "bxors",
     "bxors_p_s",
@@ -2954,10 +2709,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 222 */
+  { /* 220 */
     /* type PARROT_INLINE_OP, */
     "bxors",
     "bxors_p_sc",
@@ -2967,10 +2721,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 223 */
+  { /* 221 */
     /* type PARROT_INLINE_OP, */
     "bxors",
     "bxors_p_p",
@@ -2980,10 +2733,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 224 */
+  { /* 222 */
     /* type PARROT_INLINE_OP, */
     "bxors",
     "bxors_s_s_s",
@@ -2993,10 +2745,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 225 */
+  { /* 223 */
     /* type PARROT_INLINE_OP, */
     "bxors",
     "bxors_s_sc_s",
@@ -3006,10 +2757,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 226 */
+  { /* 224 */
     /* type PARROT_INLINE_OP, */
     "bxors",
     "bxors_s_s_sc",
@@ -3019,10 +2769,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 227 */
+  { /* 225 */
     /* type PARROT_INLINE_OP, */
     "bxors",
     "bxors_p_p_s",
@@ -3032,10 +2781,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 228 */
+  { /* 226 */
     /* type PARROT_INLINE_OP, */
     "bxors",
     "bxors_p_p_sc",
@@ -3045,10 +2793,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 229 */
+  { /* 227 */
     /* type PARROT_INLINE_OP, */
     "bxors",
     "bxors_p_p_p",
@@ -3058,10 +2805,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 230 */
+  { /* 228 */
     /* type PARROT_INLINE_OP, */
     "eq",
     "eq_i_i_ic",
@@ -3071,10 +2817,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 231 */
+  { /* 229 */
     /* type PARROT_INLINE_OP, */
     "eq",
     "eq_ic_i_ic",
@@ -3084,10 +2829,9 @@
     4,
     { PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 232 */
+  { /* 230 */
     /* type PARROT_INLINE_OP, */
     "eq",
     "eq_i_ic_ic",
@@ -3097,10 +2841,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 233 */
+  { /* 231 */
     /* type PARROT_INLINE_OP, */
     "eq",
     "eq_n_n_ic",
@@ -3110,10 +2853,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 234 */
+  { /* 232 */
     /* type PARROT_INLINE_OP, */
     "eq",
     "eq_nc_n_ic",
@@ -3123,10 +2865,9 @@
     4,
     { PARROT_ARG_NC, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 235 */
+  { /* 233 */
     /* type PARROT_INLINE_OP, */
     "eq",
     "eq_n_nc_ic",
@@ -3136,10 +2877,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 236 */
+  { /* 234 */
     /* type PARROT_FUNCTION_OP, */
     "eq",
     "eq_s_s_ic",
@@ -3149,10 +2889,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 237 */
+  { /* 235 */
     /* type PARROT_FUNCTION_OP, */
     "eq",
     "eq_sc_s_ic",
@@ -3162,10 +2901,9 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 238 */
+  { /* 236 */
     /* type PARROT_FUNCTION_OP, */
     "eq",
     "eq_s_sc_ic",
@@ -3175,10 +2913,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 239 */
+  { /* 237 */
     /* type PARROT_FUNCTION_OP, */
     "eq",
     "eq_p_p_ic",
@@ -3188,10 +2925,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 240 */
+  { /* 238 */
     /* type PARROT_FUNCTION_OP, */
     "eq",
     "eq_p_i_ic",
@@ -3201,10 +2937,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 241 */
+  { /* 239 */
     /* type PARROT_FUNCTION_OP, */
     "eq",
     "eq_p_ic_ic",
@@ -3214,10 +2949,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 242 */
+  { /* 240 */
     /* type PARROT_FUNCTION_OP, */
     "eq",
     "eq_p_n_ic",
@@ -3227,10 +2961,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 243 */
+  { /* 241 */
     /* type PARROT_FUNCTION_OP, */
     "eq",
     "eq_p_nc_ic",
@@ -3240,10 +2973,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 244 */
+  { /* 242 */
     /* type PARROT_FUNCTION_OP, */
     "eq",
     "eq_p_s_ic",
@@ -3253,10 +2985,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 245 */
+  { /* 243 */
     /* type PARROT_FUNCTION_OP, */
     "eq",
     "eq_p_sc_ic",
@@ -3266,10 +2997,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 246 */
+  { /* 244 */
     /* type PARROT_FUNCTION_OP, */
     "eq_str",
     "eq_str_p_p_ic",
@@ -3279,10 +3009,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 247 */
+  { /* 245 */
     /* type PARROT_FUNCTION_OP, */
     "eq_num",
     "eq_num_p_p_ic",
@@ -3292,10 +3021,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 248 */
+  { /* 246 */
     /* type PARROT_FUNCTION_OP, */
     "eq_addr",
     "eq_addr_s_s_ic",
@@ -3305,10 +3033,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 249 */
+  { /* 247 */
     /* type PARROT_FUNCTION_OP, */
     "eq_addr",
     "eq_addr_sc_s_ic",
@@ -3318,10 +3045,9 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 250 */
+  { /* 248 */
     /* type PARROT_FUNCTION_OP, */
     "eq_addr",
     "eq_addr_s_sc_ic",
@@ -3331,10 +3057,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 251 */
+  { /* 249 */
     /* type PARROT_FUNCTION_OP, */
     "eq_addr",
     "eq_addr_sc_sc_ic",
@@ -3344,10 +3069,9 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 252 */
+  { /* 250 */
     /* type PARROT_FUNCTION_OP, */
     "eq_addr",
     "eq_addr_p_p_ic",
@@ -3357,10 +3081,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 253 */
+  { /* 251 */
     /* type PARROT_INLINE_OP, */
     "ne",
     "ne_i_i_ic",
@@ -3370,10 +3093,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 254 */
+  { /* 252 */
     /* type PARROT_INLINE_OP, */
     "ne",
     "ne_ic_i_ic",
@@ -3383,10 +3105,9 @@
     4,
     { PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 255 */
+  { /* 253 */
     /* type PARROT_INLINE_OP, */
     "ne",
     "ne_i_ic_ic",
@@ -3396,10 +3117,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 256 */
+  { /* 254 */
     /* type PARROT_INLINE_OP, */
     "ne",
     "ne_n_n_ic",
@@ -3409,10 +3129,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 257 */
+  { /* 255 */
     /* type PARROT_INLINE_OP, */
     "ne",
     "ne_nc_n_ic",
@@ -3422,10 +3141,9 @@
     4,
     { PARROT_ARG_NC, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 258 */
+  { /* 256 */
     /* type PARROT_INLINE_OP, */
     "ne",
     "ne_n_nc_ic",
@@ -3435,10 +3153,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 259 */
+  { /* 257 */
     /* type PARROT_FUNCTION_OP, */
     "ne",
     "ne_s_s_ic",
@@ -3448,10 +3165,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 260 */
+  { /* 258 */
     /* type PARROT_FUNCTION_OP, */
     "ne",
     "ne_sc_s_ic",
@@ -3461,10 +3177,9 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 261 */
+  { /* 259 */
     /* type PARROT_FUNCTION_OP, */
     "ne",
     "ne_s_sc_ic",
@@ -3474,10 +3189,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 262 */
+  { /* 260 */
     /* type PARROT_FUNCTION_OP, */
     "ne",
     "ne_p_p_ic",
@@ -3487,10 +3201,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 263 */
+  { /* 261 */
     /* type PARROT_FUNCTION_OP, */
     "ne",
     "ne_p_i_ic",
@@ -3500,10 +3213,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 264 */
+  { /* 262 */
     /* type PARROT_FUNCTION_OP, */
     "ne",
     "ne_p_ic_ic",
@@ -3513,10 +3225,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 265 */
+  { /* 263 */
     /* type PARROT_FUNCTION_OP, */
     "ne",
     "ne_p_n_ic",
@@ -3526,10 +3237,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 266 */
+  { /* 264 */
     /* type PARROT_FUNCTION_OP, */
     "ne",
     "ne_p_nc_ic",
@@ -3539,10 +3249,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 267 */
+  { /* 265 */
     /* type PARROT_FUNCTION_OP, */
     "ne",
     "ne_p_s_ic",
@@ -3552,10 +3261,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 268 */
+  { /* 266 */
     /* type PARROT_FUNCTION_OP, */
     "ne",
     "ne_p_sc_ic",
@@ -3565,10 +3273,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 269 */
+  { /* 267 */
     /* type PARROT_FUNCTION_OP, */
     "ne_str",
     "ne_str_p_p_ic",
@@ -3578,10 +3285,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 270 */
+  { /* 268 */
     /* type PARROT_FUNCTION_OP, */
     "ne_num",
     "ne_num_p_p_ic",
@@ -3591,10 +3297,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 271 */
+  { /* 269 */
     /* type PARROT_FUNCTION_OP, */
     "ne_addr",
     "ne_addr_s_s_ic",
@@ -3604,10 +3309,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 272 */
+  { /* 270 */
     /* type PARROT_FUNCTION_OP, */
     "ne_addr",
     "ne_addr_sc_s_ic",
@@ -3617,10 +3321,9 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 273 */
+  { /* 271 */
     /* type PARROT_FUNCTION_OP, */
     "ne_addr",
     "ne_addr_s_sc_ic",
@@ -3630,10 +3333,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 274 */
+  { /* 272 */
     /* type PARROT_FUNCTION_OP, */
     "ne_addr",
     "ne_addr_sc_sc_ic",
@@ -3643,10 +3345,9 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 275 */
+  { /* 273 */
     /* type PARROT_FUNCTION_OP, */
     "ne_addr",
     "ne_addr_p_p_ic",
@@ -3656,10 +3357,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 276 */
+  { /* 274 */
     /* type PARROT_INLINE_OP, */
     "lt",
     "lt_i_i_ic",
@@ -3669,10 +3369,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 277 */
+  { /* 275 */
     /* type PARROT_INLINE_OP, */
     "lt",
     "lt_ic_i_ic",
@@ -3682,10 +3381,9 @@
     4,
     { PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 278 */
+  { /* 276 */
     /* type PARROT_INLINE_OP, */
     "lt",
     "lt_i_ic_ic",
@@ -3695,10 +3393,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 279 */
+  { /* 277 */
     /* type PARROT_INLINE_OP, */
     "lt",
     "lt_n_n_ic",
@@ -3708,10 +3405,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 280 */
+  { /* 278 */
     /* type PARROT_INLINE_OP, */
     "lt",
     "lt_nc_n_ic",
@@ -3721,10 +3417,9 @@
     4,
     { PARROT_ARG_NC, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 281 */
+  { /* 279 */
     /* type PARROT_INLINE_OP, */
     "lt",
     "lt_n_nc_ic",
@@ -3734,10 +3429,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 282 */
+  { /* 280 */
     /* type PARROT_FUNCTION_OP, */
     "lt",
     "lt_s_s_ic",
@@ -3747,10 +3441,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 283 */
+  { /* 281 */
     /* type PARROT_FUNCTION_OP, */
     "lt",
     "lt_sc_s_ic",
@@ -3760,10 +3453,9 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 284 */
+  { /* 282 */
     /* type PARROT_FUNCTION_OP, */
     "lt",
     "lt_s_sc_ic",
@@ -3773,10 +3465,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 285 */
+  { /* 283 */
     /* type PARROT_FUNCTION_OP, */
     "lt",
     "lt_p_p_ic",
@@ -3786,10 +3477,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 286 */
+  { /* 284 */
     /* type PARROT_FUNCTION_OP, */
     "lt",
     "lt_p_i_ic",
@@ -3799,10 +3489,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 287 */
+  { /* 285 */
     /* type PARROT_FUNCTION_OP, */
     "lt",
     "lt_p_ic_ic",
@@ -3812,10 +3501,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 288 */
+  { /* 286 */
     /* type PARROT_FUNCTION_OP, */
     "lt",
     "lt_p_n_ic",
@@ -3825,10 +3513,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 289 */
+  { /* 287 */
     /* type PARROT_FUNCTION_OP, */
     "lt",
     "lt_p_nc_ic",
@@ -3838,10 +3525,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 290 */
+  { /* 288 */
     /* type PARROT_FUNCTION_OP, */
     "lt",
     "lt_p_s_ic",
@@ -3851,10 +3537,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 291 */
+  { /* 289 */
     /* type PARROT_FUNCTION_OP, */
     "lt",
     "lt_p_sc_ic",
@@ -3864,10 +3549,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 292 */
+  { /* 290 */
     /* type PARROT_FUNCTION_OP, */
     "lt_str",
     "lt_str_p_p_ic",
@@ -3877,10 +3561,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 293 */
+  { /* 291 */
     /* type PARROT_FUNCTION_OP, */
     "lt_num",
     "lt_num_p_p_ic",
@@ -3890,10 +3573,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 294 */
+  { /* 292 */
     /* type PARROT_INLINE_OP, */
     "le",
     "le_i_i_ic",
@@ -3903,10 +3585,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 295 */
+  { /* 293 */
     /* type PARROT_INLINE_OP, */
     "le",
     "le_ic_i_ic",
@@ -3916,10 +3597,9 @@
     4,
     { PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 296 */
+  { /* 294 */
     /* type PARROT_INLINE_OP, */
     "le",
     "le_i_ic_ic",
@@ -3929,10 +3609,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 297 */
+  { /* 295 */
     /* type PARROT_INLINE_OP, */
     "le",
     "le_n_n_ic",
@@ -3942,10 +3621,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 298 */
+  { /* 296 */
     /* type PARROT_INLINE_OP, */
     "le",
     "le_nc_n_ic",
@@ -3955,10 +3633,9 @@
     4,
     { PARROT_ARG_NC, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 299 */
+  { /* 297 */
     /* type PARROT_INLINE_OP, */
     "le",
     "le_n_nc_ic",
@@ -3968,10 +3645,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 300 */
+  { /* 298 */
     /* type PARROT_FUNCTION_OP, */
     "le",
     "le_s_s_ic",
@@ -3981,10 +3657,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 301 */
+  { /* 299 */
     /* type PARROT_FUNCTION_OP, */
     "le",
     "le_sc_s_ic",
@@ -3994,10 +3669,9 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 302 */
+  { /* 300 */
     /* type PARROT_FUNCTION_OP, */
     "le",
     "le_s_sc_ic",
@@ -4007,10 +3681,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 303 */
+  { /* 301 */
     /* type PARROT_FUNCTION_OP, */
     "le",
     "le_p_p_ic",
@@ -4020,10 +3693,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 304 */
+  { /* 302 */
     /* type PARROT_FUNCTION_OP, */
     "le",
     "le_p_i_ic",
@@ -4033,10 +3705,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 305 */
+  { /* 303 */
     /* type PARROT_FUNCTION_OP, */
     "le",
     "le_p_ic_ic",
@@ -4046,10 +3717,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 306 */
+  { /* 304 */
     /* type PARROT_FUNCTION_OP, */
     "le",
     "le_p_n_ic",
@@ -4059,10 +3729,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 307 */
+  { /* 305 */
     /* type PARROT_FUNCTION_OP, */
     "le",
     "le_p_nc_ic",
@@ -4072,10 +3741,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 308 */
+  { /* 306 */
     /* type PARROT_FUNCTION_OP, */
     "le",
     "le_p_s_ic",
@@ -4085,10 +3753,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 309 */
+  { /* 307 */
     /* type PARROT_FUNCTION_OP, */
     "le",
     "le_p_sc_ic",
@@ -4098,10 +3765,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 310 */
+  { /* 308 */
     /* type PARROT_FUNCTION_OP, */
     "le_str",
     "le_str_p_p_ic",
@@ -4111,10 +3777,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 311 */
+  { /* 309 */
     /* type PARROT_FUNCTION_OP, */
     "le_num",
     "le_num_p_p_ic",
@@ -4124,10 +3789,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 312 */
+  { /* 310 */
     /* type PARROT_FUNCTION_OP, */
     "gt",
     "gt_p_p_ic",
@@ -4137,10 +3801,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 313 */
+  { /* 311 */
     /* type PARROT_FUNCTION_OP, */
     "gt",
     "gt_p_i_ic",
@@ -4150,10 +3813,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 314 */
+  { /* 312 */
     /* type PARROT_FUNCTION_OP, */
     "gt",
     "gt_p_ic_ic",
@@ -4163,10 +3825,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 315 */
+  { /* 313 */
     /* type PARROT_FUNCTION_OP, */
     "gt",
     "gt_p_n_ic",
@@ -4176,10 +3837,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 316 */
+  { /* 314 */
     /* type PARROT_FUNCTION_OP, */
     "gt",
     "gt_p_nc_ic",
@@ -4189,10 +3849,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 317 */
+  { /* 315 */
     /* type PARROT_FUNCTION_OP, */
     "gt",
     "gt_p_s_ic",
@@ -4202,10 +3861,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 318 */
+  { /* 316 */
     /* type PARROT_FUNCTION_OP, */
     "gt",
     "gt_p_sc_ic",
@@ -4215,10 +3873,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 319 */
+  { /* 317 */
     /* type PARROT_FUNCTION_OP, */
     "gt_str",
     "gt_str_p_p_ic",
@@ -4228,10 +3885,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 320 */
+  { /* 318 */
     /* type PARROT_FUNCTION_OP, */
     "gt_num",
     "gt_num_p_p_ic",
@@ -4241,10 +3897,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 321 */
+  { /* 319 */
     /* type PARROT_FUNCTION_OP, */
     "ge",
     "ge_p_p_ic",
@@ -4254,10 +3909,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 322 */
+  { /* 320 */
     /* type PARROT_FUNCTION_OP, */
     "ge",
     "ge_p_i_ic",
@@ -4267,10 +3921,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 323 */
+  { /* 321 */
     /* type PARROT_FUNCTION_OP, */
     "ge",
     "ge_p_ic_ic",
@@ -4280,10 +3933,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 324 */
+  { /* 322 */
     /* type PARROT_FUNCTION_OP, */
     "ge",
     "ge_p_n_ic",
@@ -4293,10 +3945,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 325 */
+  { /* 323 */
     /* type PARROT_FUNCTION_OP, */
     "ge",
     "ge_p_nc_ic",
@@ -4306,10 +3957,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 326 */
+  { /* 324 */
     /* type PARROT_FUNCTION_OP, */
     "ge",
     "ge_p_s_ic",
@@ -4319,10 +3969,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 327 */
+  { /* 325 */
     /* type PARROT_FUNCTION_OP, */
     "ge",
     "ge_p_sc_ic",
@@ -4332,10 +3981,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 328 */
+  { /* 326 */
     /* type PARROT_FUNCTION_OP, */
     "ge_str",
     "ge_str_p_p_ic",
@@ -4345,10 +3993,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 329 */
+  { /* 327 */
     /* type PARROT_FUNCTION_OP, */
     "ge_num",
     "ge_num_p_p_ic",
@@ -4358,10 +4005,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 },
-    0
+    { 0, 0, 1 }
   },
-  { /* 330 */
+  { /* 328 */
     /* type PARROT_FUNCTION_OP, */
     "if_null",
     "if_null_p_ic",
@@ -4371,10 +4017,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 331 */
+  { /* 329 */
     /* type PARROT_FUNCTION_OP, */
     "if_null",
     "if_null_s_ic",
@@ -4384,10 +4029,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 332 */
+  { /* 330 */
     /* type PARROT_FUNCTION_OP, */
     "unless_null",
     "unless_null_p_ic",
@@ -4397,10 +4041,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 333 */
+  { /* 331 */
     /* type PARROT_FUNCTION_OP, */
     "unless_null",
     "unless_null_s_ic",
@@ -4410,10 +4053,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 334 */
+  { /* 332 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_i_i",
@@ -4423,10 +4065,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 335 */
+  { /* 333 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_ic_i",
@@ -4436,10 +4077,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 336 */
+  { /* 334 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_i_ic",
@@ -4449,10 +4089,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 337 */
+  { /* 335 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_n_n",
@@ -4462,10 +4101,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 338 */
+  { /* 336 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_nc_n",
@@ -4475,10 +4113,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 339 */
+  { /* 337 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_n_nc",
@@ -4488,10 +4125,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 340 */
+  { /* 338 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_s_s",
@@ -4501,10 +4137,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 341 */
+  { /* 339 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_sc_s",
@@ -4514,10 +4149,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 342 */
+  { /* 340 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_s_sc",
@@ -4527,10 +4161,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 343 */
+  { /* 341 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_p_p",
@@ -4540,10 +4173,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 344 */
+  { /* 342 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_p_i",
@@ -4553,10 +4185,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 345 */
+  { /* 343 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_p_ic",
@@ -4566,10 +4197,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 346 */
+  { /* 344 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_p_n",
@@ -4579,10 +4209,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 347 */
+  { /* 345 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_p_nc",
@@ -4592,10 +4221,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 348 */
+  { /* 346 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_p_s",
@@ -4605,10 +4233,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 349 */
+  { /* 347 */
     /* type PARROT_INLINE_OP, */
     "cmp",
     "cmp_i_p_sc",
@@ -4618,10 +4245,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 350 */
+  { /* 348 */
     /* type PARROT_INLINE_OP, */
     "cmp_str",
     "cmp_str_i_p_p",
@@ -4631,10 +4257,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 351 */
+  { /* 349 */
     /* type PARROT_INLINE_OP, */
     "cmp_num",
     "cmp_num_i_p_p",
@@ -4644,10 +4269,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 352 */
+  { /* 350 */
     /* type PARROT_INLINE_OP, */
     "cmp_pmc",
     "cmp_pmc_p_p_p",
@@ -4657,10 +4281,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 353 */
+  { /* 351 */
     /* type PARROT_INLINE_OP, */
     "issame",
     "issame_i_p_p",
@@ -4670,10 +4293,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 354 */
+  { /* 352 */
     /* type PARROT_INLINE_OP, */
     "issame",
     "issame_i_s_s",
@@ -4683,10 +4305,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 355 */
+  { /* 353 */
     /* type PARROT_INLINE_OP, */
     "issame",
     "issame_i_sc_s",
@@ -4696,10 +4317,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 356 */
+  { /* 354 */
     /* type PARROT_INLINE_OP, */
     "issame",
     "issame_i_s_sc",
@@ -4709,10 +4329,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 357 */
+  { /* 355 */
     /* type PARROT_INLINE_OP, */
     "issame",
     "issame_i_sc_sc",
@@ -4722,10 +4341,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 358 */
+  { /* 356 */
     /* type PARROT_INLINE_OP, */
     "isntsame",
     "isntsame_i_p_p",
@@ -4735,10 +4353,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 359 */
+  { /* 357 */
     /* type PARROT_INLINE_OP, */
     "isntsame",
     "isntsame_i_s_s",
@@ -4748,10 +4365,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 360 */
+  { /* 358 */
     /* type PARROT_INLINE_OP, */
     "isntsame",
     "isntsame_i_sc_s",
@@ -4761,10 +4377,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 361 */
+  { /* 359 */
     /* type PARROT_INLINE_OP, */
     "isntsame",
     "isntsame_i_s_sc",
@@ -4774,10 +4389,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 362 */
+  { /* 360 */
     /* type PARROT_INLINE_OP, */
     "isntsame",
     "isntsame_i_sc_sc",
@@ -4787,10 +4401,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 363 */
+  { /* 361 */
     /* type PARROT_INLINE_OP, */
     "istrue",
     "istrue_i_p",
@@ -4800,10 +4413,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 364 */
+  { /* 362 */
     /* type PARROT_INLINE_OP, */
     "isfalse",
     "isfalse_i_p",
@@ -4813,10 +4425,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 365 */
+  { /* 363 */
     /* type PARROT_INLINE_OP, */
     "isnull",
     "isnull_i_p",
@@ -4826,10 +4437,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 366 */
+  { /* 364 */
     /* type PARROT_INLINE_OP, */
     "isnull",
     "isnull_i_pc",
@@ -4839,10 +4449,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 367 */
+  { /* 365 */
     /* type PARROT_INLINE_OP, */
     "isnull",
     "isnull_i_s",
@@ -4852,10 +4461,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 368 */
+  { /* 366 */
     /* type PARROT_INLINE_OP, */
     "isnull",
     "isnull_i_sc",
@@ -4865,10 +4473,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 369 */
+  { /* 367 */
     /* type PARROT_INLINE_OP, */
     "isgt",
     "isgt_i_p_p",
@@ -4878,10 +4485,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 370 */
+  { /* 368 */
     /* type PARROT_INLINE_OP, */
     "isge",
     "isge_i_p_p",
@@ -4891,10 +4497,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 371 */
+  { /* 369 */
     /* type PARROT_INLINE_OP, */
     "isle",
     "isle_i_i_i",
@@ -4904,10 +4509,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 372 */
+  { /* 370 */
     /* type PARROT_INLINE_OP, */
     "isle",
     "isle_i_ic_i",
@@ -4917,10 +4521,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 373 */
+  { /* 371 */
     /* type PARROT_INLINE_OP, */
     "isle",
     "isle_i_i_ic",
@@ -4930,10 +4533,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 374 */
+  { /* 372 */
     /* type PARROT_INLINE_OP, */
     "isle",
     "isle_i_n_n",
@@ -4943,10 +4545,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 375 */
+  { /* 373 */
     /* type PARROT_INLINE_OP, */
     "isle",
     "isle_i_nc_n",
@@ -4956,10 +4557,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 376 */
+  { /* 374 */
     /* type PARROT_INLINE_OP, */
     "isle",
     "isle_i_n_nc",
@@ -4969,10 +4569,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 377 */
+  { /* 375 */
     /* type PARROT_INLINE_OP, */
     "isle",
     "isle_i_s_s",
@@ -4982,10 +4581,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 378 */
+  { /* 376 */
     /* type PARROT_INLINE_OP, */
     "isle",
     "isle_i_sc_s",
@@ -4995,10 +4593,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 379 */
+  { /* 377 */
     /* type PARROT_INLINE_OP, */
     "isle",
     "isle_i_s_sc",
@@ -5008,10 +4605,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 380 */
+  { /* 378 */
     /* type PARROT_INLINE_OP, */
     "isle",
     "isle_i_p_p",
@@ -5021,10 +4617,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 381 */
+  { /* 379 */
     /* type PARROT_INLINE_OP, */
     "islt",
     "islt_i_i_i",
@@ -5034,10 +4629,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 382 */
+  { /* 380 */
     /* type PARROT_INLINE_OP, */
     "islt",
     "islt_i_ic_i",
@@ -5047,10 +4641,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 383 */
+  { /* 381 */
     /* type PARROT_INLINE_OP, */
     "islt",
     "islt_i_i_ic",
@@ -5060,10 +4653,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 384 */
+  { /* 382 */
     /* type PARROT_INLINE_OP, */
     "islt",
     "islt_i_n_n",
@@ -5073,10 +4665,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 385 */
+  { /* 383 */
     /* type PARROT_INLINE_OP, */
     "islt",
     "islt_i_nc_n",
@@ -5086,10 +4677,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 386 */
+  { /* 384 */
     /* type PARROT_INLINE_OP, */
     "islt",
     "islt_i_n_nc",
@@ -5099,10 +4689,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 387 */
+  { /* 385 */
     /* type PARROT_INLINE_OP, */
     "islt",
     "islt_i_s_s",
@@ -5112,10 +4701,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 388 */
+  { /* 386 */
     /* type PARROT_INLINE_OP, */
     "islt",
     "islt_i_sc_s",
@@ -5125,10 +4713,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 389 */
+  { /* 387 */
     /* type PARROT_INLINE_OP, */
     "islt",
     "islt_i_s_sc",
@@ -5138,10 +4725,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 390 */
+  { /* 388 */
     /* type PARROT_INLINE_OP, */
     "islt",
     "islt_i_p_p",
@@ -5151,10 +4737,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 391 */
+  { /* 389 */
     /* type PARROT_INLINE_OP, */
     "iseq",
     "iseq_i_i_i",
@@ -5164,10 +4749,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 392 */
+  { /* 390 */
     /* type PARROT_INLINE_OP, */
     "iseq",
     "iseq_i_ic_i",
@@ -5177,10 +4761,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 393 */
+  { /* 391 */
     /* type PARROT_INLINE_OP, */
     "iseq",
     "iseq_i_i_ic",
@@ -5190,10 +4773,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 394 */
+  { /* 392 */
     /* type PARROT_INLINE_OP, */
     "iseq",
     "iseq_i_n_n",
@@ -5203,10 +4785,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 395 */
+  { /* 393 */
     /* type PARROT_INLINE_OP, */
     "iseq",
     "iseq_i_nc_n",
@@ -5216,10 +4797,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 396 */
+  { /* 394 */
     /* type PARROT_INLINE_OP, */
     "iseq",
     "iseq_i_n_nc",
@@ -5229,10 +4809,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 397 */
+  { /* 395 */
     /* type PARROT_INLINE_OP, */
     "iseq",
     "iseq_i_s_s",
@@ -5242,10 +4821,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 398 */
+  { /* 396 */
     /* type PARROT_INLINE_OP, */
     "iseq",
     "iseq_i_sc_s",
@@ -5255,10 +4833,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 399 */
+  { /* 397 */
     /* type PARROT_INLINE_OP, */
     "iseq",
     "iseq_i_s_sc",
@@ -5268,10 +4845,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 400 */
+  { /* 398 */
     /* type PARROT_INLINE_OP, */
     "iseq",
     "iseq_i_p_p",
@@ -5281,10 +4857,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 401 */
+  { /* 399 */
     /* type PARROT_INLINE_OP, */
     "isne",
     "isne_i_i_i",
@@ -5294,10 +4869,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 402 */
+  { /* 400 */
     /* type PARROT_INLINE_OP, */
     "isne",
     "isne_i_ic_i",
@@ -5307,10 +4881,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 403 */
+  { /* 401 */
     /* type PARROT_INLINE_OP, */
     "isne",
     "isne_i_i_ic",
@@ -5320,10 +4893,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 404 */
+  { /* 402 */
     /* type PARROT_INLINE_OP, */
     "isne",
     "isne_i_n_n",
@@ -5333,10 +4905,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 405 */
+  { /* 403 */
     /* type PARROT_INLINE_OP, */
     "isne",
     "isne_i_nc_n",
@@ -5346,10 +4917,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 406 */
+  { /* 404 */
     /* type PARROT_INLINE_OP, */
     "isne",
     "isne_i_n_nc",
@@ -5359,10 +4929,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 407 */
+  { /* 405 */
     /* type PARROT_INLINE_OP, */
     "isne",
     "isne_i_s_s",
@@ -5372,10 +4941,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 408 */
+  { /* 406 */
     /* type PARROT_INLINE_OP, */
     "isne",
     "isne_i_sc_s",
@@ -5385,10 +4953,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 409 */
+  { /* 407 */
     /* type PARROT_INLINE_OP, */
     "isne",
     "isne_i_s_sc",
@@ -5398,10 +4965,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 410 */
+  { /* 408 */
     /* type PARROT_INLINE_OP, */
     "isne",
     "isne_i_p_p",
@@ -5411,10 +4977,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 411 */
+  { /* 409 */
     /* type PARROT_INLINE_OP, */
     "and",
     "and_i_i_i",
@@ -5424,10 +4989,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 412 */
+  { /* 410 */
     /* type PARROT_INLINE_OP, */
     "and",
     "and_i_ic_i",
@@ -5437,10 +5001,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 413 */
+  { /* 411 */
     /* type PARROT_INLINE_OP, */
     "and",
     "and_i_i_ic",
@@ -5450,10 +5013,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 414 */
+  { /* 412 */
     /* type PARROT_INLINE_OP, */
     "and",
     "and_p_p_p",
@@ -5463,10 +5025,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 415 */
+  { /* 413 */
     /* type PARROT_INLINE_OP, */
     "not",
     "not_i",
@@ -5476,10 +5037,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 416 */
+  { /* 414 */
     /* type PARROT_INLINE_OP, */
     "not",
     "not_i_i",
@@ -5489,10 +5049,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 417 */
+  { /* 415 */
     /* type PARROT_INLINE_OP, */
     "not",
     "not_p",
@@ -5502,10 +5061,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 418 */
+  { /* 416 */
     /* type PARROT_INLINE_OP, */
     "not",
     "not_p_p",
@@ -5515,10 +5073,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 419 */
+  { /* 417 */
     /* type PARROT_INLINE_OP, */
     "or",
     "or_i_i_i",
@@ -5528,10 +5085,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 420 */
+  { /* 418 */
     /* type PARROT_INLINE_OP, */
     "or",
     "or_i_ic_i",
@@ -5541,10 +5097,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 421 */
+  { /* 419 */
     /* type PARROT_INLINE_OP, */
     "or",
     "or_i_i_ic",
@@ -5554,10 +5109,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 422 */
+  { /* 420 */
     /* type PARROT_INLINE_OP, */
     "or",
     "or_p_p_p",
@@ -5567,10 +5121,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 423 */
+  { /* 421 */
     /* type PARROT_INLINE_OP, */
     "xor",
     "xor_i_i_i",
@@ -5580,10 +5133,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 424 */
+  { /* 422 */
     /* type PARROT_INLINE_OP, */
     "xor",
     "xor_i_ic_i",
@@ -5593,10 +5145,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 425 */
+  { /* 423 */
     /* type PARROT_INLINE_OP, */
     "xor",
     "xor_i_i_ic",
@@ -5606,10 +5157,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 426 */
+  { /* 424 */
     /* type PARROT_INLINE_OP, */
     "xor",
     "xor_p_p_p",
@@ -5619,10 +5169,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 427 */
+  { /* 425 */
     /* type PARROT_FUNCTION_OP, */
     "debug_init",
     "debug_init",
@@ -5630,12 +5179,11 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 428 */
+  { /* 426 */
     /* type PARROT_FUNCTION_OP, */
     "debug_load",
     "debug_load_sc",
@@ -5645,10 +5193,9 @@
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 429 */
+  { /* 427 */
     /* type PARROT_FUNCTION_OP, */
     "debug_break",
     "debug_break",
@@ -5656,25 +5203,23 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 430 */
+  { /* 428 */
     /* type PARROT_FUNCTION_OP, */
     "debug_print",
     "debug_print",
     "Parrot_debug_print",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 431 */
+  { /* 429 */
     /* type PARROT_FUNCTION_OP, */
     "backtrace",
     "backtrace",
@@ -5682,12 +5227,11 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 432 */
+  { /* 430 */
     /* type PARROT_INLINE_OP, */
     "getline",
     "getline_i",
@@ -5697,10 +5241,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 433 */
+  { /* 431 */
     /* type PARROT_INLINE_OP, */
     "getfile",
     "getfile_s",
@@ -5710,10 +5253,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 434 */
+  { /* 432 */
     /* type PARROT_INLINE_OP, */
     "set_label",
     "set_label_p_ic",
@@ -5723,10 +5265,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 },
-    0
+    { 0, 1 }
   },
-  { /* 435 */
+  { /* 433 */
     /* type PARROT_INLINE_OP, */
     "get_label",
     "get_label_i_p",
@@ -5736,10 +5277,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 436 */
+  { /* 434 */
     /* type PARROT_INLINE_OP, */
     "close",
     "close_p",
@@ -5749,10 +5289,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 437 */
+  { /* 435 */
     /* type PARROT_INLINE_OP, */
     "fdopen",
     "fdopen_p_i_s",
@@ -5762,10 +5301,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 438 */
+  { /* 436 */
     /* type PARROT_INLINE_OP, */
     "fdopen",
     "fdopen_p_ic_s",
@@ -5775,10 +5313,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 439 */
+  { /* 437 */
     /* type PARROT_INLINE_OP, */
     "fdopen",
     "fdopen_p_i_sc",
@@ -5788,10 +5325,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 440 */
+  { /* 438 */
     /* type PARROT_INLINE_OP, */
     "fdopen",
     "fdopen_p_ic_sc",
@@ -5801,10 +5337,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 441 */
+  { /* 439 */
     /* type PARROT_INLINE_OP, */
     "getstdin",
     "getstdin_p",
@@ -5814,10 +5349,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 442 */
+  { /* 440 */
     /* type PARROT_INLINE_OP, */
     "getstdout",
     "getstdout_p",
@@ -5827,10 +5361,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 443 */
+  { /* 441 */
     /* type PARROT_INLINE_OP, */
     "getstderr",
     "getstderr_p",
@@ -5840,10 +5373,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 444 */
+  { /* 442 */
     /* type PARROT_INLINE_OP, */
     "setstdin",
     "setstdin_p",
@@ -5853,10 +5385,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 445 */
+  { /* 443 */
     /* type PARROT_INLINE_OP, */
     "setstdout",
     "setstdout_p",
@@ -5866,10 +5397,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 446 */
+  { /* 444 */
     /* type PARROT_INLINE_OP, */
     "setstderr",
     "setstderr_p",
@@ -5879,88 +5409,81 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 447 */
+  { /* 445 */
     /* type PARROT_INLINE_OP, */
     "open",
     "open_p_s_s",
     "Parrot_open_p_s_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 448 */
+  { /* 446 */
     /* type PARROT_INLINE_OP, */
     "open",
     "open_p_sc_s",
     "Parrot_open_p_sc_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 449 */
+  { /* 447 */
     /* type PARROT_INLINE_OP, */
     "open",
     "open_p_s_sc",
     "Parrot_open_p_s_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 450 */
+  { /* 448 */
     /* type PARROT_INLINE_OP, */
     "open",
     "open_p_sc_sc",
     "Parrot_open_p_sc_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 451 */
+  { /* 449 */
     /* type PARROT_INLINE_OP, */
     "open",
     "open_p_s",
     "Parrot_open_p_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 452 */
+  { /* 450 */
     /* type PARROT_INLINE_OP, */
     "open",
     "open_p_sc",
     "Parrot_open_p_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 453 */
+  { /* 451 */
     /* type PARROT_INLINE_OP, */
     "print",
     "print_i",
@@ -5970,10 +5493,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 454 */
+  { /* 452 */
     /* type PARROT_INLINE_OP, */
     "print",
     "print_ic",
@@ -5983,10 +5505,9 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 455 */
+  { /* 453 */
     /* type PARROT_INLINE_OP, */
     "print",
     "print_n",
@@ -5996,10 +5517,9 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 456 */
+  { /* 454 */
     /* type PARROT_INLINE_OP, */
     "print",
     "print_nc",
@@ -6009,10 +5529,9 @@
     2,
     { PARROT_ARG_NC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 457 */
+  { /* 455 */
     /* type PARROT_FUNCTION_OP, */
     "print",
     "print_s",
@@ -6022,10 +5541,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 458 */
+  { /* 456 */
     /* type PARROT_FUNCTION_OP, */
     "print",
     "print_sc",
@@ -6035,10 +5553,9 @@
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 459 */
+  { /* 457 */
     /* type PARROT_FUNCTION_OP, */
     "print",
     "print_p",
@@ -6048,10 +5565,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 460 */
+  { /* 458 */
     /* type PARROT_INLINE_OP, */
     "say",
     "say_i",
@@ -6061,10 +5577,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 461 */
+  { /* 459 */
     /* type PARROT_INLINE_OP, */
     "say",
     "say_ic",
@@ -6074,10 +5589,9 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 462 */
+  { /* 460 */
     /* type PARROT_INLINE_OP, */
     "say",
     "say_n",
@@ -6087,10 +5601,9 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 463 */
+  { /* 461 */
     /* type PARROT_INLINE_OP, */
     "say",
     "say_nc",
@@ -6100,10 +5613,9 @@
     2,
     { PARROT_ARG_NC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 464 */
+  { /* 462 */
     /* type PARROT_FUNCTION_OP, */
     "say",
     "say_s",
@@ -6113,10 +5625,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 465 */
+  { /* 463 */
     /* type PARROT_FUNCTION_OP, */
     "say",
     "say_sc",
@@ -6126,23 +5637,21 @@
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 466 */
+  { /* 464 */
     /* type PARROT_FUNCTION_OP, */
     "say",
     "say_p",
     "Parrot_say_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 467 */
+  { /* 465 */
     /* type PARROT_FUNCTION_OP, */
     "printerr",
     "printerr_i",
@@ -6152,10 +5661,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 468 */
+  { /* 466 */
     /* type PARROT_FUNCTION_OP, */
     "printerr",
     "printerr_ic",
@@ -6165,10 +5673,9 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 469 */
+  { /* 467 */
     /* type PARROT_FUNCTION_OP, */
     "printerr",
     "printerr_n",
@@ -6178,10 +5685,9 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 470 */
+  { /* 468 */
     /* type PARROT_FUNCTION_OP, */
     "printerr",
     "printerr_nc",
@@ -6191,10 +5697,9 @@
     2,
     { PARROT_ARG_NC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 471 */
+  { /* 469 */
     /* type PARROT_FUNCTION_OP, */
     "printerr",
     "printerr_s",
@@ -6204,10 +5709,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 472 */
+  { /* 470 */
     /* type PARROT_FUNCTION_OP, */
     "printerr",
     "printerr_sc",
@@ -6217,10 +5721,9 @@
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 473 */
+  { /* 471 */
     /* type PARROT_FUNCTION_OP, */
     "printerr",
     "printerr_p",
@@ -6230,10 +5733,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 474 */
+  { /* 472 */
     /* type PARROT_FUNCTION_OP, */
     "print",
     "print_p_i",
@@ -6243,10 +5745,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 475 */
+  { /* 473 */
     /* type PARROT_FUNCTION_OP, */
     "print",
     "print_p_ic",
@@ -6256,10 +5757,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 476 */
+  { /* 474 */
     /* type PARROT_FUNCTION_OP, */
     "print",
     "print_p_n",
@@ -6269,10 +5769,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 477 */
+  { /* 475 */
     /* type PARROT_FUNCTION_OP, */
     "print",
     "print_p_nc",
@@ -6282,10 +5781,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 478 */
+  { /* 476 */
     /* type PARROT_FUNCTION_OP, */
     "print",
     "print_p_s",
@@ -6295,10 +5793,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 479 */
+  { /* 477 */
     /* type PARROT_FUNCTION_OP, */
     "print",
     "print_p_sc",
@@ -6308,10 +5805,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 480 */
+  { /* 478 */
     /* type PARROT_FUNCTION_OP, */
     "print",
     "print_p_p",
@@ -6321,10 +5817,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 481 */
+  { /* 479 */
     /* type PARROT_FUNCTION_OP, */
     "read",
     "read_s_i",
@@ -6334,10 +5829,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 482 */
+  { /* 480 */
     /* type PARROT_FUNCTION_OP, */
     "read",
     "read_s_ic",
@@ -6347,10 +5841,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 483 */
+  { /* 481 */
     /* type PARROT_FUNCTION_OP, */
     "read",
     "read_s_p_i",
@@ -6360,10 +5853,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 484 */
+  { /* 482 */
     /* type PARROT_FUNCTION_OP, */
     "read",
     "read_s_p_ic",
@@ -6373,10 +5865,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 485 */
+  { /* 483 */
     /* type PARROT_INLINE_OP, */
     "readline",
     "readline_s_p",
@@ -6386,10 +5877,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 486 */
+  { /* 484 */
     /* type PARROT_FUNCTION_OP, */
     "peek",
     "peek_s",
@@ -6399,10 +5889,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 487 */
+  { /* 485 */
     /* type PARROT_FUNCTION_OP, */
     "peek",
     "peek_s_p",
@@ -6412,10 +5901,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 488 */
+  { /* 486 */
     /* type PARROT_FUNCTION_OP, */
     "stat",
     "stat_i_s_i",
@@ -6425,10 +5913,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 489 */
+  { /* 487 */
     /* type PARROT_FUNCTION_OP, */
     "stat",
     "stat_i_sc_i",
@@ -6438,10 +5925,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 490 */
+  { /* 488 */
     /* type PARROT_FUNCTION_OP, */
     "stat",
     "stat_i_s_ic",
@@ -6451,10 +5937,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 491 */
+  { /* 489 */
     /* type PARROT_FUNCTION_OP, */
     "stat",
     "stat_i_sc_ic",
@@ -6464,10 +5949,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 492 */
+  { /* 490 */
     /* type PARROT_FUNCTION_OP, */
     "stat",
     "stat_i_i_i",
@@ -6477,10 +5961,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 493 */
+  { /* 491 */
     /* type PARROT_FUNCTION_OP, */
     "stat",
     "stat_i_ic_i",
@@ -6490,10 +5973,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 494 */
+  { /* 492 */
     /* type PARROT_FUNCTION_OP, */
     "stat",
     "stat_i_i_ic",
@@ -6503,10 +5985,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 495 */
+  { /* 493 */
     /* type PARROT_FUNCTION_OP, */
     "stat",
     "stat_i_ic_ic",
@@ -6516,166 +5997,153 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 496 */
+  { /* 494 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_i_i",
     "Parrot_seek_p_i_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 497 */
+  { /* 495 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_ic_i",
     "Parrot_seek_p_ic_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 498 */
+  { /* 496 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_i_ic",
     "Parrot_seek_p_i_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 499 */
+  { /* 497 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_ic_ic",
     "Parrot_seek_p_ic_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 500 */
+  { /* 498 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_i_i_i",
     "Parrot_seek_p_i_i_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 501 */
+  { /* 499 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_ic_i_i",
     "Parrot_seek_p_ic_i_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 502 */
+  { /* 500 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_i_ic_i",
     "Parrot_seek_p_i_ic_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 503 */
+  { /* 501 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_ic_ic_i",
     "Parrot_seek_p_ic_ic_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 504 */
+  { /* 502 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_i_i_ic",
     "Parrot_seek_p_i_i_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 505 */
+  { /* 503 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_ic_i_ic",
     "Parrot_seek_p_ic_i_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 506 */
+  { /* 504 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_i_ic_ic",
     "Parrot_seek_p_i_ic_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 507 */
+  { /* 505 */
     /* type PARROT_FUNCTION_OP, */
     "seek",
     "seek_p_ic_ic_ic",
     "Parrot_seek_p_ic_ic_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 508 */
+  { /* 506 */
     /* type PARROT_FUNCTION_OP, */
     "tell",
     "tell_i_p",
@@ -6685,10 +6153,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 509 */
+  { /* 507 */
     /* type PARROT_FUNCTION_OP, */
     "tell",
     "tell_i_i_p",
@@ -6698,10 +6165,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 510 */
+  { /* 508 */
     /* type PARROT_INLINE_OP, */
     "abs",
     "abs_i",
@@ -6711,10 +6177,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 511 */
+  { /* 509 */
     /* type PARROT_INLINE_OP, */
     "abs",
     "abs_n",
@@ -6724,10 +6189,9 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 512 */
+  { /* 510 */
     /* type PARROT_INLINE_OP, */
     "abs",
     "abs_i_i",
@@ -6737,10 +6201,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 513 */
+  { /* 511 */
     /* type PARROT_INLINE_OP, */
     "abs",
     "abs_n_n",
@@ -6750,10 +6213,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 514 */
+  { /* 512 */
     /* type PARROT_INLINE_OP, */
     "abs",
     "abs_p",
@@ -6763,10 +6225,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 515 */
+  { /* 513 */
     /* type PARROT_INLINE_OP, */
     "abs",
     "abs_p_p",
@@ -6776,10 +6237,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 516 */
+  { /* 514 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_i_i",
@@ -6789,10 +6249,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 517 */
+  { /* 515 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_i_ic",
@@ -6802,10 +6261,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 518 */
+  { /* 516 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_n_n",
@@ -6815,10 +6273,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 519 */
+  { /* 517 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_n_nc",
@@ -6828,10 +6285,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 520 */
+  { /* 518 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_p_p",
@@ -6841,10 +6297,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 521 */
+  { /* 519 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_p_i",
@@ -6854,10 +6309,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 522 */
+  { /* 520 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_p_ic",
@@ -6867,10 +6321,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 523 */
+  { /* 521 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_p_n",
@@ -6880,10 +6333,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 524 */
+  { /* 522 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_p_nc",
@@ -6893,10 +6345,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 525 */
+  { /* 523 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_i_i_i",
@@ -6906,10 +6357,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 526 */
+  { /* 524 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_i_ic_i",
@@ -6919,10 +6369,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 527 */
+  { /* 525 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_i_i_ic",
@@ -6932,10 +6381,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 528 */
+  { /* 526 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_n_n_n",
@@ -6945,10 +6393,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 529 */
+  { /* 527 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_n_nc_n",
@@ -6958,10 +6405,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 530 */
+  { /* 528 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_n_n_nc",
@@ -6971,10 +6417,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 531 */
+  { /* 529 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_p_p_p",
@@ -6984,10 +6429,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 532 */
+  { /* 530 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_p_p_i",
@@ -6997,10 +6441,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 533 */
+  { /* 531 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_p_p_ic",
@@ -7010,10 +6453,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 534 */
+  { /* 532 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_p_p_n",
@@ -7023,10 +6465,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 535 */
+  { /* 533 */
     /* type PARROT_INLINE_OP, */
     "add",
     "add_p_p_nc",
@@ -7036,153 +6477,141 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 536 */
+  { /* 534 */
     /* type PARROT_INLINE_OP, */
     "cmod",
     "cmod_i_i_i",
     "Parrot_cmod_i_i_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 537 */
+  { /* 535 */
     /* type PARROT_INLINE_OP, */
     "cmod",
     "cmod_i_ic_i",
     "Parrot_cmod_i_ic_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 538 */
+  { /* 536 */
     /* type PARROT_INLINE_OP, */
     "cmod",
     "cmod_i_i_ic",
     "Parrot_cmod_i_i_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 539 */
+  { /* 537 */
     /* type PARROT_INLINE_OP, */
     "cmod",
     "cmod_p_p_i",
     "Parrot_cmod_p_p_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 540 */
+  { /* 538 */
     /* type PARROT_INLINE_OP, */
     "cmod",
     "cmod_p_p_ic",
     "Parrot_cmod_p_p_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 541 */
+  { /* 539 */
     /* type PARROT_INLINE_OP, */
     "cmod",
     "cmod_p_p_p",
     "Parrot_cmod_p_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 542 */
+  { /* 540 */
     /* type PARROT_INLINE_OP, */
     "cmod",
     "cmod_n_n_n",
     "Parrot_cmod_n_n_n",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 543 */
+  { /* 541 */
     /* type PARROT_INLINE_OP, */
     "cmod",
     "cmod_n_nc_n",
     "Parrot_cmod_n_nc_n",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 544 */
+  { /* 542 */
     /* type PARROT_INLINE_OP, */
     "cmod",
     "cmod_n_n_nc",
     "Parrot_cmod_n_n_nc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 545 */
+  { /* 543 */
     /* type PARROT_INLINE_OP, */
     "cmod",
     "cmod_p_p_n",
     "Parrot_cmod_p_p_n",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 546 */
+  { /* 544 */
     /* type PARROT_INLINE_OP, */
     "cmod",
     "cmod_p_p_nc",
     "Parrot_cmod_p_p_nc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 547 */
+  { /* 545 */
     /* type PARROT_INLINE_OP, */
     "dec",
     "dec_i",
@@ -7192,10 +6621,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 548 */
+  { /* 546 */
     /* type PARROT_INLINE_OP, */
     "dec",
     "dec_n",
@@ -7205,10 +6633,9 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 549 */
+  { /* 547 */
     /* type PARROT_INLINE_OP, */
     "dec",
     "dec_p",
@@ -7218,62 +6645,57 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 550 */
+  { /* 548 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_i_i",
     "Parrot_div_i_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 551 */
+  { /* 549 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_i_ic",
     "Parrot_div_i_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 552 */
+  { /* 550 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_n_n",
     "Parrot_div_n_n",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 553 */
+  { /* 551 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_n_nc",
     "Parrot_div_n_nc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 554 */
+  { /* 552 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_p_p",
@@ -7283,10 +6705,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 555 */
+  { /* 553 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_p_i",
@@ -7296,10 +6717,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 556 */
+  { /* 554 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_p_ic",
@@ -7309,10 +6729,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 557 */
+  { /* 555 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_p_n",
@@ -7322,10 +6741,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 558 */
+  { /* 556 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_p_nc",
@@ -7335,114 +6753,105 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 559 */
+  { /* 557 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_i_i_i",
     "Parrot_div_i_i_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 560 */
+  { /* 558 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_i_ic_i",
     "Parrot_div_i_ic_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 561 */
+  { /* 559 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_i_i_ic",
     "Parrot_div_i_i_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 562 */
+  { /* 560 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_i_ic_ic",
     "Parrot_div_i_ic_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 563 */
+  { /* 561 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_n_n_n",
     "Parrot_div_n_n_n",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 564 */
+  { /* 562 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_n_nc_n",
     "Parrot_div_n_nc_n",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 565 */
+  { /* 563 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_n_n_nc",
     "Parrot_div_n_n_nc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 566 */
+  { /* 564 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_n_nc_nc",
     "Parrot_div_n_nc_nc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 567 */
+  { /* 565 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_p_p_p",
@@ -7452,10 +6861,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 568 */
+  { /* 566 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_p_p_i",
@@ -7465,10 +6873,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 569 */
+  { /* 567 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_p_p_ic",
@@ -7478,10 +6885,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 570 */
+  { /* 568 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_p_p_n",
@@ -7491,10 +6897,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 571 */
+  { /* 569 */
     /* type PARROT_INLINE_OP, */
     "div",
     "div_p_p_nc",
@@ -7504,62 +6909,57 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 572 */
+  { /* 570 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_i_i",
     "Parrot_fdiv_i_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 573 */
+  { /* 571 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_i_ic",
     "Parrot_fdiv_i_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 574 */
+  { /* 572 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_n_n",
     "Parrot_fdiv_n_n",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 575 */
+  { /* 573 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_n_nc",
     "Parrot_fdiv_n_nc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 576 */
+  { /* 574 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_p_p",
@@ -7569,10 +6969,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 577 */
+  { /* 575 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_p_i",
@@ -7582,10 +6981,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 578 */
+  { /* 576 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_p_ic",
@@ -7595,10 +6993,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 579 */
+  { /* 577 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_p_n",
@@ -7608,10 +7005,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 580 */
+  { /* 578 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_p_nc",
@@ -7621,88 +7017,81 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 581 */
+  { /* 579 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_i_i_i",
     "Parrot_fdiv_i_i_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 582 */
+  { /* 580 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_i_ic_i",
     "Parrot_fdiv_i_ic_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 583 */
+  { /* 581 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_i_i_ic",
     "Parrot_fdiv_i_i_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 584 */
+  { /* 582 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_n_n_n",
     "Parrot_fdiv_n_n_n",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 585 */
+  { /* 583 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_n_nc_n",
     "Parrot_fdiv_n_nc_n",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 586 */
+  { /* 584 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_n_n_nc",
     "Parrot_fdiv_n_n_nc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 587 */
+  { /* 585 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_p_p_p",
@@ -7712,10 +7101,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 588 */
+  { /* 586 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_p_p_i",
@@ -7725,10 +7113,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 589 */
+  { /* 587 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_p_p_ic",
@@ -7738,10 +7125,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 590 */
+  { /* 588 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_p_p_n",
@@ -7751,10 +7137,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 591 */
+  { /* 589 */
     /* type PARROT_INLINE_OP, */
     "fdiv",
     "fdiv_p_p_nc",
@@ -7764,10 +7149,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 592 */
+  { /* 590 */
     /* type PARROT_INLINE_OP, */
     "ceil",
     "ceil_n",
@@ -7777,10 +7161,9 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 593 */
+  { /* 591 */
     /* type PARROT_INLINE_OP, */
     "ceil",
     "ceil_i_n",
@@ -7790,10 +7173,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 594 */
+  { /* 592 */
     /* type PARROT_INLINE_OP, */
     "ceil",
     "ceil_n_n",
@@ -7803,10 +7185,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 595 */
+  { /* 593 */
     /* type PARROT_INLINE_OP, */
     "floor",
     "floor_n",
@@ -7816,10 +7197,9 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 596 */
+  { /* 594 */
     /* type PARROT_INLINE_OP, */
     "floor",
     "floor_i_n",
@@ -7829,10 +7209,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 597 */
+  { /* 595 */
     /* type PARROT_INLINE_OP, */
     "floor",
     "floor_n_n",
@@ -7842,10 +7221,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 598 */
+  { /* 596 */
     /* type PARROT_INLINE_OP, */
     "inc",
     "inc_i",
@@ -7855,10 +7233,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 599 */
+  { /* 597 */
     /* type PARROT_INLINE_OP, */
     "inc",
     "inc_n",
@@ -7868,10 +7245,9 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 600 */
+  { /* 598 */
     /* type PARROT_INLINE_OP, */
     "inc",
     "inc_p",
@@ -7881,10 +7257,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 601 */
+  { /* 599 */
     /* type PARROT_FUNCTION_OP, */
     "mod",
     "mod_i_i",
@@ -7894,10 +7269,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 602 */
+  { /* 600 */
     /* type PARROT_FUNCTION_OP, */
     "mod",
     "mod_i_ic",
@@ -7907,10 +7281,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 603 */
+  { /* 601 */
     /* type PARROT_FUNCTION_OP, */
     "mod",
     "mod_n_n",
@@ -7920,10 +7293,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 604 */
+  { /* 602 */
     /* type PARROT_FUNCTION_OP, */
     "mod",
     "mod_n_nc",
@@ -7933,10 +7305,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 605 */
+  { /* 603 */
     /* type PARROT_INLINE_OP, */
     "mod",
     "mod_p_p",
@@ -7946,10 +7317,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 606 */
+  { /* 604 */
     /* type PARROT_INLINE_OP, */
     "mod",
     "mod_p_i",
@@ -7959,10 +7329,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 607 */
+  { /* 605 */
     /* type PARROT_INLINE_OP, */
     "mod",
     "mod_p_ic",
@@ -7972,10 +7341,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 608 */
+  { /* 606 */
     /* type PARROT_INLINE_OP, */
     "mod",
     "mod_p_n",
@@ -7985,10 +7353,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 609 */
+  { /* 607 */
     /* type PARROT_INLINE_OP, */
     "mod",
     "mod_p_nc",
@@ -7998,10 +7365,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 610 */
+  { /* 608 */
     /* type PARROT_FUNCTION_OP, */
     "mod",
     "mod_i_i_i",
@@ -8011,10 +7377,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 611 */
+  { /* 609 */
     /* type PARROT_FUNCTION_OP, */
     "mod",
     "mod_i_ic_i",
@@ -8024,10 +7389,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 612 */
+  { /* 610 */
     /* type PARROT_FUNCTION_OP, */
     "mod",
     "mod_i_i_ic",
@@ -8037,10 +7401,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 613 */
+  { /* 611 */
     /* type PARROT_FUNCTION_OP, */
     "mod",
     "mod_n_n_n",
@@ -8050,10 +7413,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 614 */
+  { /* 612 */
     /* type PARROT_FUNCTION_OP, */
     "mod",
     "mod_n_nc_n",
@@ -8063,10 +7425,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 615 */
+  { /* 613 */
     /* type PARROT_FUNCTION_OP, */
     "mod",
     "mod_n_n_nc",
@@ -8076,10 +7437,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 616 */
+  { /* 614 */
     /* type PARROT_INLINE_OP, */
     "mod",
     "mod_p_p_p",
@@ -8089,10 +7449,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 617 */
+  { /* 615 */
     /* type PARROT_INLINE_OP, */
     "mod",
     "mod_p_p_i",
@@ -8102,10 +7461,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 618 */
+  { /* 616 */
     /* type PARROT_INLINE_OP, */
     "mod",
     "mod_p_p_ic",
@@ -8115,10 +7473,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 619 */
+  { /* 617 */
     /* type PARROT_INLINE_OP, */
     "mod",
     "mod_p_p_n",
@@ -8128,10 +7485,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 620 */
+  { /* 618 */
     /* type PARROT_INLINE_OP, */
     "mod",
     "mod_p_p_nc",
@@ -8141,10 +7497,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 621 */
+  { /* 619 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_i_i",
@@ -8154,10 +7509,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 622 */
+  { /* 620 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_i_ic",
@@ -8167,10 +7521,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 623 */
+  { /* 621 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_n_n",
@@ -8180,10 +7533,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 624 */
+  { /* 622 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_n_nc",
@@ -8193,10 +7545,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 625 */
+  { /* 623 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_p_p",
@@ -8206,10 +7557,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 626 */
+  { /* 624 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_p_i",
@@ -8219,10 +7569,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 627 */
+  { /* 625 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_p_ic",
@@ -8232,10 +7581,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 628 */
+  { /* 626 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_p_n",
@@ -8245,10 +7593,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 629 */
+  { /* 627 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_p_nc",
@@ -8258,10 +7605,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 630 */
+  { /* 628 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_i_i_i",
@@ -8271,10 +7617,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 631 */
+  { /* 629 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_i_ic_i",
@@ -8284,10 +7629,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 632 */
+  { /* 630 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_i_i_ic",
@@ -8297,10 +7641,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 633 */
+  { /* 631 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_n_n_n",
@@ -8310,10 +7653,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 634 */
+  { /* 632 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_n_nc_n",
@@ -8323,10 +7665,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 635 */
+  { /* 633 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_n_n_nc",
@@ -8336,10 +7677,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 636 */
+  { /* 634 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_p_p_p",
@@ -8349,10 +7689,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 637 */
+  { /* 635 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_p_p_i",
@@ -8362,10 +7701,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 638 */
+  { /* 636 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_p_p_ic",
@@ -8375,10 +7713,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 639 */
+  { /* 637 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_p_p_n",
@@ -8388,10 +7725,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 640 */
+  { /* 638 */
     /* type PARROT_INLINE_OP, */
     "mul",
     "mul_p_p_nc",
@@ -8401,10 +7737,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 641 */
+  { /* 639 */
     /* type PARROT_INLINE_OP, */
     "neg",
     "neg_i",
@@ -8414,10 +7749,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 642 */
+  { /* 640 */
     /* type PARROT_INLINE_OP, */
     "neg",
     "neg_n",
@@ -8427,10 +7761,9 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 643 */
+  { /* 641 */
     /* type PARROT_INLINE_OP, */
     "neg",
     "neg_p",
@@ -8440,10 +7773,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 644 */
+  { /* 642 */
     /* type PARROT_INLINE_OP, */
     "neg",
     "neg_i_i",
@@ -8453,10 +7785,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 645 */
+  { /* 643 */
     /* type PARROT_INLINE_OP, */
     "neg",
     "neg_n_n",
@@ -8466,10 +7797,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 646 */
+  { /* 644 */
     /* type PARROT_INLINE_OP, */
     "neg",
     "neg_p_p",
@@ -8479,10 +7809,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 647 */
+  { /* 645 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_n_n_n",
@@ -8492,10 +7821,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 648 */
+  { /* 646 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_n_nc_n",
@@ -8505,10 +7833,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 649 */
+  { /* 647 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_n_n_nc",
@@ -8518,10 +7845,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 650 */
+  { /* 648 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_p_p_p",
@@ -8531,10 +7857,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 651 */
+  { /* 649 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_p_p_i",
@@ -8544,10 +7869,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 652 */
+  { /* 650 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_p_p_ic",
@@ -8557,10 +7881,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 653 */
+  { /* 651 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_p_p_n",
@@ -8570,10 +7893,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 654 */
+  { /* 652 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_p_p_nc",
@@ -8583,10 +7905,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 655 */
+  { /* 653 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_n_n_i",
@@ -8596,10 +7917,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 656 */
+  { /* 654 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_n_nc_i",
@@ -8609,10 +7929,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 657 */
+  { /* 655 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_n_n_ic",
@@ -8622,10 +7941,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 658 */
+  { /* 656 */
     /* type PARROT_INLINE_OP, */
     "pow",
     "pow_n_nc_ic",
@@ -8635,10 +7953,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 659 */
+  { /* 657 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_i_i",
@@ -8648,10 +7965,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 660 */
+  { /* 658 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_i_ic",
@@ -8661,10 +7977,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 661 */
+  { /* 659 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_n_n",
@@ -8674,10 +7989,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 662 */
+  { /* 660 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_n_nc",
@@ -8687,10 +8001,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 663 */
+  { /* 661 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_p_p",
@@ -8700,10 +8013,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 664 */
+  { /* 662 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_p_i",
@@ -8713,10 +8025,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 665 */
+  { /* 663 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_p_ic",
@@ -8726,10 +8037,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 666 */
+  { /* 664 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_p_n",
@@ -8739,10 +8049,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 667 */
+  { /* 665 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_p_nc",
@@ -8752,10 +8061,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 668 */
+  { /* 666 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_i_i_i",
@@ -8765,10 +8073,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 669 */
+  { /* 667 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_i_ic_i",
@@ -8778,10 +8085,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 670 */
+  { /* 668 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_i_i_ic",
@@ -8791,10 +8097,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 671 */
+  { /* 669 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_n_n_n",
@@ -8804,10 +8109,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 672 */
+  { /* 670 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_n_nc_n",
@@ -8817,10 +8121,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 673 */
+  { /* 671 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_n_n_nc",
@@ -8830,10 +8133,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 674 */
+  { /* 672 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_p_p_p",
@@ -8843,10 +8145,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 675 */
+  { /* 673 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_p_p_i",
@@ -8856,10 +8157,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 676 */
+  { /* 674 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_p_p_ic",
@@ -8869,10 +8169,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 677 */
+  { /* 675 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_p_p_n",
@@ -8882,10 +8181,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 678 */
+  { /* 676 */
     /* type PARROT_INLINE_OP, */
     "sub",
     "sub_p_p_nc",
@@ -8895,10 +8193,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 679 */
+  { /* 677 */
     /* type PARROT_INLINE_OP, */
     "sqrt",
     "sqrt_n_n",
@@ -8908,10 +8205,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 680 */
+  { /* 678 */
     /* type PARROT_INLINE_OP, */
     "acos",
     "acos_n_n",
@@ -8921,10 +8217,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 681 */
+  { /* 679 */
     /* type PARROT_INLINE_OP, */
     "asec",
     "asec_n_n",
@@ -8934,10 +8229,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 682 */
+  { /* 680 */
     /* type PARROT_INLINE_OP, */
     "asin",
     "asin_n_n",
@@ -8947,10 +8241,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 683 */
+  { /* 681 */
     /* type PARROT_INLINE_OP, */
     "atan",
     "atan_n_n",
@@ -8960,10 +8253,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 684 */
+  { /* 682 */
     /* type PARROT_INLINE_OP, */
     "atan",
     "atan_n_n_n",
@@ -8973,10 +8265,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 685 */
+  { /* 683 */
     /* type PARROT_INLINE_OP, */
     "atan",
     "atan_n_nc_n",
@@ -8986,10 +8277,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 686 */
+  { /* 684 */
     /* type PARROT_INLINE_OP, */
     "atan",
     "atan_n_n_nc",
@@ -8999,10 +8289,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 687 */
+  { /* 685 */
     /* type PARROT_INLINE_OP, */
     "cos",
     "cos_n_n",
@@ -9012,10 +8301,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 688 */
+  { /* 686 */
     /* type PARROT_INLINE_OP, */
     "cosh",
     "cosh_n_n",
@@ -9025,10 +8313,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 689 */
+  { /* 687 */
     /* type PARROT_INLINE_OP, */
     "exp",
     "exp_n_n",
@@ -9038,10 +8325,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 690 */
+  { /* 688 */
     /* type PARROT_INLINE_OP, */
     "ln",
     "ln_n_n",
@@ -9051,10 +8337,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 691 */
+  { /* 689 */
     /* type PARROT_INLINE_OP, */
     "log10",
     "log10_n_n",
@@ -9064,10 +8349,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 692 */
+  { /* 690 */
     /* type PARROT_FUNCTION_OP, */
     "log2",
     "log2_n_n",
@@ -9077,10 +8361,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 693 */
+  { /* 691 */
     /* type PARROT_INLINE_OP, */
     "sec",
     "sec_n_n",
@@ -9090,10 +8373,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 694 */
+  { /* 692 */
     /* type PARROT_INLINE_OP, */
     "sech",
     "sech_n_n",
@@ -9103,10 +8385,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 695 */
+  { /* 693 */
     /* type PARROT_INLINE_OP, */
     "sin",
     "sin_n_n",
@@ -9116,10 +8397,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 696 */
+  { /* 694 */
     /* type PARROT_INLINE_OP, */
     "sinh",
     "sinh_n_n",
@@ -9129,10 +8409,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 697 */
+  { /* 695 */
     /* type PARROT_INLINE_OP, */
     "tan",
     "tan_n_n",
@@ -9142,10 +8421,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 698 */
+  { /* 696 */
     /* type PARROT_INLINE_OP, */
     "tanh",
     "tanh_n_n",
@@ -9155,10 +8433,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 699 */
+  { /* 697 */
     /* type PARROT_INLINE_OP, */
     "gcd",
     "gcd_i_i_i",
@@ -9168,10 +8445,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 700 */
+  { /* 698 */
     /* type PARROT_INLINE_OP, */
     "gcd",
     "gcd_i_ic_i",
@@ -9181,10 +8457,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 701 */
+  { /* 699 */
     /* type PARROT_INLINE_OP, */
     "gcd",
     "gcd_i_i_ic",
@@ -9194,10 +8469,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 702 */
+  { /* 700 */
     /* type PARROT_INLINE_OP, */
     "lcm",
     "lcm_i_i_i",
@@ -9207,10 +8481,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 703 */
+  { /* 701 */
     /* type PARROT_INLINE_OP, */
     "lcm",
     "lcm_i_ic_i",
@@ -9220,10 +8493,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 704 */
+  { /* 702 */
     /* type PARROT_INLINE_OP, */
     "lcm",
     "lcm_i_i_ic",
@@ -9233,10 +8505,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 705 */
+  { /* 703 */
     /* type PARROT_INLINE_OP, */
     "fact",
     "fact_i_i",
@@ -9246,10 +8517,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 706 */
+  { /* 704 */
     /* type PARROT_INLINE_OP, */
     "fact",
     "fact_n_i",
@@ -9259,127 +8529,117 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 707 */
+  { /* 705 */
     /* type PARROT_FUNCTION_OP, */
     "callmethodcc",
     "callmethodcc_p_s",
     "Parrot_callmethodcc_p_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 708 */
+  { /* 706 */
     /* type PARROT_FUNCTION_OP, */
     "callmethodcc",
     "callmethodcc_p_sc",
     "Parrot_callmethodcc_p_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 709 */
+  { /* 707 */
     /* type PARROT_FUNCTION_OP, */
     "callmethodcc",
     "callmethodcc_p_p",
     "Parrot_callmethodcc_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 710 */
+  { /* 708 */
     /* type PARROT_FUNCTION_OP, */
     "callmethod",
     "callmethod_p_s_p",
     "Parrot_callmethod_p_s_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 711 */
+  { /* 709 */
     /* type PARROT_FUNCTION_OP, */
     "callmethod",
     "callmethod_p_sc_p",
     "Parrot_callmethod_p_sc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 712 */
+  { /* 710 */
     /* type PARROT_FUNCTION_OP, */
     "callmethod",
     "callmethod_p_p_p",
     "Parrot_callmethod_p_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 713 */
+  { /* 711 */
     /* type PARROT_FUNCTION_OP, */
     "tailcallmethod",
     "tailcallmethod_p_s",
     "Parrot_tailcallmethod_p_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 714 */
+  { /* 712 */
     /* type PARROT_FUNCTION_OP, */
     "tailcallmethod",
     "tailcallmethod_p_sc",
     "Parrot_tailcallmethod_p_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 715 */
+  { /* 713 */
     /* type PARROT_FUNCTION_OP, */
     "tailcallmethod",
     "tailcallmethod_p_p",
     "Parrot_tailcallmethod_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 716 */
+  { /* 714 */
     /* type PARROT_INLINE_OP, */
     "addmethod",
     "addmethod_p_s_p",
@@ -9389,10 +8649,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 717 */
+  { /* 715 */
     /* type PARROT_INLINE_OP, */
     "addmethod",
     "addmethod_p_sc_p",
@@ -9402,10 +8661,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 718 */
+  { /* 716 */
     /* type PARROT_INLINE_OP, */
     "can",
     "can_i_p_s",
@@ -9415,10 +8673,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 719 */
+  { /* 717 */
     /* type PARROT_INLINE_OP, */
     "can",
     "can_i_p_sc",
@@ -9428,10 +8685,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 720 */
+  { /* 718 */
     /* type PARROT_INLINE_OP, */
     "does",
     "does_i_p_s",
@@ -9441,10 +8697,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 721 */
+  { /* 719 */
     /* type PARROT_INLINE_OP, */
     "does",
     "does_i_p_sc",
@@ -9454,10 +8709,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 722 */
+  { /* 720 */
     /* type PARROT_INLINE_OP, */
     "does",
     "does_i_p_p",
@@ -9467,10 +8721,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 723 */
+  { /* 721 */
     /* type PARROT_INLINE_OP, */
     "does",
     "does_i_p_pc",
@@ -9480,10 +8733,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 724 */
+  { /* 722 */
     /* type PARROT_INLINE_OP, */
     "isa",
     "isa_i_p_s",
@@ -9493,10 +8745,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 725 */
+  { /* 723 */
     /* type PARROT_INLINE_OP, */
     "isa",
     "isa_i_p_sc",
@@ -9506,10 +8757,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 726 */
+  { /* 724 */
     /* type PARROT_INLINE_OP, */
     "isa",
     "isa_i_p_p",
@@ -9519,10 +8769,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 727 */
+  { /* 725 */
     /* type PARROT_INLINE_OP, */
     "isa",
     "isa_i_p_pc",
@@ -9532,10 +8781,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 728 */
+  { /* 726 */
     /* type PARROT_INLINE_OP, */
     "newclass",
     "newclass_p_s",
@@ -9545,10 +8793,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 729 */
+  { /* 727 */
     /* type PARROT_INLINE_OP, */
     "newclass",
     "newclass_p_sc",
@@ -9558,10 +8805,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 730 */
+  { /* 728 */
     /* type PARROT_INLINE_OP, */
     "newclass",
     "newclass_p_p",
@@ -9571,10 +8817,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 731 */
+  { /* 729 */
     /* type PARROT_INLINE_OP, */
     "newclass",
     "newclass_p_pc",
@@ -9584,270 +8829,249 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 732 */
+  { /* 730 */
     /* type PARROT_INLINE_OP, */
     "subclass",
     "subclass_p_p",
     "Parrot_subclass_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 733 */
+  { /* 731 */
     /* type PARROT_INLINE_OP, */
     "subclass",
     "subclass_p_pc",
     "Parrot_subclass_p_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 734 */
+  { /* 732 */
     /* type PARROT_INLINE_OP, */
     "subclass",
     "subclass_p_p_s",
     "Parrot_subclass_p_p_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 735 */
+  { /* 733 */
     /* type PARROT_INLINE_OP, */
     "subclass",
     "subclass_p_pc_s",
     "Parrot_subclass_p_pc_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 736 */
+  { /* 734 */
     /* type PARROT_INLINE_OP, */
     "subclass",
     "subclass_p_p_sc",
     "Parrot_subclass_p_p_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 737 */
+  { /* 735 */
     /* type PARROT_INLINE_OP, */
     "subclass",
     "subclass_p_pc_sc",
     "Parrot_subclass_p_pc_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 738 */
+  { /* 736 */
     /* type PARROT_INLINE_OP, */
     "subclass",
     "subclass_p_p_p",
     "Parrot_subclass_p_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 739 */
+  { /* 737 */
     /* type PARROT_INLINE_OP, */
     "subclass",
     "subclass_p_pc_p",
     "Parrot_subclass_p_pc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 740 */
+  { /* 738 */
     /* type PARROT_INLINE_OP, */
     "subclass",
     "subclass_p_p_pc",
     "Parrot_subclass_p_p_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 741 */
+  { /* 739 */
     /* type PARROT_INLINE_OP, */
     "subclass",
     "subclass_p_pc_pc",
     "Parrot_subclass_p_pc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 742 */
+  { /* 740 */
     /* type PARROT_FUNCTION_OP, */
     "subclass",
     "subclass_p_s",
     "Parrot_subclass_p_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 743 */
+  { /* 741 */
     /* type PARROT_FUNCTION_OP, */
     "subclass",
     "subclass_p_sc",
     "Parrot_subclass_p_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 744 */
+  { /* 742 */
     /* type PARROT_FUNCTION_OP, */
     "subclass",
     "subclass_p_s_s",
     "Parrot_subclass_p_s_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 745 */
+  { /* 743 */
     /* type PARROT_FUNCTION_OP, */
     "subclass",
     "subclass_p_sc_s",
     "Parrot_subclass_p_sc_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 746 */
+  { /* 744 */
     /* type PARROT_FUNCTION_OP, */
     "subclass",
     "subclass_p_s_sc",
     "Parrot_subclass_p_s_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 747 */
+  { /* 745 */
     /* type PARROT_FUNCTION_OP, */
     "subclass",
     "subclass_p_sc_sc",
     "Parrot_subclass_p_sc_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 748 */
+  { /* 746 */
     /* type PARROT_FUNCTION_OP, */
     "subclass",
     "subclass_p_s_p",
     "Parrot_subclass_p_s_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 749 */
+  { /* 747 */
     /* type PARROT_FUNCTION_OP, */
     "subclass",
     "subclass_p_sc_p",
     "Parrot_subclass_p_sc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 750 */
+  { /* 748 */
     /* type PARROT_FUNCTION_OP, */
     "subclass",
     "subclass_p_s_pc",
     "Parrot_subclass_p_s_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 751 */
+  { /* 749 */
     /* type PARROT_FUNCTION_OP, */
     "subclass",
     "subclass_p_sc_pc",
     "Parrot_subclass_p_sc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 752 */
+  { /* 750 */
     /* type PARROT_INLINE_OP, */
     "get_class",
     "get_class_p_s",
@@ -9857,10 +9081,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 753 */
+  { /* 751 */
     /* type PARROT_INLINE_OP, */
     "get_class",
     "get_class_p_sc",
@@ -9870,10 +9093,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 754 */
+  { /* 752 */
     /* type PARROT_INLINE_OP, */
     "get_class",
     "get_class_p_p",
@@ -9883,10 +9105,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 755 */
+  { /* 753 */
     /* type PARROT_INLINE_OP, */
     "get_class",
     "get_class_p_pc",
@@ -9896,10 +9117,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 756 */
+  { /* 754 */
     /* type PARROT_INLINE_OP, */
     "class",
     "class_p_p",
@@ -9909,10 +9129,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 757 */
+  { /* 755 */
     /* type PARROT_INLINE_OP, */
     "addparent",
     "addparent_p_p",
@@ -9922,10 +9141,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 758 */
+  { /* 756 */
     /* type PARROT_INLINE_OP, */
     "removeparent",
     "removeparent_p_p",
@@ -9935,10 +9153,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 759 */
+  { /* 757 */
     /* type PARROT_INLINE_OP, */
     "addrole",
     "addrole_p_p",
@@ -9948,36 +9165,33 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 760 */
+  { /* 758 */
     /* type PARROT_INLINE_OP, */
     "addattribute",
     "addattribute_p_s",
     "Parrot_addattribute_p_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 761 */
+  { /* 759 */
     /* type PARROT_INLINE_OP, */
     "addattribute",
     "addattribute_p_sc",
     "Parrot_addattribute_p_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 762 */
+  { /* 760 */
     /* type PARROT_FUNCTION_OP, */
     "removeattribute",
     "removeattribute_p_s",
@@ -9987,10 +9201,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 763 */
+  { /* 761 */
     /* type PARROT_FUNCTION_OP, */
     "removeattribute",
     "removeattribute_p_sc",
@@ -10000,10 +9213,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 764 */
+  { /* 762 */
     /* type PARROT_INLINE_OP, */
     "getattribute",
     "getattribute_p_p_s",
@@ -10013,10 +9225,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 765 */
+  { /* 763 */
     /* type PARROT_INLINE_OP, */
     "getattribute",
     "getattribute_p_p_sc",
@@ -10026,10 +9237,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 766 */
+  { /* 764 */
     /* type PARROT_INLINE_OP, */
     "getattribute",
     "getattribute_p_p_p_s",
@@ -10039,10 +9249,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 767 */
+  { /* 765 */
     /* type PARROT_INLINE_OP, */
     "getattribute",
     "getattribute_p_p_pc_s",
@@ -10052,10 +9261,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 768 */
+  { /* 766 */
     /* type PARROT_INLINE_OP, */
     "getattribute",
     "getattribute_p_p_p_sc",
@@ -10065,10 +9273,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 769 */
+  { /* 767 */
     /* type PARROT_INLINE_OP, */
     "getattribute",
     "getattribute_p_p_pc_sc",
@@ -10078,10 +9285,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 770 */
+  { /* 768 */
     /* type PARROT_INLINE_OP, */
     "setattribute",
     "setattribute_p_s_p",
@@ -10091,10 +9297,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 771 */
+  { /* 769 */
     /* type PARROT_INLINE_OP, */
     "setattribute",
     "setattribute_p_sc_p",
@@ -10104,10 +9309,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 772 */
+  { /* 770 */
     /* type PARROT_INLINE_OP, */
     "setattribute",
     "setattribute_p_p_s_p",
@@ -10117,10 +9321,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 773 */
+  { /* 771 */
     /* type PARROT_INLINE_OP, */
     "setattribute",
     "setattribute_p_pc_s_p",
@@ -10130,10 +9333,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 774 */
+  { /* 772 */
     /* type PARROT_INLINE_OP, */
     "setattribute",
     "setattribute_p_p_sc_p",
@@ -10143,10 +9345,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 775 */
+  { /* 773 */
     /* type PARROT_INLINE_OP, */
     "setattribute",
     "setattribute_p_pc_sc_p",
@@ -10156,10 +9357,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 776 */
+  { /* 774 */
     /* type PARROT_INLINE_OP, */
     "inspect",
     "inspect_p_p",
@@ -10169,10 +9369,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 777 */
+  { /* 775 */
     /* type PARROT_INLINE_OP, */
     "inspect",
     "inspect_p_pc",
@@ -10182,10 +9381,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 778 */
+  { /* 776 */
     /* type PARROT_INLINE_OP, */
     "inspect",
     "inspect_p_p_s",
@@ -10195,10 +9393,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 779 */
+  { /* 777 */
     /* type PARROT_INLINE_OP, */
     "inspect",
     "inspect_p_pc_s",
@@ -10208,10 +9405,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 780 */
+  { /* 778 */
     /* type PARROT_INLINE_OP, */
     "inspect",
     "inspect_p_p_sc",
@@ -10221,10 +9417,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 781 */
+  { /* 779 */
     /* type PARROT_INLINE_OP, */
     "inspect",
     "inspect_p_pc_sc",
@@ -10234,244 +9429,225 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 782 */
+  { /* 780 */
     /* type PARROT_FUNCTION_OP, */
     "new",
     "new_p_s",
     "Parrot_new_p_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 783 */
+  { /* 781 */
     /* type PARROT_FUNCTION_OP, */
     "new",
     "new_p_sc",
     "Parrot_new_p_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 784 */
+  { /* 782 */
     /* type PARROT_FUNCTION_OP, */
     "new",
     "new_p_s_p",
     "Parrot_new_p_s_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 785 */
+  { /* 783 */
     /* type PARROT_FUNCTION_OP, */
     "new",
     "new_p_sc_p",
     "Parrot_new_p_sc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 786 */
+  { /* 784 */
     /* type PARROT_FUNCTION_OP, */
     "new",
     "new_p_s_pc",
     "Parrot_new_p_s_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 787 */
+  { /* 785 */
     /* type PARROT_FUNCTION_OP, */
     "new",
     "new_p_sc_pc",
     "Parrot_new_p_sc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 788 */
+  { /* 786 */
     /* type PARROT_INLINE_OP, */
     "new",
     "new_p_p",
     "Parrot_new_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 789 */
+  { /* 787 */
     /* type PARROT_INLINE_OP, */
     "new",
     "new_p_pc",
     "Parrot_new_p_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 790 */
+  { /* 788 */
     /* type PARROT_FUNCTION_OP, */
     "new",
     "new_p_p_p",
     "Parrot_new_p_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 791 */
+  { /* 789 */
     /* type PARROT_FUNCTION_OP, */
     "new",
     "new_p_pc_p",
     "Parrot_new_p_pc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 792 */
+  { /* 790 */
     /* type PARROT_FUNCTION_OP, */
     "new",
     "new_p_p_pc",
     "Parrot_new_p_p_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 793 */
+  { /* 791 */
     /* type PARROT_FUNCTION_OP, */
     "new",
     "new_p_pc_pc",
     "Parrot_new_p_pc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 794 */
+  { /* 792 */
     /* type PARROT_FUNCTION_OP, */
     "root_new",
     "root_new_p_p",
     "Parrot_root_new_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 795 */
+  { /* 793 */
     /* type PARROT_FUNCTION_OP, */
     "root_new",
     "root_new_p_pc",
     "Parrot_root_new_p_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 796 */
+  { /* 794 */
     /* type PARROT_FUNCTION_OP, */
     "root_new",
     "root_new_p_p_p",
     "Parrot_root_new_p_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 797 */
+  { /* 795 */
     /* type PARROT_FUNCTION_OP, */
     "root_new",
     "root_new_p_pc_p",
     "Parrot_root_new_p_pc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 798 */
+  { /* 796 */
     /* type PARROT_FUNCTION_OP, */
     "root_new",
     "root_new_p_p_pc",
     "Parrot_root_new_p_p_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 799 */
+  { /* 797 */
     /* type PARROT_FUNCTION_OP, */
     "root_new",
     "root_new_p_pc_pc",
     "Parrot_root_new_p_pc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 800 */
+  { /* 798 */
     /* type PARROT_INLINE_OP, */
     "typeof",
     "typeof_s_p",
@@ -10481,10 +9657,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 801 */
+  { /* 799 */
     /* type PARROT_INLINE_OP, */
     "typeof",
     "typeof_p_p",
@@ -10494,10 +9669,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 802 */
+  { /* 800 */
     /* type PARROT_FUNCTION_OP, */
     "get_repr",
     "get_repr_s_p",
@@ -10507,36 +9681,33 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 803 */
+  { /* 801 */
     /* type PARROT_FUNCTION_OP, */
     "find_method",
     "find_method_p_p_s",
     "Parrot_find_method_p_p_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_RESTART,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 804 */
+  { /* 802 */
     /* type PARROT_FUNCTION_OP, */
     "find_method",
     "find_method_p_p_sc",
     "Parrot_find_method_p_p_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_RESTART,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 805 */
+  { /* 803 */
     /* type PARROT_INLINE_OP, */
     "defined",
     "defined_i_p",
@@ -10546,10 +9717,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 806 */
+  { /* 804 */
     /* type PARROT_INLINE_OP, */
     "defined",
     "defined_i_p_ki",
@@ -10559,10 +9729,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 807 */
+  { /* 805 */
     /* type PARROT_INLINE_OP, */
     "defined",
     "defined_i_p_kic",
@@ -10572,10 +9741,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 808 */
+  { /* 806 */
     /* type PARROT_INLINE_OP, */
     "defined",
     "defined_i_p_k",
@@ -10585,10 +9753,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 809 */
+  { /* 807 */
     /* type PARROT_INLINE_OP, */
     "defined",
     "defined_i_p_kc",
@@ -10598,10 +9765,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 810 */
+  { /* 808 */
     /* type PARROT_INLINE_OP, */
     "exists",
     "exists_i_p_ki",
@@ -10611,10 +9777,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 811 */
+  { /* 809 */
     /* type PARROT_INLINE_OP, */
     "exists",
     "exists_i_p_kic",
@@ -10624,10 +9789,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 812 */
+  { /* 810 */
     /* type PARROT_INLINE_OP, */
     "exists",
     "exists_i_p_k",
@@ -10637,10 +9801,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 813 */
+  { /* 811 */
     /* type PARROT_INLINE_OP, */
     "exists",
     "exists_i_p_kc",
@@ -10650,10 +9813,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 814 */
+  { /* 812 */
     /* type PARROT_INLINE_OP, */
     "delete",
     "delete_p_k",
@@ -10663,10 +9825,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 815 */
+  { /* 813 */
     /* type PARROT_INLINE_OP, */
     "delete",
     "delete_p_kc",
@@ -10676,10 +9837,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 816 */
+  { /* 814 */
     /* type PARROT_INLINE_OP, */
     "delete",
     "delete_p_ki",
@@ -10689,10 +9849,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 817 */
+  { /* 815 */
     /* type PARROT_INLINE_OP, */
     "delete",
     "delete_p_kic",
@@ -10702,10 +9861,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 818 */
+  { /* 816 */
     /* type PARROT_INLINE_OP, */
     "elements",
     "elements_i_p",
@@ -10715,10 +9873,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 819 */
+  { /* 817 */
     /* type PARROT_INLINE_OP, */
     "push",
     "push_p_i",
@@ -10728,10 +9885,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 820 */
+  { /* 818 */
     /* type PARROT_INLINE_OP, */
     "push",
     "push_p_ic",
@@ -10741,10 +9897,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 821 */
+  { /* 819 */
     /* type PARROT_INLINE_OP, */
     "push",
     "push_p_n",
@@ -10754,10 +9909,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 822 */
+  { /* 820 */
     /* type PARROT_INLINE_OP, */
     "push",
     "push_p_nc",
@@ -10767,10 +9921,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 823 */
+  { /* 821 */
     /* type PARROT_INLINE_OP, */
     "push",
     "push_p_s",
@@ -10780,10 +9933,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 824 */
+  { /* 822 */
     /* type PARROT_INLINE_OP, */
     "push",
     "push_p_sc",
@@ -10793,10 +9945,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 825 */
+  { /* 823 */
     /* type PARROT_INLINE_OP, */
     "push",
     "push_p_p",
@@ -10806,10 +9957,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 826 */
+  { /* 824 */
     /* type PARROT_INLINE_OP, */
     "pop",
     "pop_i_p",
@@ -10819,10 +9969,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 827 */
+  { /* 825 */
     /* type PARROT_INLINE_OP, */
     "pop",
     "pop_n_p",
@@ -10832,10 +9981,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 828 */
+  { /* 826 */
     /* type PARROT_INLINE_OP, */
     "pop",
     "pop_s_p",
@@ -10845,10 +9993,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 829 */
+  { /* 827 */
     /* type PARROT_INLINE_OP, */
     "pop",
     "pop_p_p",
@@ -10858,10 +10005,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 830 */
+  { /* 828 */
     /* type PARROT_INLINE_OP, */
     "unshift",
     "unshift_p_i",
@@ -10871,10 +10017,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 831 */
+  { /* 829 */
     /* type PARROT_INLINE_OP, */
     "unshift",
     "unshift_p_ic",
@@ -10884,10 +10029,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 832 */
+  { /* 830 */
     /* type PARROT_INLINE_OP, */
     "unshift",
     "unshift_p_n",
@@ -10897,10 +10041,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 833 */
+  { /* 831 */
     /* type PARROT_INLINE_OP, */
     "unshift",
     "unshift_p_nc",
@@ -10910,10 +10053,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 834 */
+  { /* 832 */
     /* type PARROT_INLINE_OP, */
     "unshift",
     "unshift_p_s",
@@ -10923,10 +10065,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 835 */
+  { /* 833 */
     /* type PARROT_INLINE_OP, */
     "unshift",
     "unshift_p_sc",
@@ -10936,10 +10077,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 836 */
+  { /* 834 */
     /* type PARROT_INLINE_OP, */
     "unshift",
     "unshift_p_p",
@@ -10949,10 +10089,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 837 */
+  { /* 835 */
     /* type PARROT_INLINE_OP, */
     "shift",
     "shift_i_p",
@@ -10962,10 +10101,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 838 */
+  { /* 836 */
     /* type PARROT_INLINE_OP, */
     "shift",
     "shift_n_p",
@@ -10975,10 +10113,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 839 */
+  { /* 837 */
     /* type PARROT_INLINE_OP, */
     "shift",
     "shift_s_p",
@@ -10988,10 +10125,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 840 */
+  { /* 838 */
     /* type PARROT_INLINE_OP, */
     "shift",
     "shift_p_p",
@@ -11001,10 +10137,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 841 */
+  { /* 839 */
     /* type PARROT_INLINE_OP, */
     "splice",
     "splice_p_p_i_i",
@@ -11014,10 +10149,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 842 */
+  { /* 840 */
     /* type PARROT_INLINE_OP, */
     "splice",
     "splice_p_p_ic_i",
@@ -11027,10 +10161,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 843 */
+  { /* 841 */
     /* type PARROT_INLINE_OP, */
     "splice",
     "splice_p_p_i_ic",
@@ -11040,10 +10173,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 844 */
+  { /* 842 */
     /* type PARROT_INLINE_OP, */
     "splice",
     "splice_p_p_ic_ic",
@@ -11053,10 +10185,9 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 845 */
+  { /* 843 */
     /* type PARROT_FUNCTION_OP, */
     "setprop",
     "setprop_p_s_p",
@@ -11066,10 +10197,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 846 */
+  { /* 844 */
     /* type PARROT_FUNCTION_OP, */
     "setprop",
     "setprop_p_sc_p",
@@ -11079,10 +10209,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 847 */
+  { /* 845 */
     /* type PARROT_FUNCTION_OP, */
     "getprop",
     "getprop_p_s_p",
@@ -11092,10 +10221,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 848 */
+  { /* 846 */
     /* type PARROT_FUNCTION_OP, */
     "getprop",
     "getprop_p_sc_p",
@@ -11105,10 +10233,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 849 */
+  { /* 847 */
     /* type PARROT_FUNCTION_OP, */
     "delprop",
     "delprop_p_s",
@@ -11118,10 +10245,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 850 */
+  { /* 848 */
     /* type PARROT_FUNCTION_OP, */
     "delprop",
     "delprop_p_sc",
@@ -11131,10 +10257,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 851 */
+  { /* 849 */
     /* type PARROT_FUNCTION_OP, */
     "prophash",
     "prophash_p_p",
@@ -11144,10 +10269,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 852 */
+  { /* 850 */
     /* type PARROT_FUNCTION_OP, */
     "freeze",
     "freeze_s_p",
@@ -11157,10 +10281,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 853 */
+  { /* 851 */
     /* type PARROT_FUNCTION_OP, */
     "thaw",
     "thaw_p_s",
@@ -11170,10 +10293,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 854 */
+  { /* 852 */
     /* type PARROT_FUNCTION_OP, */
     "thaw",
     "thaw_p_sc",
@@ -11183,10 +10305,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 855 */
+  { /* 853 */
     /* type PARROT_INLINE_OP, */
     "add_multi",
     "add_multi_s_s_p",
@@ -11196,10 +10317,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 856 */
+  { /* 854 */
     /* type PARROT_INLINE_OP, */
     "add_multi",
     "add_multi_sc_s_p",
@@ -11209,10 +10329,9 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 857 */
+  { /* 855 */
     /* type PARROT_INLINE_OP, */
     "add_multi",
     "add_multi_s_sc_p",
@@ -11222,10 +10341,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 858 */
+  { /* 856 */
     /* type PARROT_INLINE_OP, */
     "add_multi",
     "add_multi_sc_sc_p",
@@ -11235,10 +10353,9 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 859 */
+  { /* 857 */
     /* type PARROT_INLINE_OP, */
     "find_multi",
     "find_multi_p_s_s",
@@ -11248,10 +10365,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 860 */
+  { /* 858 */
     /* type PARROT_INLINE_OP, */
     "find_multi",
     "find_multi_p_sc_s",
@@ -11261,10 +10377,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 861 */
+  { /* 859 */
     /* type PARROT_INLINE_OP, */
     "find_multi",
     "find_multi_p_s_sc",
@@ -11274,10 +10389,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 862 */
+  { /* 860 */
     /* type PARROT_INLINE_OP, */
     "find_multi",
     "find_multi_p_sc_sc",
@@ -11287,10 +10401,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 863 */
+  { /* 861 */
     /* type PARROT_FUNCTION_OP, */
     "register",
     "register_p",
@@ -11300,10 +10413,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 864 */
+  { /* 862 */
     /* type PARROT_FUNCTION_OP, */
     "unregister",
     "unregister_p",
@@ -11313,10 +10425,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 865 */
+  { /* 863 */
     /* type PARROT_FUNCTION_OP, */
     "box",
     "box_p_i",
@@ -11326,10 +10437,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 866 */
+  { /* 864 */
     /* type PARROT_FUNCTION_OP, */
     "box",
     "box_p_ic",
@@ -11339,10 +10449,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 867 */
+  { /* 865 */
     /* type PARROT_FUNCTION_OP, */
     "box",
     "box_p_n",
@@ -11352,10 +10461,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 868 */
+  { /* 866 */
     /* type PARROT_FUNCTION_OP, */
     "box",
     "box_p_nc",
@@ -11365,10 +10473,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 869 */
+  { /* 867 */
     /* type PARROT_FUNCTION_OP, */
     "box",
     "box_p_s",
@@ -11378,10 +10485,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 870 */
+  { /* 868 */
     /* type PARROT_FUNCTION_OP, */
     "box",
     "box_p_sc",
@@ -11391,10 +10497,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 871 */
+  { /* 869 */
     /* type PARROT_INLINE_OP, */
     "iter",
     "iter_p_p",
@@ -11404,10 +10509,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 872 */
+  { /* 870 */
     /* type PARROT_INLINE_OP, */
     "morph",
     "morph_p_p",
@@ -11417,10 +10521,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 873 */
+  { /* 871 */
     /* type PARROT_INLINE_OP, */
     "morph",
     "morph_p_pc",
@@ -11430,10 +10533,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 874 */
+  { /* 872 */
     /* type PARROT_INLINE_OP, */
     "clone",
     "clone_s_s",
@@ -11443,10 +10545,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 875 */
+  { /* 873 */
     /* type PARROT_INLINE_OP, */
     "clone",
     "clone_s_sc",
@@ -11456,10 +10557,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 876 */
+  { /* 874 */
     /* type PARROT_FUNCTION_OP, */
     "exchange",
     "exchange_i_i",
@@ -11469,10 +10569,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_INOUT },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 877 */
+  { /* 875 */
     /* type PARROT_FUNCTION_OP, */
     "exchange",
     "exchange_p_p",
@@ -11482,10 +10581,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_INOUT },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 878 */
+  { /* 876 */
     /* type PARROT_FUNCTION_OP, */
     "exchange",
     "exchange_n_n",
@@ -11495,10 +10593,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_INOUT },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 879 */
+  { /* 877 */
     /* type PARROT_FUNCTION_OP, */
     "exchange",
     "exchange_s_s",
@@ -11508,10 +10605,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_INOUT },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 880 */
+  { /* 878 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_i_i",
@@ -11521,10 +10617,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 881 */
+  { /* 879 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_i_ic",
@@ -11534,10 +10629,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 882 */
+  { /* 880 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_i_n",
@@ -11547,10 +10641,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 883 */
+  { /* 881 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_i_nc",
@@ -11560,10 +10653,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 884 */
+  { /* 882 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_i_s",
@@ -11573,10 +10665,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 885 */
+  { /* 883 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_i_sc",
@@ -11586,10 +10677,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 886 */
+  { /* 884 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_n_n",
@@ -11599,10 +10689,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 887 */
+  { /* 885 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_n_nc",
@@ -11612,10 +10701,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 888 */
+  { /* 886 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_n_i",
@@ -11625,10 +10713,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 889 */
+  { /* 887 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_n_ic",
@@ -11638,10 +10725,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 890 */
+  { /* 888 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_n_s",
@@ -11651,10 +10737,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 891 */
+  { /* 889 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_n_sc",
@@ -11664,10 +10749,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 892 */
+  { /* 890 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_n_p",
@@ -11677,10 +10761,9 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 893 */
+  { /* 891 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_s_p",
@@ -11690,10 +10773,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 894 */
+  { /* 892 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_s_s",
@@ -11703,10 +10785,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 895 */
+  { /* 893 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_s_sc",
@@ -11716,10 +10797,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 896 */
+  { /* 894 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_s_i",
@@ -11729,10 +10809,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 897 */
+  { /* 895 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_s_ic",
@@ -11742,10 +10821,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 898 */
+  { /* 896 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_s_n",
@@ -11755,10 +10833,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 899 */
+  { /* 897 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_s_nc",
@@ -11768,10 +10845,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 900 */
+  { /* 898 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_pc",
@@ -11781,10 +10857,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 901 */
+  { /* 899 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_p",
@@ -11794,10 +10869,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 902 */
+  { /* 900 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_i",
@@ -11807,10 +10881,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 903 */
+  { /* 901 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_ic",
@@ -11820,10 +10893,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 904 */
+  { /* 902 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_n",
@@ -11833,10 +10905,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 905 */
+  { /* 903 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_nc",
@@ -11846,10 +10917,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 906 */
+  { /* 904 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_s",
@@ -11859,10 +10929,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 907 */
+  { /* 905 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_sc",
@@ -11872,10 +10941,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 908 */
+  { /* 906 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_i_p",
@@ -11885,10 +10953,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 909 */
+  { /* 907 */
     /* type PARROT_INLINE_OP, */
     "assign",
     "assign_p_p",
@@ -11898,10 +10965,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 910 */
+  { /* 908 */
     /* type PARROT_INLINE_OP, */
     "assign",
     "assign_p_i",
@@ -11911,10 +10977,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 911 */
+  { /* 909 */
     /* type PARROT_INLINE_OP, */
     "assign",
     "assign_p_ic",
@@ -11924,10 +10989,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 912 */
+  { /* 910 */
     /* type PARROT_INLINE_OP, */
     "assign",
     "assign_p_n",
@@ -11937,10 +11001,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 913 */
+  { /* 911 */
     /* type PARROT_INLINE_OP, */
     "assign",
     "assign_p_nc",
@@ -11950,10 +11013,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 914 */
+  { /* 912 */
     /* type PARROT_INLINE_OP, */
     "assign",
     "assign_p_s",
@@ -11963,10 +11025,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 915 */
+  { /* 913 */
     /* type PARROT_INLINE_OP, */
     "assign",
     "assign_p_sc",
@@ -11976,10 +11037,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 916 */
+  { /* 914 */
     /* type PARROT_INLINE_OP, */
     "assign",
     "assign_s_s",
@@ -11989,10 +11049,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 917 */
+  { /* 915 */
     /* type PARROT_INLINE_OP, */
     "assign",
     "assign_s_sc",
@@ -12002,10 +11061,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 918 */
+  { /* 916 */
     /* type PARROT_INLINE_OP, */
     "setref",
     "setref_p_p",
@@ -12015,10 +11073,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 919 */
+  { /* 917 */
     /* type PARROT_INLINE_OP, */
     "deref",
     "deref_p_p",
@@ -12028,10 +11085,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 920 */
+  { /* 918 */
     /* type PARROT_INLINE_OP, */
     "setp_ind",
     "setp_ind_i_p",
@@ -12041,10 +11097,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 921 */
+  { /* 919 */
     /* type PARROT_INLINE_OP, */
     "setp_ind",
     "setp_ind_ic_p",
@@ -12054,10 +11109,9 @@
     3,
     { PARROT_ARG_IC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 922 */
+  { /* 920 */
     /* type PARROT_INLINE_OP, */
     "setn_ind",
     "setn_ind_i_n",
@@ -12067,10 +11121,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 923 */
+  { /* 921 */
     /* type PARROT_INLINE_OP, */
     "setn_ind",
     "setn_ind_ic_n",
@@ -12080,10 +11133,9 @@
     3,
     { PARROT_ARG_IC, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 924 */
+  { /* 922 */
     /* type PARROT_INLINE_OP, */
     "setn_ind",
     "setn_ind_i_nc",
@@ -12093,10 +11145,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 925 */
+  { /* 923 */
     /* type PARROT_INLINE_OP, */
     "setn_ind",
     "setn_ind_ic_nc",
@@ -12106,10 +11157,9 @@
     3,
     { PARROT_ARG_IC, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 926 */
+  { /* 924 */
     /* type PARROT_INLINE_OP, */
     "sets_ind",
     "sets_ind_i_s",
@@ -12119,10 +11169,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 927 */
+  { /* 925 */
     /* type PARROT_INLINE_OP, */
     "sets_ind",
     "sets_ind_ic_s",
@@ -12132,10 +11181,9 @@
     3,
     { PARROT_ARG_IC, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 928 */
+  { /* 926 */
     /* type PARROT_INLINE_OP, */
     "sets_ind",
     "sets_ind_i_sc",
@@ -12145,10 +11193,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 929 */
+  { /* 927 */
     /* type PARROT_INLINE_OP, */
     "sets_ind",
     "sets_ind_ic_sc",
@@ -12158,10 +11205,9 @@
     3,
     { PARROT_ARG_IC, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 930 */
+  { /* 928 */
     /* type PARROT_INLINE_OP, */
     "seti_ind",
     "seti_ind_i_i",
@@ -12171,10 +11217,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 931 */
+  { /* 929 */
     /* type PARROT_INLINE_OP, */
     "seti_ind",
     "seti_ind_ic_i",
@@ -12184,10 +11229,9 @@
     3,
     { PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 932 */
+  { /* 930 */
     /* type PARROT_INLINE_OP, */
     "seti_ind",
     "seti_ind_i_ic",
@@ -12197,10 +11241,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 933 */
+  { /* 931 */
     /* type PARROT_INLINE_OP, */
     "seti_ind",
     "seti_ind_ic_ic",
@@ -12210,10 +11253,9 @@
     3,
     { PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 934 */
+  { /* 932 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_ki_i",
@@ -12223,10 +11265,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 935 */
+  { /* 933 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kic_i",
@@ -12236,10 +11277,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 936 */
+  { /* 934 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_ki_ic",
@@ -12249,10 +11289,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 937 */
+  { /* 935 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kic_ic",
@@ -12262,10 +11301,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 938 */
+  { /* 936 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_ki_n",
@@ -12275,10 +11313,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 939 */
+  { /* 937 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kic_n",
@@ -12288,10 +11325,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 940 */
+  { /* 938 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_ki_nc",
@@ -12301,10 +11337,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 941 */
+  { /* 939 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kic_nc",
@@ -12314,10 +11349,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 942 */
+  { /* 940 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_ki_s",
@@ -12327,10 +11361,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 943 */
+  { /* 941 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kic_s",
@@ -12340,10 +11373,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 944 */
+  { /* 942 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_ki_sc",
@@ -12353,10 +11385,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 945 */
+  { /* 943 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kic_sc",
@@ -12366,10 +11397,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 946 */
+  { /* 944 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_ki_p",
@@ -12379,10 +11409,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 947 */
+  { /* 945 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kic_p",
@@ -12392,10 +11421,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 948 */
+  { /* 946 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_i_p_ki",
@@ -12405,10 +11433,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 949 */
+  { /* 947 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_i_p_kic",
@@ -12418,10 +11445,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 950 */
+  { /* 948 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_n_p_ki",
@@ -12431,10 +11457,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 951 */
+  { /* 949 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_n_p_kic",
@@ -12444,10 +11469,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 952 */
+  { /* 950 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_s_p_ki",
@@ -12457,10 +11481,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 953 */
+  { /* 951 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_s_p_kic",
@@ -12470,10 +11493,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 954 */
+  { /* 952 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_p_ki",
@@ -12483,10 +11505,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 955 */
+  { /* 953 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_p_kic",
@@ -12496,10 +11517,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 956 */
+  { /* 954 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_k_i",
@@ -12509,10 +11529,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 957 */
+  { /* 955 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kc_i",
@@ -12522,10 +11541,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 958 */
+  { /* 956 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_k_ic",
@@ -12535,10 +11553,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 959 */
+  { /* 957 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kc_ic",
@@ -12548,10 +11565,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 960 */
+  { /* 958 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_k_n",
@@ -12561,10 +11577,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 961 */
+  { /* 959 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kc_n",
@@ -12574,10 +11589,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 962 */
+  { /* 960 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_k_nc",
@@ -12587,10 +11601,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 963 */
+  { /* 961 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kc_nc",
@@ -12600,10 +11613,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 964 */
+  { /* 962 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_k_s",
@@ -12613,10 +11625,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 965 */
+  { /* 963 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kc_s",
@@ -12626,10 +11637,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 966 */
+  { /* 964 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_k_sc",
@@ -12639,10 +11649,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 967 */
+  { /* 965 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kc_sc",
@@ -12652,10 +11661,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 968 */
+  { /* 966 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_k_p",
@@ -12665,10 +11673,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 969 */
+  { /* 967 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_kc_p",
@@ -12678,10 +11685,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 970 */
+  { /* 968 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_i_p_k",
@@ -12691,10 +11697,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 971 */
+  { /* 969 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_i_p_kc",
@@ -12704,10 +11709,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 972 */
+  { /* 970 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_n_p_k",
@@ -12717,10 +11721,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 973 */
+  { /* 971 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_n_p_kc",
@@ -12730,10 +11733,9 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 974 */
+  { /* 972 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_s_p_k",
@@ -12743,10 +11745,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 975 */
+  { /* 973 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_s_p_kc",
@@ -12756,10 +11757,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 976 */
+  { /* 974 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_p_k",
@@ -12769,10 +11769,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 977 */
+  { /* 975 */
     /* type PARROT_INLINE_OP, */
     "set",
     "set_p_p_kc",
@@ -12782,10 +11781,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 978 */
+  { /* 976 */
     /* type PARROT_INLINE_OP, */
     "clone",
     "clone_p_p",
@@ -12795,10 +11793,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 979 */
+  { /* 977 */
     /* type PARROT_INLINE_OP, */
     "clone",
     "clone_p_p_p",
@@ -12808,10 +11805,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 980 */
+  { /* 978 */
     /* type PARROT_INLINE_OP, */
     "clone",
     "clone_p_p_pc",
@@ -12821,23 +11817,21 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 981 */
+  { /* 979 */
     /* type PARROT_INLINE_OP, */
     "copy",
     "copy_p_p",
     "Parrot_copy_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 982 */
+  { /* 980 */
     /* type PARROT_INLINE_OP, */
     "null",
     "null_s",
@@ -12847,10 +11841,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 983 */
+  { /* 981 */
     /* type PARROT_INLINE_OP, */
     "null",
     "null_i",
@@ -12860,10 +11853,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 984 */
+  { /* 982 */
     /* type PARROT_INLINE_OP, */
     "null",
     "null_p",
@@ -12873,10 +11865,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 985 */
+  { /* 983 */
     /* type PARROT_INLINE_OP, */
     "null",
     "null_n",
@@ -12886,10 +11877,9 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 986 */
+  { /* 984 */
     /* type PARROT_INLINE_OP, */
     "cleari",
     "cleari",
@@ -12897,12 +11887,11 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 987 */
+  { /* 985 */
     /* type PARROT_INLINE_OP, */
     "clearn",
     "clearn",
@@ -12910,12 +11899,11 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 988 */
+  { /* 986 */
     /* type PARROT_INLINE_OP, */
     "clears",
     "clears",
@@ -12923,12 +11911,11 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 989 */
+  { /* 987 */
     /* type PARROT_INLINE_OP, */
     "clearp",
     "clearp",
@@ -12936,12 +11923,11 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 990 */
+  { /* 988 */
     /* type PARROT_INLINE_OP, */
     "ord",
     "ord_i_s",
@@ -12951,10 +11937,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 991 */
+  { /* 989 */
     /* type PARROT_INLINE_OP, */
     "ord",
     "ord_i_sc",
@@ -12964,10 +11949,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 992 */
+  { /* 990 */
     /* type PARROT_INLINE_OP, */
     "ord",
     "ord_i_s_i",
@@ -12977,10 +11961,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 993 */
+  { /* 991 */
     /* type PARROT_INLINE_OP, */
     "ord",
     "ord_i_sc_i",
@@ -12990,10 +11973,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 994 */
+  { /* 992 */
     /* type PARROT_INLINE_OP, */
     "ord",
     "ord_i_s_ic",
@@ -13003,10 +11985,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 995 */
+  { /* 993 */
     /* type PARROT_INLINE_OP, */
     "ord",
     "ord_i_sc_ic",
@@ -13016,10 +11997,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 996 */
+  { /* 994 */
     /* type PARROT_INLINE_OP, */
     "chr",
     "chr_s_i",
@@ -13029,10 +12009,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 997 */
+  { /* 995 */
     /* type PARROT_INLINE_OP, */
     "chr",
     "chr_s_ic",
@@ -13042,10 +12021,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 998 */
+  { /* 996 */
     /* type PARROT_INLINE_OP, */
     "chopn",
     "chopn_s_i",
@@ -13055,10 +12033,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 999 */
+  { /* 997 */
     /* type PARROT_INLINE_OP, */
     "chopn",
     "chopn_s_ic",
@@ -13068,10 +12045,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1000 */
+  { /* 998 */
     /* type PARROT_INLINE_OP, */
     "chopn",
     "chopn_s_s_i",
@@ -13081,10 +12057,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1001 */
+  { /* 999 */
     /* type PARROT_INLINE_OP, */
     "chopn",
     "chopn_s_sc_i",
@@ -13094,10 +12069,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1002 */
+  { /* 1000 */
     /* type PARROT_INLINE_OP, */
     "chopn",
     "chopn_s_s_ic",
@@ -13107,10 +12081,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1003 */
+  { /* 1001 */
     /* type PARROT_INLINE_OP, */
     "chopn",
     "chopn_s_sc_ic",
@@ -13120,10 +12093,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1004 */
+  { /* 1002 */
     /* type PARROT_INLINE_OP, */
     "concat",
     "concat_s_s",
@@ -13133,10 +12105,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1005 */
+  { /* 1003 */
     /* type PARROT_INLINE_OP, */
     "concat",
     "concat_s_sc",
@@ -13146,10 +12117,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1006 */
+  { /* 1004 */
     /* type PARROT_INLINE_OP, */
     "concat",
     "concat_p_p",
@@ -13159,10 +12129,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1007 */
+  { /* 1005 */
     /* type PARROT_INLINE_OP, */
     "concat",
     "concat_p_s",
@@ -13172,10 +12141,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1008 */
+  { /* 1006 */
     /* type PARROT_INLINE_OP, */
     "concat",
     "concat_p_sc",
@@ -13185,10 +12153,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1009 */
+  { /* 1007 */
     /* type PARROT_INLINE_OP, */
     "concat",
     "concat_s_s_s",
@@ -13198,10 +12165,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1010 */
+  { /* 1008 */
     /* type PARROT_INLINE_OP, */
     "concat",
     "concat_s_sc_s",
@@ -13211,10 +12177,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1011 */
+  { /* 1009 */
     /* type PARROT_INLINE_OP, */
     "concat",
     "concat_s_s_sc",
@@ -13224,10 +12189,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1012 */
+  { /* 1010 */
     /* type PARROT_INLINE_OP, */
     "concat",
     "concat_p_p_s",
@@ -13237,10 +12201,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1013 */
+  { /* 1011 */
     /* type PARROT_INLINE_OP, */
     "concat",
     "concat_p_p_sc",
@@ -13250,10 +12213,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1014 */
+  { /* 1012 */
     /* type PARROT_INLINE_OP, */
     "concat",
     "concat_p_p_p",
@@ -13263,101 +12225,93 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1015 */
+  { /* 1013 */
     /* type PARROT_INLINE_OP, */
     "repeat",
     "repeat_s_s_i",
     "Parrot_repeat_s_s_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1016 */
+  { /* 1014 */
     /* type PARROT_INLINE_OP, */
     "repeat",
     "repeat_s_sc_i",
     "Parrot_repeat_s_sc_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1017 */
+  { /* 1015 */
     /* type PARROT_INLINE_OP, */
     "repeat",
     "repeat_s_s_ic",
     "Parrot_repeat_s_s_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1018 */
+  { /* 1016 */
     /* type PARROT_INLINE_OP, */
     "repeat",
     "repeat_s_sc_ic",
     "Parrot_repeat_s_sc_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1019 */
+  { /* 1017 */
     /* type PARROT_INLINE_OP, */
     "repeat",
     "repeat_p_p_i",
     "Parrot_repeat_p_p_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1020 */
+  { /* 1018 */
     /* type PARROT_INLINE_OP, */
     "repeat",
     "repeat_p_p_ic",
     "Parrot_repeat_p_p_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1021 */
+  { /* 1019 */
     /* type PARROT_INLINE_OP, */
     "repeat",
     "repeat_p_p_p",
     "Parrot_repeat_p_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1022 */
+  { /* 1020 */
     /* type PARROT_INLINE_OP, */
     "repeat",
     "repeat_p_i",
@@ -13367,10 +12321,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1023 */
+  { /* 1021 */
     /* type PARROT_INLINE_OP, */
     "repeat",
     "repeat_p_ic",
@@ -13380,10 +12333,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1024 */
+  { /* 1022 */
     /* type PARROT_INLINE_OP, */
     "repeat",
     "repeat_p_p",
@@ -13393,10 +12345,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1025 */
+  { /* 1023 */
     /* type PARROT_INLINE_OP, */
     "length",
     "length_i_s",
@@ -13406,10 +12357,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1026 */
+  { /* 1024 */
     /* type PARROT_INLINE_OP, */
     "length",
     "length_i_sc",
@@ -13419,10 +12369,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1027 */
+  { /* 1025 */
     /* type PARROT_INLINE_OP, */
     "bytelength",
     "bytelength_i_s",
@@ -13432,10 +12381,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1028 */
+  { /* 1026 */
     /* type PARROT_INLINE_OP, */
     "bytelength",
     "bytelength_i_sc",
@@ -13445,10 +12393,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1029 */
+  { /* 1027 */
     /* type PARROT_FUNCTION_OP, */
     "pin",
     "pin_s",
@@ -13458,10 +12405,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1030 */
+  { /* 1028 */
     /* type PARROT_FUNCTION_OP, */
     "unpin",
     "unpin_s",
@@ -13471,10 +12417,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1031 */
+  { /* 1029 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_i",
@@ -13484,10 +12429,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1032 */
+  { /* 1030 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_sc_i",
@@ -13497,10 +12441,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1033 */
+  { /* 1031 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_ic",
@@ -13510,10 +12453,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1034 */
+  { /* 1032 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_sc_ic",
@@ -13523,10 +12465,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1035 */
+  { /* 1033 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_i_i",
@@ -13536,10 +12477,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1036 */
+  { /* 1034 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_sc_i_i",
@@ -13549,10 +12489,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1037 */
+  { /* 1035 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_ic_i",
@@ -13562,10 +12501,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1038 */
+  { /* 1036 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_sc_ic_i",
@@ -13575,10 +12513,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1039 */
+  { /* 1037 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_i_ic",
@@ -13588,10 +12525,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1040 */
+  { /* 1038 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_sc_i_ic",
@@ -13601,10 +12537,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1041 */
+  { /* 1039 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_ic_ic",
@@ -13614,10 +12549,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1042 */
+  { /* 1040 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_sc_ic_ic",
@@ -13627,10 +12561,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1043 */
+  { /* 1041 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_i_i_s",
@@ -13640,10 +12573,9 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1044 */
+  { /* 1042 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_ic_i_s",
@@ -13653,10 +12585,9 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1045 */
+  { /* 1043 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_i_ic_s",
@@ -13666,10 +12597,9 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1046 */
+  { /* 1044 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_ic_ic_s",
@@ -13679,10 +12609,9 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1047 */
+  { /* 1045 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_i_i_sc",
@@ -13692,10 +12621,9 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1048 */
+  { /* 1046 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_ic_i_sc",
@@ -13705,10 +12633,9 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1049 */
+  { /* 1047 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_i_ic_sc",
@@ -13718,10 +12645,9 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1050 */
+  { /* 1048 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_s_ic_ic_sc",
@@ -13731,10 +12657,9 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1051 */
+  { /* 1049 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_i_i_s",
@@ -13744,10 +12669,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1052 */
+  { /* 1050 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_ic_i_s",
@@ -13757,10 +12681,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1053 */
+  { /* 1051 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_i_ic_s",
@@ -13770,10 +12693,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1054 */
+  { /* 1052 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_ic_ic_s",
@@ -13783,10 +12705,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1055 */
+  { /* 1053 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_i_i_sc",
@@ -13796,10 +12717,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1056 */
+  { /* 1054 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_ic_i_sc",
@@ -13809,10 +12729,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1057 */
+  { /* 1055 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_i_ic_sc",
@@ -13822,10 +12741,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1058 */
+  { /* 1056 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_ic_ic_sc",
@@ -13835,10 +12753,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_SC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1059 */
+  { /* 1057 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_p_i_i",
@@ -13848,10 +12765,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1060 */
+  { /* 1058 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_p_ic_i",
@@ -13861,10 +12777,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1061 */
+  { /* 1059 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_p_i_ic",
@@ -13874,10 +12789,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1062 */
+  { /* 1060 */
     /* type PARROT_INLINE_OP, */
     "substr",
     "substr_s_p_ic_ic",
@@ -13887,10 +12801,9 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1063 */
+  { /* 1061 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_s_s",
@@ -13900,10 +12813,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1064 */
+  { /* 1062 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_sc_s",
@@ -13913,10 +12825,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1065 */
+  { /* 1063 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_s_sc",
@@ -13926,10 +12837,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1066 */
+  { /* 1064 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_sc_sc",
@@ -13939,10 +12849,9 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1067 */
+  { /* 1065 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_s_s_i",
@@ -13952,10 +12861,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1068 */
+  { /* 1066 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_sc_s_i",
@@ -13965,10 +12873,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1069 */
+  { /* 1067 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_s_sc_i",
@@ -13978,10 +12885,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1070 */
+  { /* 1068 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_sc_sc_i",
@@ -13991,10 +12897,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1071 */
+  { /* 1069 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_s_s_ic",
@@ -14004,10 +12909,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1072 */
+  { /* 1070 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_sc_s_ic",
@@ -14017,10 +12921,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1073 */
+  { /* 1071 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_s_sc_ic",
@@ -14030,10 +12933,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1074 */
+  { /* 1072 */
     /* type PARROT_INLINE_OP, */
     "index",
     "index_i_sc_sc_ic",
@@ -14043,10 +12945,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1075 */
+  { /* 1073 */
     /* type PARROT_INLINE_OP, */
     "sprintf",
     "sprintf_s_s_p",
@@ -14056,10 +12957,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1076 */
+  { /* 1074 */
     /* type PARROT_INLINE_OP, */
     "sprintf",
     "sprintf_s_sc_p",
@@ -14069,10 +12969,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1077 */
+  { /* 1075 */
     /* type PARROT_INLINE_OP, */
     "sprintf",
     "sprintf_p_p_p",
@@ -14082,10 +12981,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1078 */
+  { /* 1076 */
     /* type PARROT_INLINE_OP, */
     "new",
     "new_s",
@@ -14095,10 +12993,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1079 */
+  { /* 1077 */
     /* type PARROT_INLINE_OP, */
     "new",
     "new_s_i",
@@ -14108,10 +13005,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1080 */
+  { /* 1078 */
     /* type PARROT_INLINE_OP, */
     "new",
     "new_s_ic",
@@ -14121,62 +13017,57 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1081 */
+  { /* 1079 */
     /* type PARROT_INLINE_OP, */
     "stringinfo",
     "stringinfo_i_s_i",
     "Parrot_stringinfo_i_s_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1082 */
+  { /* 1080 */
     /* type PARROT_INLINE_OP, */
     "stringinfo",
     "stringinfo_i_sc_i",
     "Parrot_stringinfo_i_sc_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_GNEXT,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1083 */
+  { /* 1081 */
     /* type PARROT_INLINE_OP, */
     "stringinfo",
     "stringinfo_i_s_ic",
     "Parrot_stringinfo_i_s_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1084 */
+  { /* 1082 */
     /* type PARROT_INLINE_OP, */
     "stringinfo",
     "stringinfo_i_sc_ic",
     "Parrot_stringinfo_i_sc_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1085 */
+  { /* 1083 */
     /* type PARROT_INLINE_OP, */
     "upcase",
     "upcase_s_s",
@@ -14186,10 +13077,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1086 */
+  { /* 1084 */
     /* type PARROT_INLINE_OP, */
     "upcase",
     "upcase_s_sc",
@@ -14199,10 +13089,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1087 */
+  { /* 1085 */
     /* type PARROT_INLINE_OP, */
     "upcase",
     "upcase_s",
@@ -14212,10 +13101,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1088 */
+  { /* 1086 */
     /* type PARROT_INLINE_OP, */
     "downcase",
     "downcase_s_s",
@@ -14225,10 +13113,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1089 */
+  { /* 1087 */
     /* type PARROT_INLINE_OP, */
     "downcase",
     "downcase_s_sc",
@@ -14238,10 +13125,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1090 */
+  { /* 1088 */
     /* type PARROT_INLINE_OP, */
     "downcase",
     "downcase_s",
@@ -14251,10 +13137,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1091 */
+  { /* 1089 */
     /* type PARROT_INLINE_OP, */
     "titlecase",
     "titlecase_s_s",
@@ -14264,10 +13149,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1092 */
+  { /* 1090 */
     /* type PARROT_INLINE_OP, */
     "titlecase",
     "titlecase_s_sc",
@@ -14277,10 +13161,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1093 */
+  { /* 1091 */
     /* type PARROT_INLINE_OP, */
     "titlecase",
     "titlecase_s",
@@ -14290,10 +13173,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1094 */
+  { /* 1092 */
     /* type PARROT_FUNCTION_OP, */
     "join",
     "join_s_s_p",
@@ -14303,10 +13185,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1095 */
+  { /* 1093 */
     /* type PARROT_FUNCTION_OP, */
     "join",
     "join_s_sc_p",
@@ -14316,10 +13197,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1096 */
+  { /* 1094 */
     /* type PARROT_FUNCTION_OP, */
     "split",
     "split_p_s_s",
@@ -14329,10 +13209,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1097 */
+  { /* 1095 */
     /* type PARROT_FUNCTION_OP, */
     "split",
     "split_p_sc_s",
@@ -14342,10 +13221,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1098 */
+  { /* 1096 */
     /* type PARROT_FUNCTION_OP, */
     "split",
     "split_p_s_sc",
@@ -14355,10 +13233,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1099 */
+  { /* 1097 */
     /* type PARROT_FUNCTION_OP, */
     "split",
     "split_p_sc_sc",
@@ -14368,10 +13245,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1100 */
+  { /* 1098 */
     /* type PARROT_FUNCTION_OP, */
     "charset",
     "charset_i_s",
@@ -14381,10 +13257,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1101 */
+  { /* 1099 */
     /* type PARROT_FUNCTION_OP, */
     "charset",
     "charset_i_sc",
@@ -14394,10 +13269,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1102 */
+  { /* 1100 */
     /* type PARROT_FUNCTION_OP, */
     "charsetname",
     "charsetname_s_i",
@@ -14407,10 +13281,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1103 */
+  { /* 1101 */
     /* type PARROT_FUNCTION_OP, */
     "charsetname",
     "charsetname_s_ic",
@@ -14420,36 +13293,33 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1104 */
+  { /* 1102 */
     /* type PARROT_FUNCTION_OP, */
     "find_charset",
     "find_charset_i_s",
     "Parrot_find_charset_i_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1105 */
+  { /* 1103 */
     /* type PARROT_FUNCTION_OP, */
     "find_charset",
     "find_charset_i_sc",
     "Parrot_find_charset_i_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1106 */
+  { /* 1104 */
     /* type PARROT_FUNCTION_OP, */
     "trans_charset",
     "trans_charset_s_i",
@@ -14459,10 +13329,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1107 */
+  { /* 1105 */
     /* type PARROT_FUNCTION_OP, */
     "trans_charset",
     "trans_charset_s_ic",
@@ -14472,10 +13341,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1108 */
+  { /* 1106 */
     /* type PARROT_FUNCTION_OP, */
     "trans_charset",
     "trans_charset_s_s_i",
@@ -14485,10 +13353,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1109 */
+  { /* 1107 */
     /* type PARROT_FUNCTION_OP, */
     "trans_charset",
     "trans_charset_s_sc_i",
@@ -14498,10 +13365,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1110 */
+  { /* 1108 */
     /* type PARROT_FUNCTION_OP, */
     "trans_charset",
     "trans_charset_s_s_ic",
@@ -14511,10 +13377,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1111 */
+  { /* 1109 */
     /* type PARROT_FUNCTION_OP, */
     "trans_charset",
     "trans_charset_s_sc_ic",
@@ -14524,10 +13389,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1112 */
+  { /* 1110 */
     /* type PARROT_FUNCTION_OP, */
     "encoding",
     "encoding_i_s",
@@ -14537,10 +13401,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1113 */
+  { /* 1111 */
     /* type PARROT_FUNCTION_OP, */
     "encoding",
     "encoding_i_sc",
@@ -14550,10 +13413,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1114 */
+  { /* 1112 */
     /* type PARROT_FUNCTION_OP, */
     "encodingname",
     "encodingname_s_i",
@@ -14563,10 +13425,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1115 */
+  { /* 1113 */
     /* type PARROT_FUNCTION_OP, */
     "encodingname",
     "encodingname_s_ic",
@@ -14576,36 +13437,33 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1116 */
+  { /* 1114 */
     /* type PARROT_FUNCTION_OP, */
     "find_encoding",
     "find_encoding_i_s",
     "Parrot_find_encoding_i_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1117 */
+  { /* 1115 */
     /* type PARROT_FUNCTION_OP, */
     "find_encoding",
     "find_encoding_i_sc",
     "Parrot_find_encoding_i_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1118 */
+  { /* 1116 */
     /* type PARROT_FUNCTION_OP, */
     "trans_encoding",
     "trans_encoding_s_i",
@@ -14615,10 +13473,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1119 */
+  { /* 1117 */
     /* type PARROT_FUNCTION_OP, */
     "trans_encoding",
     "trans_encoding_s_ic",
@@ -14628,10 +13485,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1120 */
+  { /* 1118 */
     /* type PARROT_FUNCTION_OP, */
     "trans_encoding",
     "trans_encoding_s_s_i",
@@ -14641,10 +13497,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1121 */
+  { /* 1119 */
     /* type PARROT_FUNCTION_OP, */
     "trans_encoding",
     "trans_encoding_s_sc_i",
@@ -14654,10 +13509,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1122 */
+  { /* 1120 */
     /* type PARROT_FUNCTION_OP, */
     "trans_encoding",
     "trans_encoding_s_s_ic",
@@ -14667,10 +13521,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1123 */
+  { /* 1121 */
     /* type PARROT_FUNCTION_OP, */
     "trans_encoding",
     "trans_encoding_s_sc_ic",
@@ -14680,10 +13533,9 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1124 */
+  { /* 1122 */
     /* type PARROT_INLINE_OP, */
     "is_cclass",
     "is_cclass_i_i_s_i",
@@ -14693,10 +13545,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1125 */
+  { /* 1123 */
     /* type PARROT_INLINE_OP, */
     "is_cclass",
     "is_cclass_i_ic_s_i",
@@ -14706,10 +13557,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1126 */
+  { /* 1124 */
     /* type PARROT_INLINE_OP, */
     "is_cclass",
     "is_cclass_i_i_sc_i",
@@ -14719,10 +13569,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1127 */
+  { /* 1125 */
     /* type PARROT_INLINE_OP, */
     "is_cclass",
     "is_cclass_i_ic_sc_i",
@@ -14732,10 +13581,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1128 */
+  { /* 1126 */
     /* type PARROT_INLINE_OP, */
     "is_cclass",
     "is_cclass_i_i_s_ic",
@@ -14745,10 +13593,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1129 */
+  { /* 1127 */
     /* type PARROT_INLINE_OP, */
     "is_cclass",
     "is_cclass_i_ic_s_ic",
@@ -14758,10 +13605,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1130 */
+  { /* 1128 */
     /* type PARROT_INLINE_OP, */
     "is_cclass",
     "is_cclass_i_i_sc_ic",
@@ -14771,10 +13617,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1131 */
+  { /* 1129 */
     /* type PARROT_INLINE_OP, */
     "is_cclass",
     "is_cclass_i_ic_sc_ic",
@@ -14784,10 +13629,9 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1132 */
+  { /* 1130 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_i_s_i_i",
@@ -14797,10 +13641,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1133 */
+  { /* 1131 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_ic_s_i_i",
@@ -14810,10 +13653,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1134 */
+  { /* 1132 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_i_sc_i_i",
@@ -14823,10 +13665,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1135 */
+  { /* 1133 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_ic_sc_i_i",
@@ -14836,10 +13677,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1136 */
+  { /* 1134 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_i_s_ic_i",
@@ -14849,10 +13689,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1137 */
+  { /* 1135 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_ic_s_ic_i",
@@ -14862,10 +13701,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1138 */
+  { /* 1136 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_i_sc_ic_i",
@@ -14875,10 +13713,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1139 */
+  { /* 1137 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_ic_sc_ic_i",
@@ -14888,10 +13725,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1140 */
+  { /* 1138 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_i_s_i_ic",
@@ -14901,10 +13737,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1141 */
+  { /* 1139 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_ic_s_i_ic",
@@ -14914,10 +13749,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1142 */
+  { /* 1140 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_i_sc_i_ic",
@@ -14927,10 +13761,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1143 */
+  { /* 1141 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_ic_sc_i_ic",
@@ -14940,10 +13773,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1144 */
+  { /* 1142 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_i_s_ic_ic",
@@ -14953,10 +13785,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1145 */
+  { /* 1143 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_ic_s_ic_ic",
@@ -14966,10 +13797,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1146 */
+  { /* 1144 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_i_sc_ic_ic",
@@ -14979,10 +13809,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1147 */
+  { /* 1145 */
     /* type PARROT_INLINE_OP, */
     "find_cclass",
     "find_cclass_i_ic_sc_ic_ic",
@@ -14992,10 +13821,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1148 */
+  { /* 1146 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_i_s_i_i",
@@ -15005,10 +13833,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1149 */
+  { /* 1147 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_ic_s_i_i",
@@ -15018,10 +13845,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1150 */
+  { /* 1148 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_i_sc_i_i",
@@ -15031,10 +13857,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1151 */
+  { /* 1149 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_ic_sc_i_i",
@@ -15044,10 +13869,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1152 */
+  { /* 1150 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_i_s_ic_i",
@@ -15057,10 +13881,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1153 */
+  { /* 1151 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_ic_s_ic_i",
@@ -15070,10 +13893,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1154 */
+  { /* 1152 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_i_sc_ic_i",
@@ -15083,10 +13905,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1155 */
+  { /* 1153 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_ic_sc_ic_i",
@@ -15096,10 +13917,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1156 */
+  { /* 1154 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_i_s_i_ic",
@@ -15109,10 +13929,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1157 */
+  { /* 1155 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_ic_s_i_ic",
@@ -15122,10 +13941,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1158 */
+  { /* 1156 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_i_sc_i_ic",
@@ -15135,10 +13953,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1159 */
+  { /* 1157 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_ic_sc_i_ic",
@@ -15148,10 +13965,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1160 */
+  { /* 1158 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_i_s_ic_ic",
@@ -15161,10 +13977,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1161 */
+  { /* 1159 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_ic_s_ic_ic",
@@ -15174,10 +13989,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1162 */
+  { /* 1160 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_i_sc_ic_ic",
@@ -15187,10 +14001,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1163 */
+  { /* 1161 */
     /* type PARROT_INLINE_OP, */
     "find_not_cclass",
     "find_not_cclass_i_ic_sc_ic_ic",
@@ -15200,10 +14013,9 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0, 0 }
   },
-  { /* 1164 */
+  { /* 1162 */
     /* type PARROT_FUNCTION_OP, */
     "escape",
     "escape_s_s",
@@ -15213,10 +14025,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1165 */
+  { /* 1163 */
     /* type PARROT_FUNCTION_OP, */
     "compose",
     "compose_s_s",
@@ -15226,10 +14037,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1166 */
+  { /* 1164 */
     /* type PARROT_FUNCTION_OP, */
     "compose",
     "compose_s_sc",
@@ -15239,10 +14049,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1167 */
+  { /* 1165 */
     /* type PARROT_INLINE_OP, */
     "spawnw",
     "spawnw_i_s",
@@ -15252,10 +14061,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1168 */
+  { /* 1166 */
     /* type PARROT_INLINE_OP, */
     "spawnw",
     "spawnw_i_sc",
@@ -15265,10 +14073,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1169 */
+  { /* 1167 */
     /* type PARROT_INLINE_OP, */
     "spawnw",
     "spawnw_i_p",
@@ -15278,10 +14085,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1170 */
+  { /* 1168 */
     /* type PARROT_INLINE_OP, */
     "err",
     "err_i",
@@ -15291,10 +14097,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1171 */
+  { /* 1169 */
     /* type PARROT_FUNCTION_OP, */
     "err",
     "err_s",
@@ -15304,10 +14109,9 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1172 */
+  { /* 1170 */
     /* type PARROT_FUNCTION_OP, */
     "err",
     "err_s_i",
@@ -15317,10 +14121,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1173 */
+  { /* 1171 */
     /* type PARROT_FUNCTION_OP, */
     "err",
     "err_s_ic",
@@ -15330,10 +14133,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1174 */
+  { /* 1172 */
     /* type PARROT_INLINE_OP, */
     "time",
     "time_i",
@@ -15343,10 +14145,9 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1175 */
+  { /* 1173 */
     /* type PARROT_INLINE_OP, */
     "time",
     "time_n",
@@ -15356,10 +14157,9 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1176 */
+  { /* 1174 */
     /* type PARROT_FUNCTION_OP, */
     "gmtime",
     "gmtime_s_i",
@@ -15369,10 +14169,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1177 */
+  { /* 1175 */
     /* type PARROT_FUNCTION_OP, */
     "gmtime",
     "gmtime_s_ic",
@@ -15382,10 +14181,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1178 */
+  { /* 1176 */
     /* type PARROT_FUNCTION_OP, */
     "localtime",
     "localtime_s_i",
@@ -15395,10 +14193,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1179 */
+  { /* 1177 */
     /* type PARROT_FUNCTION_OP, */
     "localtime",
     "localtime_s_ic",
@@ -15408,10 +14205,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1180 */
+  { /* 1178 */
     /* type PARROT_FUNCTION_OP, */
     "decodetime",
     "decodetime_p_i",
@@ -15421,10 +14217,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1181 */
+  { /* 1179 */
     /* type PARROT_FUNCTION_OP, */
     "decodetime",
     "decodetime_p_ic",
@@ -15434,10 +14229,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1182 */
+  { /* 1180 */
     /* type PARROT_FUNCTION_OP, */
     "decodelocaltime",
     "decodelocaltime_p_i",
@@ -15447,10 +14241,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1183 */
+  { /* 1181 */
     /* type PARROT_FUNCTION_OP, */
     "decodelocaltime",
     "decodelocaltime_p_ic",
@@ -15460,10 +14253,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1184 */
+  { /* 1182 */
     /* type PARROT_INLINE_OP, */
     "sysinfo",
     "sysinfo_s_i",
@@ -15473,10 +14265,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1185 */
+  { /* 1183 */
     /* type PARROT_INLINE_OP, */
     "sysinfo",
     "sysinfo_s_ic",
@@ -15486,10 +14277,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1186 */
+  { /* 1184 */
     /* type PARROT_INLINE_OP, */
     "sysinfo",
     "sysinfo_i_i",
@@ -15499,10 +14289,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1187 */
+  { /* 1185 */
     /* type PARROT_INLINE_OP, */
     "sysinfo",
     "sysinfo_i_ic",
@@ -15512,62 +14301,57 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1188 */
+  { /* 1186 */
     /* type PARROT_INLINE_OP, */
     "sleep",
     "sleep_i",
     "Parrot_sleep_i",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT|PARROT_JUMP_GNEXT,
+    0,
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1189 */
+  { /* 1187 */
     /* type PARROT_INLINE_OP, */
     "sleep",
     "sleep_ic",
     "Parrot_sleep_ic",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1190 */
+  { /* 1188 */
     /* type PARROT_INLINE_OP, */
     "sleep",
     "sleep_n",
     "Parrot_sleep_n",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1191 */
+  { /* 1189 */
     /* type PARROT_INLINE_OP, */
     "sleep",
     "sleep_nc",
     "Parrot_sleep_nc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     2,
     { PARROT_ARG_NC },
     { PARROT_ARGDIR_IN },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1192 */
+  { /* 1190 */
     /* type PARROT_INLINE_OP, */
     "sizeof",
     "sizeof_i_i",
@@ -15577,10 +14361,9 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1193 */
+  { /* 1191 */
     /* type PARROT_INLINE_OP, */
     "sizeof",
     "sizeof_i_ic",
@@ -15590,88 +14373,81 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1194 */
+  { /* 1192 */
     /* type PARROT_FUNCTION_OP, */
     "store_lex",
     "store_lex_s_p",
     "Parrot_store_lex_s_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1195 */
+  { /* 1193 */
     /* type PARROT_FUNCTION_OP, */
     "store_lex",
     "store_lex_sc_p",
     "Parrot_store_lex_sc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1196 */
+  { /* 1194 */
     /* type PARROT_FUNCTION_OP, */
     "store_dynamic_lex",
     "store_dynamic_lex_s_p",
     "Parrot_store_dynamic_lex_s_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1197 */
+  { /* 1195 */
     /* type PARROT_FUNCTION_OP, */
     "store_dynamic_lex",
     "store_dynamic_lex_sc_p",
     "Parrot_store_dynamic_lex_sc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1198 */
+  { /* 1196 */
     /* type PARROT_FUNCTION_OP, */
     "find_lex",
     "find_lex_p_s",
     "Parrot_find_lex_p_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1199 */
+  { /* 1197 */
     /* type PARROT_FUNCTION_OP, */
     "find_lex",
     "find_lex_p_sc",
     "Parrot_find_lex_p_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1200 */
+  { /* 1198 */
     /* type PARROT_FUNCTION_OP, */
     "find_dynamic_lex",
     "find_dynamic_lex_p_s",
@@ -15681,10 +14457,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1201 */
+  { /* 1199 */
     /* type PARROT_FUNCTION_OP, */
     "find_dynamic_lex",
     "find_dynamic_lex_p_sc",
@@ -15694,10 +14469,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1202 */
+  { /* 1200 */
     /* type PARROT_FUNCTION_OP, */
     "find_caller_lex",
     "find_caller_lex_p_s",
@@ -15707,10 +14481,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1203 */
+  { /* 1201 */
     /* type PARROT_FUNCTION_OP, */
     "find_caller_lex",
     "find_caller_lex_p_sc",
@@ -15720,10 +14493,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1204 */
+  { /* 1202 */
     /* type PARROT_FUNCTION_OP, */
     "get_namespace",
     "get_namespace_p",
@@ -15733,10 +14505,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1205 */
+  { /* 1203 */
     /* type PARROT_FUNCTION_OP, */
     "get_namespace",
     "get_namespace_p_p",
@@ -15746,10 +14517,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1206 */
+  { /* 1204 */
     /* type PARROT_FUNCTION_OP, */
     "get_namespace",
     "get_namespace_p_pc",
@@ -15759,10 +14529,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1207 */
+  { /* 1205 */
     /* type PARROT_FUNCTION_OP, */
     "get_hll_namespace",
     "get_hll_namespace_p",
@@ -15772,10 +14541,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1208 */
+  { /* 1206 */
     /* type PARROT_FUNCTION_OP, */
     "get_hll_namespace",
     "get_hll_namespace_p_p",
@@ -15785,10 +14553,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1209 */
+  { /* 1207 */
     /* type PARROT_FUNCTION_OP, */
     "get_hll_namespace",
     "get_hll_namespace_p_pc",
@@ -15798,10 +14565,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1210 */
+  { /* 1208 */
     /* type PARROT_FUNCTION_OP, */
     "get_root_namespace",
     "get_root_namespace_p",
@@ -15811,10 +14577,9 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 },
-    0
+    { 0 }
   },
-  { /* 1211 */
+  { /* 1209 */
     /* type PARROT_FUNCTION_OP, */
     "get_root_namespace",
     "get_root_namespace_p_p",
@@ -15824,10 +14589,9 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1212 */
+  { /* 1210 */
     /* type PARROT_FUNCTION_OP, */
     "get_root_namespace",
     "get_root_namespace_p_pc",
@@ -15837,244 +14601,225 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1213 */
+  { /* 1211 */
     /* type PARROT_FUNCTION_OP, */
     "get_global",
     "get_global_p_s",
     "Parrot_get_global_p_s",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1214 */
+  { /* 1212 */
     /* type PARROT_FUNCTION_OP, */
     "get_global",
     "get_global_p_sc",
     "Parrot_get_global_p_sc",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1215 */
+  { /* 1213 */
     /* type PARROT_FUNCTION_OP, */
     "get_global",
     "get_global_p_p_s",
     "Parrot_get_global_p_p_s",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1216 */
+  { /* 1214 */
     /* type PARROT_FUNCTION_OP, */
     "get_global",
     "get_global_p_pc_s",
     "Parrot_get_global_p_pc_s",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1217 */
+  { /* 1215 */
     /* type PARROT_FUNCTION_OP, */
     "get_global",
     "get_global_p_p_sc",
     "Parrot_get_global_p_p_sc",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1218 */
+  { /* 1216 */
     /* type PARROT_FUNCTION_OP, */
     "get_global",
     "get_global_p_pc_sc",
     "Parrot_get_global_p_pc_sc",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1219 */
+  { /* 1217 */
     /* type PARROT_FUNCTION_OP, */
     "get_hll_global",
     "get_hll_global_p_s",
     "Parrot_get_hll_global_p_s",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1220 */
+  { /* 1218 */
     /* type PARROT_FUNCTION_OP, */
     "get_hll_global",
     "get_hll_global_p_sc",
     "Parrot_get_hll_global_p_sc",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1221 */
+  { /* 1219 */
     /* type PARROT_FUNCTION_OP, */
     "get_hll_global",
     "get_hll_global_p_p_s",
     "Parrot_get_hll_global_p_p_s",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1222 */
+  { /* 1220 */
     /* type PARROT_FUNCTION_OP, */
     "get_hll_global",
     "get_hll_global_p_pc_s",
     "Parrot_get_hll_global_p_pc_s",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1223 */
+  { /* 1221 */
     /* type PARROT_FUNCTION_OP, */
     "get_hll_global",
     "get_hll_global_p_p_sc",
     "Parrot_get_hll_global_p_p_sc",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1224 */
+  { /* 1222 */
     /* type PARROT_FUNCTION_OP, */
     "get_hll_global",
     "get_hll_global_p_pc_sc",
     "Parrot_get_hll_global_p_pc_sc",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1225 */
+  { /* 1223 */
     /* type PARROT_FUNCTION_OP, */
     "get_root_global",
     "get_root_global_p_s",
     "Parrot_get_root_global_p_s",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1226 */
+  { /* 1224 */
     /* type PARROT_FUNCTION_OP, */
     "get_root_global",
     "get_root_global_p_sc",
     "Parrot_get_root_global_p_sc",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1227 */
+  { /* 1225 */
     /* type PARROT_FUNCTION_OP, */
     "get_root_global",
     "get_root_global_p_p_s",
     "Parrot_get_root_global_p_p_s",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1228 */
+  { /* 1226 */
     /* type PARROT_FUNCTION_OP, */
     "get_root_global",
     "get_root_global_p_pc_s",
     "Parrot_get_root_global_p_pc_s",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1229 */
+  { /* 1227 */
     /* type PARROT_FUNCTION_OP, */
     "get_root_global",
     "get_root_global_p_p_sc",
     "Parrot_get_root_global_p_p_sc",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1230 */
+  { /* 1228 */
     /* type PARROT_FUNCTION_OP, */
     "get_root_global",
     "get_root_global_p_pc_sc",
     "Parrot_get_root_global_p_pc_sc",
     /* "",  body */
-    PARROT_JUMP_ENEXT,
+    0,
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1231 */
+  { /* 1229 */
     /* type PARROT_FUNCTION_OP, */
     "set_global",
     "set_global_s_p",
@@ -16084,10 +14829,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1232 */
+  { /* 1230 */
     /* type PARROT_FUNCTION_OP, */
     "set_global",
     "set_global_sc_p",
@@ -16097,10 +14841,9 @@
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1233 */
+  { /* 1231 */
     /* type PARROT_FUNCTION_OP, */
     "set_global",
     "set_global_p_s_p",
@@ -16110,10 +14853,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1234 */
+  { /* 1232 */
     /* type PARROT_FUNCTION_OP, */
     "set_global",
     "set_global_pc_s_p",
@@ -16123,10 +14865,9 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1235 */
+  { /* 1233 */
     /* type PARROT_FUNCTION_OP, */
     "set_global",
     "set_global_p_sc_p",
@@ -16136,10 +14877,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1236 */
+  { /* 1234 */
     /* type PARROT_FUNCTION_OP, */
     "set_global",
     "set_global_pc_sc_p",
@@ -16149,10 +14889,9 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1237 */
+  { /* 1235 */
     /* type PARROT_FUNCTION_OP, */
     "set_hll_global",
     "set_hll_global_s_p",
@@ -16162,10 +14901,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1238 */
+  { /* 1236 */
     /* type PARROT_FUNCTION_OP, */
     "set_hll_global",
     "set_hll_global_sc_p",
@@ -16175,10 +14913,9 @@
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1239 */
+  { /* 1237 */
     /* type PARROT_FUNCTION_OP, */
     "set_hll_global",
     "set_hll_global_p_s_p",
@@ -16188,10 +14925,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1240 */
+  { /* 1238 */
     /* type PARROT_FUNCTION_OP, */
     "set_hll_global",
     "set_hll_global_pc_s_p",
@@ -16201,10 +14937,9 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1241 */
+  { /* 1239 */
     /* type PARROT_FUNCTION_OP, */
     "set_hll_global",
     "set_hll_global_p_sc_p",
@@ -16214,10 +14949,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1242 */
+  { /* 1240 */
     /* type PARROT_FUNCTION_OP, */
     "set_hll_global",
     "set_hll_global_pc_sc_p",
@@ -16227,10 +14961,9 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1243 */
+  { /* 1241 */
     /* type PARROT_FUNCTION_OP, */
     "set_root_global",
     "set_root_global_s_p",
@@ -16240,10 +14973,9 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1244 */
+  { /* 1242 */
     /* type PARROT_FUNCTION_OP, */
     "set_root_global",
     "set_root_global_sc_p",
@@ -16253,10 +14985,9 @@
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1245 */
+  { /* 1243 */
     /* type PARROT_FUNCTION_OP, */
     "set_root_global",
     "set_root_global_p_s_p",
@@ -16266,10 +14997,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1246 */
+  { /* 1244 */
     /* type PARROT_FUNCTION_OP, */
     "set_root_global",
     "set_root_global_pc_s_p",
@@ -16279,10 +15009,9 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1247 */
+  { /* 1245 */
     /* type PARROT_FUNCTION_OP, */
     "set_root_global",
     "set_root_global_p_sc_p",
@@ -16292,10 +15021,9 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1248 */
+  { /* 1246 */
     /* type PARROT_FUNCTION_OP, */
     "set_root_global",
     "set_root_global_pc_sc_p",
@@ -16305,62 +15033,57 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 },
-    0
+    { 0, 0, 0 }
   },
-  { /* 1249 */
+  { /* 1247 */
     /* type PARROT_FUNCTION_OP, */
     "find_name",
     "find_name_p_s",
     "Parrot_find_name_p_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1250 */
+  { /* 1248 */
     /* type PARROT_FUNCTION_OP, */
     "find_name",
     "find_name_p_sc",
     "Parrot_find_name_p_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1251 */
+  { /* 1249 */
     /* type PARROT_INLINE_OP, */
     "find_sub_not_null",
     "find_sub_not_null_p_s",
     "Parrot_find_sub_not_null_p_s",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1252 */
+  { /* 1250 */
     /* type PARROT_INLINE_OP, */
     "find_sub_not_null",
     "find_sub_not_null_p_sc",
     "Parrot_find_sub_not_null_p_sc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 },
-    0
+    { 0, 0 }
   },
-  { /* 1253 */
+  { /* 1251 */
     /* type PARROT_FUNCTION_OP, */
     "trap",
     "trap",
@@ -16368,1947 +15091,1896 @@
     /* "",  body */
     0,
     1,
-    { 0 },
-    { 0 },
-    { 0 },
-    0
+    { (arg_type_t) 0 },
+    { (arg_dir_t) 0 },
+    { 0 }
   },
-  { /* 1254 */
+  { /* 1252 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_p_p",
     "Parrot_fetch_p_p_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1255 */
+  { /* 1253 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_p_p",
     "Parrot_fetch_p_pc_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1256 */
+  { /* 1254 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_pc_p",
     "Parrot_fetch_p_p_pc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1257 */
+  { /* 1255 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_pc_p",
     "Parrot_fetch_p_pc_pc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1258 */
+  { /* 1256 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_p_pc",
     "Parrot_fetch_p_p_p_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1259 */
+  { /* 1257 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_p_pc",
     "Parrot_fetch_p_pc_p_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1260 */
+  { /* 1258 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_pc_pc",
     "Parrot_fetch_p_p_pc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1261 */
+  { /* 1259 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_pc_pc",
     "Parrot_fetch_p_pc_pc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1262 */
+  { /* 1260 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_i_p",
     "Parrot_fetch_p_p_i_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1263 */
+  { /* 1261 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_i_p",
     "Parrot_fetch_p_pc_i_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1264 */
+  { /* 1262 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_ic_p",
     "Parrot_fetch_p_p_ic_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1265 */
+  { /* 1263 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_ic_p",
     "Parrot_fetch_p_pc_ic_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_IC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1266 */
+  { /* 1264 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_i_pc",
     "Parrot_fetch_p_p_i_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1267 */
+  { /* 1265 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_i_pc",
     "Parrot_fetch_p_pc_i_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_I, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1268 */
+  { /* 1266 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_ic_pc",
     "Parrot_fetch_p_p_ic_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1269 */
+  { /* 1267 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_ic_pc",
     "Parrot_fetch_p_pc_ic_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_IC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1270 */
+  { /* 1268 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_s_p",
     "Parrot_fetch_p_p_s_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1271 */
+  { /* 1269 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_s_p",
     "Parrot_fetch_p_pc_s_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1272 */
+  { /* 1270 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_sc_p",
     "Parrot_fetch_p_p_sc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1273 */
+  { /* 1271 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_sc_p",
     "Parrot_fetch_p_pc_sc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1274 */
+  { /* 1272 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_s_pc",
     "Parrot_fetch_p_p_s_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1275 */
+  { /* 1273 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_s_pc",
     "Parrot_fetch_p_pc_s_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1276 */
+  { /* 1274 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_p_sc_pc",
     "Parrot_fetch_p_p_sc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1277 */
+  { /* 1275 */
     /* type PARROT_INLINE_OP, */
     "fetch",
     "fetch_p_pc_sc_pc",
     "Parrot_fetch_p_pc_sc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1278 */
+  { /* 1276 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_p_p",
     "Parrot_vivify_p_p_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1279 */
+  { /* 1277 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_p_p",
     "Parrot_vivify_p_pc_p_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1280 */
+  { /* 1278 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_pc_p",
     "Parrot_vivify_p_p_pc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1281 */
+  { /* 1279 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_pc_p",
     "Parrot_vivify_p_pc_pc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1282 */
+  { /* 1280 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_p_pc",
     "Parrot_vivify_p_p_p_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1283 */
+  { /* 1281 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_p_pc",
     "Parrot_vivify_p_pc_p_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1284 */
+  { /* 1282 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_pc_pc",
     "Parrot_vivify_p_p_pc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1285 */
+  { /* 1283 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_pc_pc",
     "Parrot_vivify_p_pc_pc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1286 */
+  { /* 1284 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_i_p",
     "Parrot_vivify_p_p_i_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1287 */
+  { /* 1285 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_i_p",
     "Parrot_vivify_p_pc_i_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1288 */
+  { /* 1286 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_ic_p",
     "Parrot_vivify_p_p_ic_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1289 */
+  { /* 1287 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_ic_p",
     "Parrot_vivify_p_pc_ic_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_IC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1290 */
+  { /* 1288 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_i_pc",
     "Parrot_vivify_p_p_i_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1291 */
+  { /* 1289 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_i_pc",
     "Parrot_vivify_p_pc_i_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_I, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1292 */
+  { /* 1290 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_ic_pc",
     "Parrot_vivify_p_p_ic_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1293 */
+  { /* 1291 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_ic_pc",
     "Parrot_vivify_p_pc_ic_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_IC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1294 */
+  { /* 1292 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_s_p",
     "Parrot_vivify_p_p_s_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1295 */
+  { /* 1293 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_s_p",
     "Parrot_vivify_p_pc_s_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1296 */
+  { /* 1294 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_sc_p",
     "Parrot_vivify_p_p_sc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1297 */
+  { /* 1295 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_sc_p",
     "Parrot_vivify_p_pc_sc_p",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1298 */
+  { /* 1296 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_s_pc",
     "Parrot_vivify_p_p_s_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1299 */
+  { /* 1297 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_s_pc",
     "Parrot_vivify_p_pc_s_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1300 */
+  { /* 1298 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_p_sc_pc",
     "Parrot_vivify_p_p_sc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
-  { /* 1301 */
+  { /* 1299 */
     /* type PARROT_INLINE_OP, */
     "vivify",
     "vivify_p_pc_sc_pc",
     "Parrot_vivify_p_pc_sc_pc",
     /* "",  body */
-    PARROT_JUMP_ADDRESS|PARROT_JUMP_ENEXT,
+    0,
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 },
-    0
+    { 0, 0, 0, 0 }
   },
 };
 
 
-INTVAL core_numops = 1302;
+INTVAL core_numops = 1300;
 
 /*
 ** Op Function Table:
 */
 
-static op_func_t core_op_func_table[1303] = {
+static op_func_t core_op_func_table[1301] = {
   Parrot_end,                                        /*      0 */
   Parrot_noop,                                       /*      1 */
   Parrot_cpu_ret,                                    /*      2 */
   Parrot_check_events,                               /*      3 */
   Parrot_check_events__,                             /*      4 */
   Parrot_wrapper__,                                  /*      5 */
-  Parrot_prederef__,                                 /*      6 */
-  Parrot_reserved_ic,                                /*      7 */
-  Parrot_load_bytecode_s,                            /*      8 */
-  Parrot_load_bytecode_sc,                           /*      9 */
-  Parrot_load_language_s,                            /*     10 */
-  Parrot_load_language_sc,                           /*     11 */
-  Parrot_branch_i,                                   /*     12 */
-  Parrot_branch_ic,                                  /*     13 */
-  Parrot_local_branch_p_i,                           /*     14 */
-  Parrot_local_branch_p_ic,                          /*     15 */
-  Parrot_local_return_p,                             /*     16 */
-  Parrot_jump_i,                                     /*     17 */
-  Parrot_jump_ic,                                    /*     18 */
-  Parrot_enternative,                                /*     19 */
-  Parrot_if_i_ic,                                    /*     20 */
-  Parrot_if_n_ic,                                    /*     21 */
-  Parrot_if_s_ic,                                    /*     22 */
-  Parrot_if_p_ic,                                    /*     23 */
-  Parrot_unless_i_ic,                                /*     24 */
-  Parrot_unless_n_ic,                                /*     25 */
-  Parrot_unless_s_ic,                                /*     26 */
-  Parrot_unless_p_ic,                                /*     27 */
-  Parrot_invokecc_p,                                 /*     28 */
-  Parrot_invoke_p_p,                                 /*     29 */
-  Parrot_yield,                                      /*     30 */
-  Parrot_tailcall_p,                                 /*     31 */
-  Parrot_returncc,                                   /*     32 */
-  Parrot_capture_lex_p,                              /*     33 */
-  Parrot_newclosure_p_p,                             /*     34 */
-  Parrot_set_args_pc,                                /*     35 */
-  Parrot_get_results_pc,                             /*     36 */
-  Parrot_get_params_pc,                              /*     37 */
-  Parrot_set_returns_pc,                             /*     38 */
-  Parrot_result_info_p,                              /*     39 */
-  Parrot_set_addr_i_ic,                              /*     40 */
-  Parrot_set_addr_p_ic,                              /*     41 */
-  Parrot_set_addr_p_i,                               /*     42 */
-  Parrot_get_addr_i_p,                               /*     43 */
-  Parrot_schedule_p,                                 /*     44 */
-  Parrot_addhandler_p,                               /*     45 */
-  Parrot_push_eh_ic,                                 /*     46 */
-  Parrot_push_eh_p,                                  /*     47 */
-  Parrot_pop_eh,                                     /*     48 */
-  Parrot_throw_p,                                    /*     49 */
-  Parrot_throw_p_p,                                  /*     50 */
-  Parrot_rethrow_p,                                  /*     51 */
-  Parrot_count_eh_i,                                 /*     52 */
-  Parrot_die_s,                                      /*     53 */
-  Parrot_die_sc,                                     /*     54 */
-  Parrot_die_p,                                      /*     55 */
-  Parrot_die_pc,                                     /*     56 */
-  Parrot_die_i_i,                                    /*     57 */
-  Parrot_die_ic_i,                                   /*     58 */
-  Parrot_die_i_ic,                                   /*     59 */
-  Parrot_die_ic_ic,                                  /*     60 */
-  Parrot_exit_i,                                     /*     61 */
-  Parrot_exit_ic,                                    /*     62 */
-  Parrot_pushmark_i,                                 /*     63 */
-  Parrot_pushmark_ic,                                /*     64 */
-  Parrot_popmark_i,                                  /*     65 */
-  Parrot_popmark_ic,                                 /*     66 */
-  Parrot_pushaction_p,                               /*     67 */
-  Parrot_debug_i,                                    /*     68 */
-  Parrot_debug_ic,                                   /*     69 */
-  Parrot_bounds_i,                                   /*     70 */
-  Parrot_bounds_ic,                                  /*     71 */
-  Parrot_profile_i,                                  /*     72 */
-  Parrot_profile_ic,                                 /*     73 */
-  Parrot_trace_i,                                    /*     74 */
-  Parrot_trace_ic,                                   /*     75 */
-  Parrot_gc_debug_i,                                 /*     76 */
-  Parrot_gc_debug_ic,                                /*     77 */
-  Parrot_interpinfo_i_i,                             /*     78 */
-  Parrot_interpinfo_i_ic,                            /*     79 */
-  Parrot_interpinfo_p_i,                             /*     80 */
-  Parrot_interpinfo_p_ic,                            /*     81 */
-  Parrot_interpinfo_s_i,                             /*     82 */
-  Parrot_interpinfo_s_ic,                            /*     83 */
-  Parrot_warningson_i,                               /*     84 */
-  Parrot_warningson_ic,                              /*     85 */
-  Parrot_warningsoff_i,                              /*     86 */
-  Parrot_warningsoff_ic,                             /*     87 */
-  Parrot_errorson_i,                                 /*     88 */
-  Parrot_errorson_ic,                                /*     89 */
-  Parrot_errorsoff_i,                                /*     90 */
-  Parrot_errorsoff_ic,                               /*     91 */
-  Parrot_runinterp_p_i,                              /*     92 */
-  Parrot_runinterp_p_ic,                             /*     93 */
-  Parrot_getinterp_p,                                /*     94 */
-  Parrot_sweep_ic,                                   /*     95 */
-  Parrot_collect,                                    /*     96 */
-  Parrot_sweepoff,                                   /*     97 */
-  Parrot_sweepon,                                    /*     98 */
-  Parrot_collectoff,                                 /*     99 */
-  Parrot_collecton,                                  /*    100 */
-  Parrot_needs_destroy_p,                            /*    101 */
-  Parrot_loadlib_p_s,                                /*    102 */
-  Parrot_loadlib_p_sc,                               /*    103 */
-  Parrot_dlfunc_p_p_s_s,                             /*    104 */
-  Parrot_dlfunc_p_p_sc_s,                            /*    105 */
-  Parrot_dlfunc_p_p_s_sc,                            /*    106 */
-  Parrot_dlfunc_p_p_sc_sc,                           /*    107 */
-  Parrot_dlvar_p_p_s,                                /*    108 */
-  Parrot_dlvar_p_p_sc,                               /*    109 */
-  Parrot_compreg_s_p,                                /*    110 */
-  Parrot_compreg_sc_p,                               /*    111 */
-  Parrot_compreg_p_s,                                /*    112 */
-  Parrot_compreg_p_sc,                               /*    113 */
-  Parrot_new_callback_p_p_p_s,                       /*    114 */
-  Parrot_new_callback_p_p_p_sc,                      /*    115 */
-  Parrot_annotations_p,                              /*    116 */
-  Parrot_annotations_p_s,                            /*    117 */
-  Parrot_annotations_p_sc,                           /*    118 */
-  Parrot_band_i_i,                                   /*    119 */
-  Parrot_band_i_ic,                                  /*    120 */
-  Parrot_band_p_i,                                   /*    121 */
-  Parrot_band_p_ic,                                  /*    122 */
-  Parrot_band_p_p,                                   /*    123 */
-  Parrot_band_i_i_i,                                 /*    124 */
-  Parrot_band_i_ic_i,                                /*    125 */
-  Parrot_band_i_i_ic,                                /*    126 */
-  Parrot_band_p_p_i,                                 /*    127 */
-  Parrot_band_p_p_ic,                                /*    128 */
-  Parrot_band_p_p_p,                                 /*    129 */
-  Parrot_bands_s_s,                                  /*    130 */
-  Parrot_bands_s_sc,                                 /*    131 */
-  Parrot_bands_p_s,                                  /*    132 */
-  Parrot_bands_p_sc,                                 /*    133 */
-  Parrot_bands_p_p,                                  /*    134 */
-  Parrot_bands_s_s_s,                                /*    135 */
-  Parrot_bands_s_sc_s,                               /*    136 */
-  Parrot_bands_s_s_sc,                               /*    137 */
-  Parrot_bands_p_p_s,                                /*    138 */
-  Parrot_bands_p_p_sc,                               /*    139 */
-  Parrot_bands_p_p_p,                                /*    140 */
-  Parrot_bnot_i,                                     /*    141 */
-  Parrot_bnot_i_i,                                   /*    142 */
-  Parrot_bnot_p,                                     /*    143 */
-  Parrot_bnot_p_p,                                   /*    144 */
-  Parrot_bnots_s,                                    /*    145 */
-  Parrot_bnots_s_s,                                  /*    146 */
-  Parrot_bnots_s_sc,                                 /*    147 */
-  Parrot_bnots_p,                                    /*    148 */
-  Parrot_bnots_p_p,                                  /*    149 */
-  Parrot_bor_i_i,                                    /*    150 */
-  Parrot_bor_i_ic,                                   /*    151 */
-  Parrot_bor_p_i,                                    /*    152 */
-  Parrot_bor_p_ic,                                   /*    153 */
-  Parrot_bor_p_p,                                    /*    154 */
-  Parrot_bor_i_i_i,                                  /*    155 */
-  Parrot_bor_i_ic_i,                                 /*    156 */
-  Parrot_bor_i_i_ic,                                 /*    157 */
-  Parrot_bor_p_p_i,                                  /*    158 */
-  Parrot_bor_p_p_ic,                                 /*    159 */
-  Parrot_bor_p_p_p,                                  /*    160 */
-  Parrot_bors_s_s,                                   /*    161 */
-  Parrot_bors_s_sc,                                  /*    162 */
-  Parrot_bors_p_s,                                   /*    163 */
-  Parrot_bors_p_sc,                                  /*    164 */
-  Parrot_bors_p_p,                                   /*    165 */
-  Parrot_bors_s_s_s,                                 /*    166 */
-  Parrot_bors_s_sc_s,                                /*    167 */
-  Parrot_bors_s_s_sc,                                /*    168 */
-  Parrot_bors_p_p_s,                                 /*    169 */
-  Parrot_bors_p_p_sc,                                /*    170 */
-  Parrot_bors_p_p_p,                                 /*    171 */
-  Parrot_shl_i_i,                                    /*    172 */
-  Parrot_shl_i_ic,                                   /*    173 */
-  Parrot_shl_p_i,                                    /*    174 */
-  Parrot_shl_p_ic,                                   /*    175 */
-  Parrot_shl_p_p,                                    /*    176 */
-  Parrot_shl_i_i_i,                                  /*    177 */
-  Parrot_shl_i_ic_i,                                 /*    178 */
-  Parrot_shl_i_i_ic,                                 /*    179 */
-  Parrot_shl_p_p_i,                                  /*    180 */
-  Parrot_shl_p_p_ic,                                 /*    181 */
-  Parrot_shl_p_p_p,                                  /*    182 */
-  Parrot_shr_i_i,                                    /*    183 */
-  Parrot_shr_i_ic,                                   /*    184 */
-  Parrot_shr_p_i,                                    /*    185 */
-  Parrot_shr_p_ic,                                   /*    186 */
-  Parrot_shr_p_p,                                    /*    187 */
-  Parrot_shr_i_i_i,                                  /*    188 */
-  Parrot_shr_i_ic_i,                                 /*    189 */
-  Parrot_shr_i_i_ic,                                 /*    190 */
-  Parrot_shr_p_p_i,                                  /*    191 */
-  Parrot_shr_p_p_ic,                                 /*    192 */
-  Parrot_shr_p_p_p,                                  /*    193 */
-  Parrot_lsr_i_i,                                    /*    194 */
-  Parrot_lsr_i_ic,                                   /*    195 */
-  Parrot_lsr_p_i,                                    /*    196 */
-  Parrot_lsr_p_ic,                                   /*    197 */
-  Parrot_lsr_p_p,                                    /*    198 */
-  Parrot_lsr_i_i_i,                                  /*    199 */
-  Parrot_lsr_i_ic_i,                                 /*    200 */
-  Parrot_lsr_i_i_ic,                                 /*    201 */
-  Parrot_lsr_p_p_i,                                  /*    202 */
-  Parrot_lsr_p_p_ic,                                 /*    203 */
-  Parrot_lsr_p_p_p,                                  /*    204 */
-  Parrot_rot_i_i_i_ic,                               /*    205 */
-  Parrot_rot_i_ic_i_ic,                              /*    206 */
-  Parrot_rot_i_i_ic_ic,                              /*    207 */
-  Parrot_bxor_i_i,                                   /*    208 */
-  Parrot_bxor_i_ic,                                  /*    209 */
-  Parrot_bxor_p_i,                                   /*    210 */
-  Parrot_bxor_p_ic,                                  /*    211 */
-  Parrot_bxor_p_p,                                   /*    212 */
-  Parrot_bxor_i_i_i,                                 /*    213 */
-  Parrot_bxor_i_ic_i,                                /*    214 */
-  Parrot_bxor_i_i_ic,                                /*    215 */
-  Parrot_bxor_p_p_i,                                 /*    216 */
-  Parrot_bxor_p_p_ic,                                /*    217 */
-  Parrot_bxor_p_p_p,                                 /*    218 */
-  Parrot_bxors_s_s,                                  /*    219 */
-  Parrot_bxors_s_sc,                                 /*    220 */
-  Parrot_bxors_p_s,                                  /*    221 */
-  Parrot_bxors_p_sc,                                 /*    222 */
-  Parrot_bxors_p_p,                                  /*    223 */
-  Parrot_bxors_s_s_s,                                /*    224 */
-  Parrot_bxors_s_sc_s,                               /*    225 */
-  Parrot_bxors_s_s_sc,                               /*    226 */
-  Parrot_bxors_p_p_s,                                /*    227 */
-  Parrot_bxors_p_p_sc,                               /*    228 */
-  Parrot_bxors_p_p_p,                                /*    229 */
-  Parrot_eq_i_i_ic,                                  /*    230 */
-  Parrot_eq_ic_i_ic,                                 /*    231 */
-  Parrot_eq_i_ic_ic,                                 /*    232 */
-  Parrot_eq_n_n_ic,                                  /*    233 */
-  Parrot_eq_nc_n_ic,                                 /*    234 */
-  Parrot_eq_n_nc_ic,                                 /*    235 */
-  Parrot_eq_s_s_ic,                                  /*    236 */
-  Parrot_eq_sc_s_ic,                                 /*    237 */
-  Parrot_eq_s_sc_ic,                                 /*    238 */
-  Parrot_eq_p_p_ic,                                  /*    239 */
-  Parrot_eq_p_i_ic,                                  /*    240 */
-  Parrot_eq_p_ic_ic,                                 /*    241 */
-  Parrot_eq_p_n_ic,                                  /*    242 */
-  Parrot_eq_p_nc_ic,                                 /*    243 */
-  Parrot_eq_p_s_ic,                                  /*    244 */
-  Parrot_eq_p_sc_ic,                                 /*    245 */
-  Parrot_eq_str_p_p_ic,                              /*    246 */
-  Parrot_eq_num_p_p_ic,                              /*    247 */
-  Parrot_eq_addr_s_s_ic,                             /*    248 */
-  Parrot_eq_addr_sc_s_ic,                            /*    249 */
-  Parrot_eq_addr_s_sc_ic,                            /*    250 */
-  Parrot_eq_addr_sc_sc_ic,                           /*    251 */
-  Parrot_eq_addr_p_p_ic,                             /*    252 */
-  Parrot_ne_i_i_ic,                                  /*    253 */
-  Parrot_ne_ic_i_ic,                                 /*    254 */
-  Parrot_ne_i_ic_ic,                                 /*    255 */
-  Parrot_ne_n_n_ic,                                  /*    256 */
-  Parrot_ne_nc_n_ic,                                 /*    257 */
-  Parrot_ne_n_nc_ic,                                 /*    258 */
-  Parrot_ne_s_s_ic,                                  /*    259 */
-  Parrot_ne_sc_s_ic,                                 /*    260 */
-  Parrot_ne_s_sc_ic,                                 /*    261 */
-  Parrot_ne_p_p_ic,                                  /*    262 */
-  Parrot_ne_p_i_ic,                                  /*    263 */
-  Parrot_ne_p_ic_ic,                                 /*    264 */
-  Parrot_ne_p_n_ic,                                  /*    265 */
-  Parrot_ne_p_nc_ic,                                 /*    266 */
-  Parrot_ne_p_s_ic,                                  /*    267 */
-  Parrot_ne_p_sc_ic,                                 /*    268 */
-  Parrot_ne_str_p_p_ic,                              /*    269 */
-  Parrot_ne_num_p_p_ic,                              /*    270 */
-  Parrot_ne_addr_s_s_ic,                             /*    271 */
-  Parrot_ne_addr_sc_s_ic,                            /*    272 */
-  Parrot_ne_addr_s_sc_ic,                            /*    273 */
-  Parrot_ne_addr_sc_sc_ic,                           /*    274 */
-  Parrot_ne_addr_p_p_ic,                             /*    275 */
-  Parrot_lt_i_i_ic,                                  /*    276 */
-  Parrot_lt_ic_i_ic,                                 /*    277 */
-  Parrot_lt_i_ic_ic,                                 /*    278 */
-  Parrot_lt_n_n_ic,                                  /*    279 */
-  Parrot_lt_nc_n_ic,                                 /*    280 */
-  Parrot_lt_n_nc_ic,                                 /*    281 */
-  Parrot_lt_s_s_ic,                                  /*    282 */
-  Parrot_lt_sc_s_ic,                                 /*    283 */
-  Parrot_lt_s_sc_ic,                                 /*    284 */
-  Parrot_lt_p_p_ic,                                  /*    285 */
-  Parrot_lt_p_i_ic,                                  /*    286 */
-  Parrot_lt_p_ic_ic,                                 /*    287 */
-  Parrot_lt_p_n_ic,                                  /*    288 */
-  Parrot_lt_p_nc_ic,                                 /*    289 */
-  Parrot_lt_p_s_ic,                                  /*    290 */
-  Parrot_lt_p_sc_ic,                                 /*    291 */
-  Parrot_lt_str_p_p_ic,                              /*    292 */
-  Parrot_lt_num_p_p_ic,                              /*    293 */
-  Parrot_le_i_i_ic,                                  /*    294 */
-  Parrot_le_ic_i_ic,                                 /*    295 */
-  Parrot_le_i_ic_ic,                                 /*    296 */
-  Parrot_le_n_n_ic,                                  /*    297 */
-  Parrot_le_nc_n_ic,                                 /*    298 */
-  Parrot_le_n_nc_ic,                                 /*    299 */
-  Parrot_le_s_s_ic,                                  /*    300 */
-  Parrot_le_sc_s_ic,                                 /*    301 */
-  Parrot_le_s_sc_ic,                                 /*    302 */
-  Parrot_le_p_p_ic,                                  /*    303 */
-  Parrot_le_p_i_ic,                                  /*    304 */
-  Parrot_le_p_ic_ic,                                 /*    305 */
-  Parrot_le_p_n_ic,                                  /*    306 */
-  Parrot_le_p_nc_ic,                                 /*    307 */
-  Parrot_le_p_s_ic,                                  /*    308 */
-  Parrot_le_p_sc_ic,                                 /*    309 */
-  Parrot_le_str_p_p_ic,                              /*    310 */
-  Parrot_le_num_p_p_ic,                              /*    311 */
-  Parrot_gt_p_p_ic,                                  /*    312 */
-  Parrot_gt_p_i_ic,                                  /*    313 */
-  Parrot_gt_p_ic_ic,                                 /*    314 */
-  Parrot_gt_p_n_ic,                                  /*    315 */
-  Parrot_gt_p_nc_ic,                                 /*    316 */
-  Parrot_gt_p_s_ic,                                  /*    317 */
-  Parrot_gt_p_sc_ic,                                 /*    318 */
-  Parrot_gt_str_p_p_ic,                              /*    319 */
-  Parrot_gt_num_p_p_ic,                              /*    320 */
-  Parrot_ge_p_p_ic,                                  /*    321 */
-  Parrot_ge_p_i_ic,                                  /*    322 */
-  Parrot_ge_p_ic_ic,                                 /*    323 */
-  Parrot_ge_p_n_ic,                                  /*    324 */
-  Parrot_ge_p_nc_ic,                                 /*    325 */
-  Parrot_ge_p_s_ic,                                  /*    326 */
-  Parrot_ge_p_sc_ic,                                 /*    327 */
-  Parrot_ge_str_p_p_ic,                              /*    328 */
-  Parrot_ge_num_p_p_ic,                              /*    329 */
-  Parrot_if_null_p_ic,                               /*    330 */
-  Parrot_if_null_s_ic,                               /*    331 */
-  Parrot_unless_null_p_ic,                           /*    332 */
-  Parrot_unless_null_s_ic,                           /*    333 */
-  Parrot_cmp_i_i_i,                                  /*    334 */
-  Parrot_cmp_i_ic_i,                                 /*    335 */
-  Parrot_cmp_i_i_ic,                                 /*    336 */
-  Parrot_cmp_i_n_n,                                  /*    337 */
-  Parrot_cmp_i_nc_n,                                 /*    338 */
-  Parrot_cmp_i_n_nc,                                 /*    339 */
-  Parrot_cmp_i_s_s,                                  /*    340 */
-  Parrot_cmp_i_sc_s,                                 /*    341 */
-  Parrot_cmp_i_s_sc,                                 /*    342 */
-  Parrot_cmp_i_p_p,                                  /*    343 */
-  Parrot_cmp_i_p_i,                                  /*    344 */
-  Parrot_cmp_i_p_ic,                                 /*    345 */
-  Parrot_cmp_i_p_n,                                  /*    346 */
-  Parrot_cmp_i_p_nc,                                 /*    347 */
-  Parrot_cmp_i_p_s,                                  /*    348 */
-  Parrot_cmp_i_p_sc,                                 /*    349 */
-  Parrot_cmp_str_i_p_p,                              /*    350 */
-  Parrot_cmp_num_i_p_p,                              /*    351 */
-  Parrot_cmp_pmc_p_p_p,                              /*    352 */
-  Parrot_issame_i_p_p,                               /*    353 */
-  Parrot_issame_i_s_s,                               /*    354 */
-  Parrot_issame_i_sc_s,                              /*    355 */
-  Parrot_issame_i_s_sc,                              /*    356 */
-  Parrot_issame_i_sc_sc,                             /*    357 */
-  Parrot_isntsame_i_p_p,                             /*    358 */
-  Parrot_isntsame_i_s_s,                             /*    359 */
-  Parrot_isntsame_i_sc_s,                            /*    360 */
-  Parrot_isntsame_i_s_sc,                            /*    361 */
-  Parrot_isntsame_i_sc_sc,                           /*    362 */
-  Parrot_istrue_i_p,                                 /*    363 */
-  Parrot_isfalse_i_p,                                /*    364 */
-  Parrot_isnull_i_p,                                 /*    365 */
-  Parrot_isnull_i_pc,                                /*    366 */
-  Parrot_isnull_i_s,                                 /*    367 */
-  Parrot_isnull_i_sc,                                /*    368 */
-  Parrot_isgt_i_p_p,                                 /*    369 */
-  Parrot_isge_i_p_p,                                 /*    370 */
-  Parrot_isle_i_i_i,                                 /*    371 */
-  Parrot_isle_i_ic_i,                                /*    372 */
-  Parrot_isle_i_i_ic,                                /*    373 */
-  Parrot_isle_i_n_n,                                 /*    374 */
-  Parrot_isle_i_nc_n,                                /*    375 */
-  Parrot_isle_i_n_nc,                                /*    376 */
-  Parrot_isle_i_s_s,                                 /*    377 */
-  Parrot_isle_i_sc_s,                                /*    378 */
-  Parrot_isle_i_s_sc,                                /*    379 */
-  Parrot_isle_i_p_p,                                 /*    380 */
-  Parrot_islt_i_i_i,                                 /*    381 */
-  Parrot_islt_i_ic_i,                                /*    382 */
-  Parrot_islt_i_i_ic,                                /*    383 */
-  Parrot_islt_i_n_n,                                 /*    384 */
-  Parrot_islt_i_nc_n,                                /*    385 */
-  Parrot_islt_i_n_nc,                                /*    386 */
-  Parrot_islt_i_s_s,                                 /*    387 */
-  Parrot_islt_i_sc_s,                                /*    388 */
-  Parrot_islt_i_s_sc,                                /*    389 */
-  Parrot_islt_i_p_p,                                 /*    390 */
-  Parrot_iseq_i_i_i,                                 /*    391 */
-  Parrot_iseq_i_ic_i,                                /*    392 */
-  Parrot_iseq_i_i_ic,                                /*    393 */
-  Parrot_iseq_i_n_n,                                 /*    394 */
-  Parrot_iseq_i_nc_n,                                /*    395 */
-  Parrot_iseq_i_n_nc,                                /*    396 */
-  Parrot_iseq_i_s_s,                                 /*    397 */
-  Parrot_iseq_i_sc_s,                                /*    398 */
-  Parrot_iseq_i_s_sc,                                /*    399 */
-  Parrot_iseq_i_p_p,                                 /*    400 */
-  Parrot_isne_i_i_i,                                 /*    401 */
-  Parrot_isne_i_ic_i,                                /*    402 */
-  Parrot_isne_i_i_ic,                                /*    403 */
-  Parrot_isne_i_n_n,                                 /*    404 */
-  Parrot_isne_i_nc_n,                                /*    405 */
-  Parrot_isne_i_n_nc,                                /*    406 */
-  Parrot_isne_i_s_s,                                 /*    407 */
-  Parrot_isne_i_sc_s,                                /*    408 */
-  Parrot_isne_i_s_sc,                                /*    409 */
-  Parrot_isne_i_p_p,                                 /*    410 */
-  Parrot_and_i_i_i,                                  /*    411 */
-  Parrot_and_i_ic_i,                                 /*    412 */
-  Parrot_and_i_i_ic,                                 /*    413 */
-  Parrot_and_p_p_p,                                  /*    414 */
-  Parrot_not_i,                                      /*    415 */
-  Parrot_not_i_i,                                    /*    416 */
-  Parrot_not_p,                                      /*    417 */
-  Parrot_not_p_p,                                    /*    418 */
-  Parrot_or_i_i_i,                                   /*    419 */
-  Parrot_or_i_ic_i,                                  /*    420 */
-  Parrot_or_i_i_ic,                                  /*    421 */
-  Parrot_or_p_p_p,                                   /*    422 */
-  Parrot_xor_i_i_i,                                  /*    423 */
-  Parrot_xor_i_ic_i,                                 /*    424 */
-  Parrot_xor_i_i_ic,                                 /*    425 */
-  Parrot_xor_p_p_p,                                  /*    426 */
-  Parrot_debug_init,                                 /*    427 */
-  Parrot_debug_load_sc,                              /*    428 */
-  Parrot_debug_break,                                /*    429 */
-  Parrot_debug_print,                                /*    430 */
-  Parrot_backtrace,                                  /*    431 */
-  Parrot_getline_i,                                  /*    432 */
-  Parrot_getfile_s,                                  /*    433 */
-  Parrot_set_label_p_ic,                             /*    434 */
-  Parrot_get_label_i_p,                              /*    435 */
-  Parrot_close_p,                                    /*    436 */
-  Parrot_fdopen_p_i_s,                               /*    437 */
-  Parrot_fdopen_p_ic_s,                              /*    438 */
-  Parrot_fdopen_p_i_sc,                              /*    439 */
-  Parrot_fdopen_p_ic_sc,                             /*    440 */
-  Parrot_getstdin_p,                                 /*    441 */
-  Parrot_getstdout_p,                                /*    442 */
-  Parrot_getstderr_p,                                /*    443 */
-  Parrot_setstdin_p,                                 /*    444 */
-  Parrot_setstdout_p,                                /*    445 */
-  Parrot_setstderr_p,                                /*    446 */
-  Parrot_open_p_s_s,                                 /*    447 */
-  Parrot_open_p_sc_s,                                /*    448 */
-  Parrot_open_p_s_sc,                                /*    449 */
-  Parrot_open_p_sc_sc,                               /*    450 */
-  Parrot_open_p_s,                                   /*    451 */
-  Parrot_open_p_sc,                                  /*    452 */
-  Parrot_print_i,                                    /*    453 */
-  Parrot_print_ic,                                   /*    454 */
-  Parrot_print_n,                                    /*    455 */
-  Parrot_print_nc,                                   /*    456 */
-  Parrot_print_s,                                    /*    457 */
-  Parrot_print_sc,                                   /*    458 */
-  Parrot_print_p,                                    /*    459 */
-  Parrot_say_i,                                      /*    460 */
-  Parrot_say_ic,                                     /*    461 */
-  Parrot_say_n,                                      /*    462 */
-  Parrot_say_nc,                                     /*    463 */
-  Parrot_say_s,                                      /*    464 */
-  Parrot_say_sc,                                     /*    465 */
-  Parrot_say_p,                                      /*    466 */
-  Parrot_printerr_i,                                 /*    467 */
-  Parrot_printerr_ic,                                /*    468 */
-  Parrot_printerr_n,                                 /*    469 */
-  Parrot_printerr_nc,                                /*    470 */
-  Parrot_printerr_s,                                 /*    471 */
-  Parrot_printerr_sc,                                /*    472 */
-  Parrot_printerr_p,                                 /*    473 */
-  Parrot_print_p_i,                                  /*    474 */
-  Parrot_print_p_ic,                                 /*    475 */
-  Parrot_print_p_n,                                  /*    476 */
-  Parrot_print_p_nc,                                 /*    477 */
-  Parrot_print_p_s,                                  /*    478 */
-  Parrot_print_p_sc,                                 /*    479 */
-  Parrot_print_p_p,                                  /*    480 */
-  Parrot_read_s_i,                                   /*    481 */
-  Parrot_read_s_ic,                                  /*    482 */
-  Parrot_read_s_p_i,                                 /*    483 */
-  Parrot_read_s_p_ic,                                /*    484 */
-  Parrot_readline_s_p,                               /*    485 */
-  Parrot_peek_s,                                     /*    486 */
-  Parrot_peek_s_p,                                   /*    487 */
-  Parrot_stat_i_s_i,                                 /*    488 */
-  Parrot_stat_i_sc_i,                                /*    489 */
-  Parrot_stat_i_s_ic,                                /*    490 */
-  Parrot_stat_i_sc_ic,                               /*    491 */
-  Parrot_stat_i_i_i,                                 /*    492 */
-  Parrot_stat_i_ic_i,                                /*    493 */
-  Parrot_stat_i_i_ic,                                /*    494 */
-  Parrot_stat_i_ic_ic,                               /*    495 */
-  Parrot_seek_p_i_i,                                 /*    496 */
-  Parrot_seek_p_ic_i,                                /*    497 */
-  Parrot_seek_p_i_ic,                                /*    498 */
-  Parrot_seek_p_ic_ic,                               /*    499 */
-  Parrot_seek_p_i_i_i,                               /*    500 */
-  Parrot_seek_p_ic_i_i,                              /*    501 */
-  Parrot_seek_p_i_ic_i,                              /*    502 */
-  Parrot_seek_p_ic_ic_i,                             /*    503 */
-  Parrot_seek_p_i_i_ic,                              /*    504 */
-  Parrot_seek_p_ic_i_ic,                             /*    505 */
-  Parrot_seek_p_i_ic_ic,                             /*    506 */
-  Parrot_seek_p_ic_ic_ic,                            /*    507 */
-  Parrot_tell_i_p,                                   /*    508 */
-  Parrot_tell_i_i_p,                                 /*    509 */
-  Parrot_abs_i,                                      /*    510 */
-  Parrot_abs_n,                                      /*    511 */
-  Parrot_abs_i_i,                                    /*    512 */
-  Parrot_abs_n_n,                                    /*    513 */
-  Parrot_abs_p,                                      /*    514 */
-  Parrot_abs_p_p,                                    /*    515 */
-  Parrot_add_i_i,                                    /*    516 */
-  Parrot_add_i_ic,                                   /*    517 */
-  Parrot_add_n_n,                                    /*    518 */
-  Parrot_add_n_nc,                                   /*    519 */
-  Parrot_add_p_p,                                    /*    520 */
-  Parrot_add_p_i,                                    /*    521 */
-  Parrot_add_p_ic,                                   /*    522 */
-  Parrot_add_p_n,                                    /*    523 */
-  Parrot_add_p_nc,                                   /*    524 */
-  Parrot_add_i_i_i,                                  /*    525 */
-  Parrot_add_i_ic_i,                                 /*    526 */
-  Parrot_add_i_i_ic,                                 /*    527 */
-  Parrot_add_n_n_n,                                  /*    528 */
-  Parrot_add_n_nc_n,                                 /*    529 */
-  Parrot_add_n_n_nc,                                 /*    530 */
-  Parrot_add_p_p_p,                                  /*    531 */
-  Parrot_add_p_p_i,                                  /*    532 */
-  Parrot_add_p_p_ic,                                 /*    533 */
-  Parrot_add_p_p_n,                                  /*    534 */
-  Parrot_add_p_p_nc,                                 /*    535 */
-  Parrot_cmod_i_i_i,                                 /*    536 */
-  Parrot_cmod_i_ic_i,                                /*    537 */
-  Parrot_cmod_i_i_ic,                                /*    538 */
-  Parrot_cmod_p_p_i,                                 /*    539 */
-  Parrot_cmod_p_p_ic,                                /*    540 */
-  Parrot_cmod_p_p_p,                                 /*    541 */
-  Parrot_cmod_n_n_n,                                 /*    542 */
-  Parrot_cmod_n_nc_n,                                /*    543 */
-  Parrot_cmod_n_n_nc,                                /*    544 */
-  Parrot_cmod_p_p_n,                                 /*    545 */
-  Parrot_cmod_p_p_nc,                                /*    546 */
-  Parrot_dec_i,                                      /*    547 */
-  Parrot_dec_n,                                      /*    548 */
-  Parrot_dec_p,                                      /*    549 */
-  Parrot_div_i_i,                                    /*    550 */
-  Parrot_div_i_ic,                                   /*    551 */
-  Parrot_div_n_n,                                    /*    552 */
-  Parrot_div_n_nc,                                   /*    553 */
-  Parrot_div_p_p,                                    /*    554 */
-  Parrot_div_p_i,                                    /*    555 */
-  Parrot_div_p_ic,                                   /*    556 */
-  Parrot_div_p_n,                                    /*    557 */
-  Parrot_div_p_nc,                                   /*    558 */
-  Parrot_div_i_i_i,                                  /*    559 */
-  Parrot_div_i_ic_i,                                 /*    560 */
-  Parrot_div_i_i_ic,                                 /*    561 */
-  Parrot_div_i_ic_ic,                                /*    562 */
-  Parrot_div_n_n_n,                                  /*    563 */
-  Parrot_div_n_nc_n,                                 /*    564 */
-  Parrot_div_n_n_nc,                                 /*    565 */
-  Parrot_div_n_nc_nc,                                /*    566 */
-  Parrot_div_p_p_p,                                  /*    567 */
-  Parrot_div_p_p_i,                                  /*    568 */
-  Parrot_div_p_p_ic,                                 /*    569 */
-  Parrot_div_p_p_n,                                  /*    570 */
-  Parrot_div_p_p_nc,                                 /*    571 */
-  Parrot_fdiv_i_i,                                   /*    572 */
-  Parrot_fdiv_i_ic,                                  /*    573 */
-  Parrot_fdiv_n_n,                                   /*    574 */
-  Parrot_fdiv_n_nc,                                  /*    575 */
-  Parrot_fdiv_p_p,                                   /*    576 */
-  Parrot_fdiv_p_i,                                   /*    577 */
-  Parrot_fdiv_p_ic,                                  /*    578 */
-  Parrot_fdiv_p_n,                                   /*    579 */
-  Parrot_fdiv_p_nc,                                  /*    580 */
-  Parrot_fdiv_i_i_i,                                 /*    581 */
-  Parrot_fdiv_i_ic_i,                                /*    582 */
-  Parrot_fdiv_i_i_ic,                                /*    583 */
-  Parrot_fdiv_n_n_n,                                 /*    584 */
-  Parrot_fdiv_n_nc_n,                                /*    585 */
-  Parrot_fdiv_n_n_nc,                                /*    586 */
-  Parrot_fdiv_p_p_p,                                 /*    587 */
-  Parrot_fdiv_p_p_i,                                 /*    588 */
-  Parrot_fdiv_p_p_ic,                                /*    589 */
-  Parrot_fdiv_p_p_n,                                 /*    590 */
-  Parrot_fdiv_p_p_nc,                                /*    591 */
-  Parrot_ceil_n,                                     /*    592 */
-  Parrot_ceil_i_n,                                   /*    593 */
-  Parrot_ceil_n_n,                                   /*    594 */
-  Parrot_floor_n,                                    /*    595 */
-  Parrot_floor_i_n,                                  /*    596 */
-  Parrot_floor_n_n,                                  /*    597 */
-  Parrot_inc_i,                                      /*    598 */
-  Parrot_inc_n,                                      /*    599 */
-  Parrot_inc_p,                                      /*    600 */
-  Parrot_mod_i_i,                                    /*    601 */
-  Parrot_mod_i_ic,                                   /*    602 */
-  Parrot_mod_n_n,                                    /*    603 */
-  Parrot_mod_n_nc,                                   /*    604 */
-  Parrot_mod_p_p,                                    /*    605 */
-  Parrot_mod_p_i,                                    /*    606 */
-  Parrot_mod_p_ic,                                   /*    607 */
-  Parrot_mod_p_n,                                    /*    608 */
-  Parrot_mod_p_nc,                                   /*    609 */
-  Parrot_mod_i_i_i,                                  /*    610 */
-  Parrot_mod_i_ic_i,                                 /*    611 */
-  Parrot_mod_i_i_ic,                                 /*    612 */
-  Parrot_mod_n_n_n,                                  /*    613 */
-  Parrot_mod_n_nc_n,                                 /*    614 */
-  Parrot_mod_n_n_nc,                                 /*    615 */
-  Parrot_mod_p_p_p,                                  /*    616 */
-  Parrot_mod_p_p_i,                                  /*    617 */
-  Parrot_mod_p_p_ic,                                 /*    618 */
-  Parrot_mod_p_p_n,                                  /*    619 */
-  Parrot_mod_p_p_nc,                                 /*    620 */
-  Parrot_mul_i_i,                                    /*    621 */
-  Parrot_mul_i_ic,                                   /*    622 */
-  Parrot_mul_n_n,                                    /*    623 */
-  Parrot_mul_n_nc,                                   /*    624 */
-  Parrot_mul_p_p,                                    /*    625 */
-  Parrot_mul_p_i,                                    /*    626 */
-  Parrot_mul_p_ic,                                   /*    627 */
-  Parrot_mul_p_n,                                    /*    628 */
-  Parrot_mul_p_nc,                                   /*    629 */
-  Parrot_mul_i_i_i,                                  /*    630 */
-  Parrot_mul_i_ic_i,                                 /*    631 */
-  Parrot_mul_i_i_ic,                                 /*    632 */
-  Parrot_mul_n_n_n,                                  /*    633 */
-  Parrot_mul_n_nc_n,                                 /*    634 */
-  Parrot_mul_n_n_nc,                                 /*    635 */
-  Parrot_mul_p_p_p,                                  /*    636 */
-  Parrot_mul_p_p_i,                                  /*    637 */
-  Parrot_mul_p_p_ic,                                 /*    638 */
-  Parrot_mul_p_p_n,                                  /*    639 */
-  Parrot_mul_p_p_nc,                                 /*    640 */
-  Parrot_neg_i,                                      /*    641 */
-  Parrot_neg_n,                                      /*    642 */
-  Parrot_neg_p,                                      /*    643 */
-  Parrot_neg_i_i,                                    /*    644 */
-  Parrot_neg_n_n,                                    /*    645 */
-  Parrot_neg_p_p,                                    /*    646 */
-  Parrot_pow_n_n_n,                                  /*    647 */
-  Parrot_pow_n_nc_n,                                 /*    648 */
-  Parrot_pow_n_n_nc,                                 /*    649 */
-  Parrot_pow_p_p_p,                                  /*    650 */
-  Parrot_pow_p_p_i,                                  /*    651 */
-  Parrot_pow_p_p_ic,                                 /*    652 */
-  Parrot_pow_p_p_n,                                  /*    653 */
-  Parrot_pow_p_p_nc,                                 /*    654 */
-  Parrot_pow_n_n_i,                                  /*    655 */
-  Parrot_pow_n_nc_i,                                 /*    656 */
-  Parrot_pow_n_n_ic,                                 /*    657 */
-  Parrot_pow_n_nc_ic,                                /*    658 */
-  Parrot_sub_i_i,                                    /*    659 */
-  Parrot_sub_i_ic,                                   /*    660 */
-  Parrot_sub_n_n,                                    /*    661 */
-  Parrot_sub_n_nc,                                   /*    662 */
-  Parrot_sub_p_p,                                    /*    663 */
-  Parrot_sub_p_i,                                    /*    664 */
-  Parrot_sub_p_ic,                                   /*    665 */
-  Parrot_sub_p_n,                                    /*    666 */
-  Parrot_sub_p_nc,                                   /*    667 */
-  Parrot_sub_i_i_i,                                  /*    668 */
-  Parrot_sub_i_ic_i,                                 /*    669 */
-  Parrot_sub_i_i_ic,                                 /*    670 */
-  Parrot_sub_n_n_n,                                  /*    671 */
-  Parrot_sub_n_nc_n,                                 /*    672 */
-  Parrot_sub_n_n_nc,                                 /*    673 */
-  Parrot_sub_p_p_p,                                  /*    674 */
-  Parrot_sub_p_p_i,                                  /*    675 */
-  Parrot_sub_p_p_ic,                                 /*    676 */
-  Parrot_sub_p_p_n,                                  /*    677 */
-  Parrot_sub_p_p_nc,                                 /*    678 */
-  Parrot_sqrt_n_n,                                   /*    679 */
-  Parrot_acos_n_n,                                   /*    680 */
-  Parrot_asec_n_n,                                   /*    681 */
-  Parrot_asin_n_n,                                   /*    682 */
-  Parrot_atan_n_n,                                   /*    683 */
-  Parrot_atan_n_n_n,                                 /*    684 */
-  Parrot_atan_n_nc_n,                                /*    685 */
-  Parrot_atan_n_n_nc,                                /*    686 */
-  Parrot_cos_n_n,                                    /*    687 */
-  Parrot_cosh_n_n,                                   /*    688 */
-  Parrot_exp_n_n,                                    /*    689 */
-  Parrot_ln_n_n,                                     /*    690 */
-  Parrot_log10_n_n,                                  /*    691 */
-  Parrot_log2_n_n,                                   /*    692 */
-  Parrot_sec_n_n,                                    /*    693 */
-  Parrot_sech_n_n,                                   /*    694 */
-  Parrot_sin_n_n,                                    /*    695 */
-  Parrot_sinh_n_n,                                   /*    696 */
-  Parrot_tan_n_n,                                    /*    697 */
-  Parrot_tanh_n_n,                                   /*    698 */
-  Parrot_gcd_i_i_i,                                  /*    699 */
-  Parrot_gcd_i_ic_i,                                 /*    700 */
-  Parrot_gcd_i_i_ic,                                 /*    701 */
-  Parrot_lcm_i_i_i,                                  /*    702 */
-  Parrot_lcm_i_ic_i,                                 /*    703 */
-  Parrot_lcm_i_i_ic,                                 /*    704 */
-  Parrot_fact_i_i,                                   /*    705 */
-  Parrot_fact_n_i,                                   /*    706 */
-  Parrot_callmethodcc_p_s,                           /*    707 */
-  Parrot_callmethodcc_p_sc,                          /*    708 */
-  Parrot_callmethodcc_p_p,                           /*    709 */
-  Parrot_callmethod_p_s_p,                           /*    710 */
-  Parrot_callmethod_p_sc_p,                          /*    711 */
-  Parrot_callmethod_p_p_p,                           /*    712 */
-  Parrot_tailcallmethod_p_s,                         /*    713 */
-  Parrot_tailcallmethod_p_sc,                        /*    714 */
-  Parrot_tailcallmethod_p_p,                         /*    715 */
-  Parrot_addmethod_p_s_p,                            /*    716 */
-  Parrot_addmethod_p_sc_p,                           /*    717 */
-  Parrot_can_i_p_s,                                  /*    718 */
-  Parrot_can_i_p_sc,                                 /*    719 */
-  Parrot_does_i_p_s,                                 /*    720 */
-  Parrot_does_i_p_sc,                                /*    721 */
-  Parrot_does_i_p_p,                                 /*    722 */
-  Parrot_does_i_p_pc,                                /*    723 */
-  Parrot_isa_i_p_s,                                  /*    724 */
-  Parrot_isa_i_p_sc,                                 /*    725 */
-  Parrot_isa_i_p_p,                                  /*    726 */
-  Parrot_isa_i_p_pc,                                 /*    727 */
-  Parrot_newclass_p_s,                               /*    728 */
-  Parrot_newclass_p_sc,                              /*    729 */
-  Parrot_newclass_p_p,                               /*    730 */
-  Parrot_newclass_p_pc,                              /*    731 */
-  Parrot_subclass_p_p,                               /*    732 */
-  Parrot_subclass_p_pc,                              /*    733 */
-  Parrot_subclass_p_p_s,                             /*    734 */
-  Parrot_subclass_p_pc_s,                            /*    735 */
-  Parrot_subclass_p_p_sc,                            /*    736 */
-  Parrot_subclass_p_pc_sc,                           /*    737 */
-  Parrot_subclass_p_p_p,                             /*    738 */
-  Parrot_subclass_p_pc_p,                            /*    739 */
-  Parrot_subclass_p_p_pc,                            /*    740 */
-  Parrot_subclass_p_pc_pc,                           /*    741 */
-  Parrot_subclass_p_s,                               /*    742 */
-  Parrot_subclass_p_sc,                              /*    743 */
-  Parrot_subclass_p_s_s,                             /*    744 */
-  Parrot_subclass_p_sc_s,                            /*    745 */
-  Parrot_subclass_p_s_sc,                            /*    746 */
-  Parrot_subclass_p_sc_sc,                           /*    747 */
-  Parrot_subclass_p_s_p,                             /*    748 */
-  Parrot_subclass_p_sc_p,                            /*    749 */
-  Parrot_subclass_p_s_pc,                            /*    750 */
-  Parrot_subclass_p_sc_pc,                           /*    751 */
-  Parrot_get_class_p_s,                              /*    752 */
-  Parrot_get_class_p_sc,                             /*    753 */
-  Parrot_get_class_p_p,                              /*    754 */
-  Parrot_get_class_p_pc,                             /*    755 */
-  Parrot_class_p_p,                                  /*    756 */
-  Parrot_addparent_p_p,                              /*    757 */
-  Parrot_removeparent_p_p,                           /*    758 */
-  Parrot_addrole_p_p,                                /*    759 */
-  Parrot_addattribute_p_s,                           /*    760 */
-  Parrot_addattribute_p_sc,                          /*    761 */
-  Parrot_removeattribute_p_s,                        /*    762 */
-  Parrot_removeattribute_p_sc,                       /*    763 */
-  Parrot_getattribute_p_p_s,                         /*    764 */
-  Parrot_getattribute_p_p_sc,                        /*    765 */
-  Parrot_getattribute_p_p_p_s,                       /*    766 */
-  Parrot_getattribute_p_p_pc_s,                      /*    767 */
-  Parrot_getattribute_p_p_p_sc,                      /*    768 */
-  Parrot_getattribute_p_p_pc_sc,                     /*    769 */
-  Parrot_setattribute_p_s_p,                         /*    770 */
-  Parrot_setattribute_p_sc_p,                        /*    771 */
-  Parrot_setattribute_p_p_s_p,                       /*    772 */
-  Parrot_setattribute_p_pc_s_p,                      /*    773 */
-  Parrot_setattribute_p_p_sc_p,                      /*    774 */
-  Parrot_setattribute_p_pc_sc_p,                     /*    775 */
-  Parrot_inspect_p_p,                                /*    776 */
-  Parrot_inspect_p_pc,                               /*    777 */
-  Parrot_inspect_p_p_s,                              /*    778 */
-  Parrot_inspect_p_pc_s,                             /*    779 */
-  Parrot_inspect_p_p_sc,                             /*    780 */
-  Parrot_inspect_p_pc_sc,                            /*    781 */
-  Parrot_new_p_s,                                    /*    782 */
-  Parrot_new_p_sc,                                   /*    783 */
-  Parrot_new_p_s_p,                                  /*    784 */
-  Parrot_new_p_sc_p,                                 /*    785 */
-  Parrot_new_p_s_pc,                                 /*    786 */
-  Parrot_new_p_sc_pc,                                /*    787 */
-  Parrot_new_p_p,                                    /*    788 */
-  Parrot_new_p_pc,                                   /*    789 */
-  Parrot_new_p_p_p,                                  /*    790 */
-  Parrot_new_p_pc_p,                                 /*    791 */
-  Parrot_new_p_p_pc,                                 /*    792 */
-  Parrot_new_p_pc_pc,                                /*    793 */
-  Parrot_root_new_p_p,                               /*    794 */
-  Parrot_root_new_p_pc,                              /*    795 */
-  Parrot_root_new_p_p_p,                             /*    796 */
-  Parrot_root_new_p_pc_p,                            /*    797 */
-  Parrot_root_new_p_p_pc,                            /*    798 */
-  Parrot_root_new_p_pc_pc,                           /*    799 */
-  Parrot_typeof_s_p,                                 /*    800 */
-  Parrot_typeof_p_p,                                 /*    801 */
-  Parrot_get_repr_s_p,                               /*    802 */
-  Parrot_find_method_p_p_s,                          /*    803 */
-  Parrot_find_method_p_p_sc,                         /*    804 */
-  Parrot_defined_i_p,                                /*    805 */
-  Parrot_defined_i_p_ki,                             /*    806 */
-  Parrot_defined_i_p_kic,                            /*    807 */
-  Parrot_defined_i_p_k,                              /*    808 */
-  Parrot_defined_i_p_kc,                             /*    809 */
-  Parrot_exists_i_p_ki,                              /*    810 */
-  Parrot_exists_i_p_kic,                             /*    811 */
-  Parrot_exists_i_p_k,                               /*    812 */
-  Parrot_exists_i_p_kc,                              /*    813 */
-  Parrot_delete_p_k,                                 /*    814 */
-  Parrot_delete_p_kc,                                /*    815 */
-  Parrot_delete_p_ki,                                /*    816 */
-  Parrot_delete_p_kic,                               /*    817 */
-  Parrot_elements_i_p,                               /*    818 */
-  Parrot_push_p_i,                                   /*    819 */
-  Parrot_push_p_ic,                                  /*    820 */
-  Parrot_push_p_n,                                   /*    821 */
-  Parrot_push_p_nc,                                  /*    822 */
-  Parrot_push_p_s,                                   /*    823 */
-  Parrot_push_p_sc,                                  /*    824 */
-  Parrot_push_p_p,                                   /*    825 */
-  Parrot_pop_i_p,                                    /*    826 */
-  Parrot_pop_n_p,                                    /*    827 */
-  Parrot_pop_s_p,                                    /*    828 */
-  Parrot_pop_p_p,                                    /*    829 */
-  Parrot_unshift_p_i,                                /*    830 */
-  Parrot_unshift_p_ic,                               /*    831 */
-  Parrot_unshift_p_n,                                /*    832 */
-  Parrot_unshift_p_nc,                               /*    833 */
-  Parrot_unshift_p_s,                                /*    834 */
-  Parrot_unshift_p_sc,                               /*    835 */
-  Parrot_unshift_p_p,                                /*    836 */
-  Parrot_shift_i_p,                                  /*    837 */
-  Parrot_shift_n_p,                                  /*    838 */
-  Parrot_shift_s_p,                                  /*    839 */
-  Parrot_shift_p_p,                                  /*    840 */
-  Parrot_splice_p_p_i_i,                             /*    841 */
-  Parrot_splice_p_p_ic_i,                            /*    842 */
-  Parrot_splice_p_p_i_ic,                            /*    843 */
-  Parrot_splice_p_p_ic_ic,                           /*    844 */
-  Parrot_setprop_p_s_p,                              /*    845 */
-  Parrot_setprop_p_sc_p,                             /*    846 */
-  Parrot_getprop_p_s_p,                              /*    847 */
-  Parrot_getprop_p_sc_p,                             /*    848 */
-  Parrot_delprop_p_s,                                /*    849 */
-  Parrot_delprop_p_sc,                               /*    850 */
-  Parrot_prophash_p_p,                               /*    851 */
-  Parrot_freeze_s_p,                                 /*    852 */
-  Parrot_thaw_p_s,                                   /*    853 */
-  Parrot_thaw_p_sc,                                  /*    854 */
-  Parrot_add_multi_s_s_p,                            /*    855 */
-  Parrot_add_multi_sc_s_p,                           /*    856 */
-  Parrot_add_multi_s_sc_p,                           /*    857 */
-  Parrot_add_multi_sc_sc_p,                          /*    858 */
-  Parrot_find_multi_p_s_s,                           /*    859 */
-  Parrot_find_multi_p_sc_s,                          /*    860 */
-  Parrot_find_multi_p_s_sc,                          /*    861 */
-  Parrot_find_multi_p_sc_sc,                         /*    862 */
-  Parrot_register_p,                                 /*    863 */
-  Parrot_unregister_p,                               /*    864 */
-  Parrot_box_p_i,                                    /*    865 */
-  Parrot_box_p_ic,                                   /*    866 */
-  Parrot_box_p_n,                                    /*    867 */
-  Parrot_box_p_nc,                                   /*    868 */
-  Parrot_box_p_s,                                    /*    869 */
-  Parrot_box_p_sc,                                   /*    870 */
-  Parrot_iter_p_p,                                   /*    871 */
-  Parrot_morph_p_p,                                  /*    872 */
-  Parrot_morph_p_pc,                                 /*    873 */
-  Parrot_clone_s_s,                                  /*    874 */
-  Parrot_clone_s_sc,                                 /*    875 */
-  Parrot_exchange_i_i,                               /*    876 */
-  Parrot_exchange_p_p,                               /*    877 */
-  Parrot_exchange_n_n,                               /*    878 */
-  Parrot_exchange_s_s,                               /*    879 */
-  Parrot_set_i_i,                                    /*    880 */
-  Parrot_set_i_ic,                                   /*    881 */
-  Parrot_set_i_n,                                    /*    882 */
-  Parrot_set_i_nc,                                   /*    883 */
-  Parrot_set_i_s,                                    /*    884 */
-  Parrot_set_i_sc,                                   /*    885 */
-  Parrot_set_n_n,                                    /*    886 */
-  Parrot_set_n_nc,                                   /*    887 */
-  Parrot_set_n_i,                                    /*    888 */
-  Parrot_set_n_ic,                                   /*    889 */
-  Parrot_set_n_s,                                    /*    890 */
-  Parrot_set_n_sc,                                   /*    891 */
-  Parrot_set_n_p,                                    /*    892 */
-  Parrot_set_s_p,                                    /*    893 */
-  Parrot_set_s_s,                                    /*    894 */
-  Parrot_set_s_sc,                                   /*    895 */
-  Parrot_set_s_i,                                    /*    896 */
-  Parrot_set_s_ic,                                   /*    897 */
-  Parrot_set_s_n,                                    /*    898 */
-  Parrot_set_s_nc,                                   /*    899 */
-  Parrot_set_p_pc,                                   /*    900 */
-  Parrot_set_p_p,                                    /*    901 */
-  Parrot_set_p_i,                                    /*    902 */
-  Parrot_set_p_ic,                                   /*    903 */
-  Parrot_set_p_n,                                    /*    904 */
-  Parrot_set_p_nc,                                   /*    905 */
-  Parrot_set_p_s,                                    /*    906 */
-  Parrot_set_p_sc,                                   /*    907 */
-  Parrot_set_i_p,                                    /*    908 */
-  Parrot_assign_p_p,                                 /*    909 */
-  Parrot_assign_p_i,                                 /*    910 */
-  Parrot_assign_p_ic,                                /*    911 */
-  Parrot_assign_p_n,                                 /*    912 */
-  Parrot_assign_p_nc,                                /*    913 */
-  Parrot_assign_p_s,                                 /*    914 */
-  Parrot_assign_p_sc,                                /*    915 */
-  Parrot_assign_s_s,                                 /*    916 */
-  Parrot_assign_s_sc,                                /*    917 */
-  Parrot_setref_p_p,                                 /*    918 */
-  Parrot_deref_p_p,                                  /*    919 */
-  Parrot_setp_ind_i_p,                               /*    920 */
-  Parrot_setp_ind_ic_p,                              /*    921 */
-  Parrot_setn_ind_i_n,                               /*    922 */
-  Parrot_setn_ind_ic_n,                              /*    923 */
-  Parrot_setn_ind_i_nc,                              /*    924 */
-  Parrot_setn_ind_ic_nc,                             /*    925 */
-  Parrot_sets_ind_i_s,                               /*    926 */
-  Parrot_sets_ind_ic_s,                              /*    927 */
-  Parrot_sets_ind_i_sc,                              /*    928 */
-  Parrot_sets_ind_ic_sc,                             /*    929 */
-  Parrot_seti_ind_i_i,                               /*    930 */
-  Parrot_seti_ind_ic_i,                              /*    931 */
-  Parrot_seti_ind_i_ic,                              /*    932 */
-  Parrot_seti_ind_ic_ic,                             /*    933 */
-  Parrot_set_p_ki_i,                                 /*    934 */
-  Parrot_set_p_kic_i,                                /*    935 */
-  Parrot_set_p_ki_ic,                                /*    936 */
-  Parrot_set_p_kic_ic,                               /*    937 */
-  Parrot_set_p_ki_n,                                 /*    938 */
-  Parrot_set_p_kic_n,                                /*    939 */
-  Parrot_set_p_ki_nc,                                /*    940 */
-  Parrot_set_p_kic_nc,                               /*    941 */
-  Parrot_set_p_ki_s,                                 /*    942 */
-  Parrot_set_p_kic_s,                                /*    943 */
-  Parrot_set_p_ki_sc,                                /*    944 */
-  Parrot_set_p_kic_sc,                               /*    945 */
-  Parrot_set_p_ki_p,                                 /*    946 */
-  Parrot_set_p_kic_p,                                /*    947 */
-  Parrot_set_i_p_ki,                                 /*    948 */
-  Parrot_set_i_p_kic,                                /*    949 */
-  Parrot_set_n_p_ki,                                 /*    950 */
-  Parrot_set_n_p_kic,                                /*    951 */
-  Parrot_set_s_p_ki,                                 /*    952 */
-  Parrot_set_s_p_kic,                                /*    953 */
-  Parrot_set_p_p_ki,                                 /*    954 */
-  Parrot_set_p_p_kic,                                /*    955 */
-  Parrot_set_p_k_i,                                  /*    956 */
-  Parrot_set_p_kc_i,                                 /*    957 */
-  Parrot_set_p_k_ic,                                 /*    958 */
-  Parrot_set_p_kc_ic,                                /*    959 */
-  Parrot_set_p_k_n,                                  /*    960 */
-  Parrot_set_p_kc_n,                                 /*    961 */
-  Parrot_set_p_k_nc,                                 /*    962 */
-  Parrot_set_p_kc_nc,                                /*    963 */
-  Parrot_set_p_k_s,                                  /*    964 */
-  Parrot_set_p_kc_s,                                 /*    965 */
-  Parrot_set_p_k_sc,                                 /*    966 */
-  Parrot_set_p_kc_sc,                                /*    967 */
-  Parrot_set_p_k_p,                                  /*    968 */
-  Parrot_set_p_kc_p,                                 /*    969 */
-  Parrot_set_i_p_k,                                  /*    970 */
-  Parrot_set_i_p_kc,                                 /*    971 */
-  Parrot_set_n_p_k,                                  /*    972 */
-  Parrot_set_n_p_kc,                                 /*    973 */
-  Parrot_set_s_p_k,                                  /*    974 */
-  Parrot_set_s_p_kc,                                 /*    975 */
-  Parrot_set_p_p_k,                                  /*    976 */
-  Parrot_set_p_p_kc,                                 /*    977 */
-  Parrot_clone_p_p,                                  /*    978 */
-  Parrot_clone_p_p_p,                                /*    979 */
-  Parrot_clone_p_p_pc,                               /*    980 */
-  Parrot_copy_p_p,                                   /*    981 */
-  Parrot_null_s,                                     /*    982 */
-  Parrot_null_i,                                     /*    983 */
-  Parrot_null_p,                                     /*    984 */
-  Parrot_null_n,                                     /*    985 */
-  Parrot_cleari,                                     /*    986 */
-  Parrot_clearn,                                     /*    987 */
-  Parrot_clears,                                     /*    988 */
-  Parrot_clearp,                                     /*    989 */
-  Parrot_ord_i_s,                                    /*    990 */
-  Parrot_ord_i_sc,                                   /*    991 */
-  Parrot_ord_i_s_i,                                  /*    992 */
-  Parrot_ord_i_sc_i,                                 /*    993 */
-  Parrot_ord_i_s_ic,                                 /*    994 */
-  Parrot_ord_i_sc_ic,                                /*    995 */
-  Parrot_chr_s_i,                                    /*    996 */
-  Parrot_chr_s_ic,                                   /*    997 */
-  Parrot_chopn_s_i,                                  /*    998 */
-  Parrot_chopn_s_ic,                                 /*    999 */
-  Parrot_chopn_s_s_i,                                /*   1000 */
-  Parrot_chopn_s_sc_i,                               /*   1001 */
-  Parrot_chopn_s_s_ic,                               /*   1002 */
-  Parrot_chopn_s_sc_ic,                              /*   1003 */
-  Parrot_concat_s_s,                                 /*   1004 */
-  Parrot_concat_s_sc,                                /*   1005 */
-  Parrot_concat_p_p,                                 /*   1006 */
-  Parrot_concat_p_s,                                 /*   1007 */
-  Parrot_concat_p_sc,                                /*   1008 */
-  Parrot_concat_s_s_s,                               /*   1009 */
-  Parrot_concat_s_sc_s,                              /*   1010 */
-  Parrot_concat_s_s_sc,                              /*   1011 */
-  Parrot_concat_p_p_s,                               /*   1012 */
-  Parrot_concat_p_p_sc,                              /*   1013 */
-  Parrot_concat_p_p_p,                               /*   1014 */
-  Parrot_repeat_s_s_i,                               /*   1015 */
-  Parrot_repeat_s_sc_i,                              /*   1016 */
-  Parrot_repeat_s_s_ic,                              /*   1017 */
-  Parrot_repeat_s_sc_ic,                             /*   1018 */
-  Parrot_repeat_p_p_i,                               /*   1019 */
-  Parrot_repeat_p_p_ic,                              /*   1020 */
-  Parrot_repeat_p_p_p,                               /*   1021 */
-  Parrot_repeat_p_i,                                 /*   1022 */
-  Parrot_repeat_p_ic,                                /*   1023 */
-  Parrot_repeat_p_p,                                 /*   1024 */
-  Parrot_length_i_s,                                 /*   1025 */
-  Parrot_length_i_sc,                                /*   1026 */
-  Parrot_bytelength_i_s,                             /*   1027 */
-  Parrot_bytelength_i_sc,                            /*   1028 */
-  Parrot_pin_s,                                      /*   1029 */
-  Parrot_unpin_s,                                    /*   1030 */
-  Parrot_substr_s_s_i,                               /*   1031 */
-  Parrot_substr_s_sc_i,                              /*   1032 */
-  Parrot_substr_s_s_ic,                              /*   1033 */
-  Parrot_substr_s_sc_ic,                             /*   1034 */
-  Parrot_substr_s_s_i_i,                             /*   1035 */
-  Parrot_substr_s_sc_i_i,                            /*   1036 */
-  Parrot_substr_s_s_ic_i,                            /*   1037 */
-  Parrot_substr_s_sc_ic_i,                           /*   1038 */
-  Parrot_substr_s_s_i_ic,                            /*   1039 */
-  Parrot_substr_s_sc_i_ic,                           /*   1040 */
-  Parrot_substr_s_s_ic_ic,                           /*   1041 */
-  Parrot_substr_s_sc_ic_ic,                          /*   1042 */
-  Parrot_substr_s_s_i_i_s,                           /*   1043 */
-  Parrot_substr_s_s_ic_i_s,                          /*   1044 */
-  Parrot_substr_s_s_i_ic_s,                          /*   1045 */
-  Parrot_substr_s_s_ic_ic_s,                         /*   1046 */
-  Parrot_substr_s_s_i_i_sc,                          /*   1047 */
-  Parrot_substr_s_s_ic_i_sc,                         /*   1048 */
-  Parrot_substr_s_s_i_ic_sc,                         /*   1049 */
-  Parrot_substr_s_s_ic_ic_sc,                        /*   1050 */
-  Parrot_substr_s_i_i_s,                             /*   1051 */
-  Parrot_substr_s_ic_i_s,                            /*   1052 */
-  Parrot_substr_s_i_ic_s,                            /*   1053 */
-  Parrot_substr_s_ic_ic_s,                           /*   1054 */
-  Parrot_substr_s_i_i_sc,                            /*   1055 */
-  Parrot_substr_s_ic_i_sc,                           /*   1056 */
-  Parrot_substr_s_i_ic_sc,                           /*   1057 */
-  Parrot_substr_s_ic_ic_sc,                          /*   1058 */
-  Parrot_substr_s_p_i_i,                             /*   1059 */
-  Parrot_substr_s_p_ic_i,                            /*   1060 */
-  Parrot_substr_s_p_i_ic,                            /*   1061 */
-  Parrot_substr_s_p_ic_ic,                           /*   1062 */
-  Parrot_index_i_s_s,                                /*   1063 */
-  Parrot_index_i_sc_s,                               /*   1064 */
-  Parrot_index_i_s_sc,                               /*   1065 */
-  Parrot_index_i_sc_sc,                              /*   1066 */
-  Parrot_index_i_s_s_i,                              /*   1067 */
-  Parrot_index_i_sc_s_i,                             /*   1068 */
-  Parrot_index_i_s_sc_i,                             /*   1069 */
-  Parrot_index_i_sc_sc_i,                            /*   1070 */
-  Parrot_index_i_s_s_ic,                             /*   1071 */
-  Parrot_index_i_sc_s_ic,                            /*   1072 */
-  Parrot_index_i_s_sc_ic,                            /*   1073 */
-  Parrot_index_i_sc_sc_ic,                           /*   1074 */
-  Parrot_sprintf_s_s_p,                              /*   1075 */
-  Parrot_sprintf_s_sc_p,                             /*   1076 */
-  Parrot_sprintf_p_p_p,                              /*   1077 */
-  Parrot_new_s,                                      /*   1078 */
-  Parrot_new_s_i,                                    /*   1079 */
-  Parrot_new_s_ic,                                   /*   1080 */
-  Parrot_stringinfo_i_s_i,                           /*   1081 */
-  Parrot_stringinfo_i_sc_i,                          /*   1082 */
-  Parrot_stringinfo_i_s_ic,                          /*   1083 */
-  Parrot_stringinfo_i_sc_ic,                         /*   1084 */
-  Parrot_upcase_s_s,                                 /*   1085 */
-  Parrot_upcase_s_sc,                                /*   1086 */
-  Parrot_upcase_s,                                   /*   1087 */
-  Parrot_downcase_s_s,                               /*   1088 */
-  Parrot_downcase_s_sc,                              /*   1089 */
-  Parrot_downcase_s,                                 /*   1090 */
-  Parrot_titlecase_s_s,                              /*   1091 */
-  Parrot_titlecase_s_sc,                             /*   1092 */
-  Parrot_titlecase_s,                                /*   1093 */
-  Parrot_join_s_s_p,                                 /*   1094 */
-  Parrot_join_s_sc_p,                                /*   1095 */
-  Parrot_split_p_s_s,                                /*   1096 */
-  Parrot_split_p_sc_s,                               /*   1097 */
-  Parrot_split_p_s_sc,                               /*   1098 */
-  Parrot_split_p_sc_sc,                              /*   1099 */
-  Parrot_charset_i_s,                                /*   1100 */
-  Parrot_charset_i_sc,                               /*   1101 */
-  Parrot_charsetname_s_i,                            /*   1102 */
-  Parrot_charsetname_s_ic,                           /*   1103 */
-  Parrot_find_charset_i_s,                           /*   1104 */
-  Parrot_find_charset_i_sc,                          /*   1105 */
-  Parrot_trans_charset_s_i,                          /*   1106 */
-  Parrot_trans_charset_s_ic,                         /*   1107 */
-  Parrot_trans_charset_s_s_i,                        /*   1108 */
-  Parrot_trans_charset_s_sc_i,                       /*   1109 */
-  Parrot_trans_charset_s_s_ic,                       /*   1110 */
-  Parrot_trans_charset_s_sc_ic,                      /*   1111 */
-  Parrot_encoding_i_s,                               /*   1112 */
-  Parrot_encoding_i_sc,                              /*   1113 */
-  Parrot_encodingname_s_i,                           /*   1114 */
-  Parrot_encodingname_s_ic,                          /*   1115 */
-  Parrot_find_encoding_i_s,                          /*   1116 */
-  Parrot_find_encoding_i_sc,                         /*   1117 */
-  Parrot_trans_encoding_s_i,                         /*   1118 */
-  Parrot_trans_encoding_s_ic,                        /*   1119 */
-  Parrot_trans_encoding_s_s_i,                       /*   1120 */
-  Parrot_trans_encoding_s_sc_i,                      /*   1121 */
-  Parrot_trans_encoding_s_s_ic,                      /*   1122 */
-  Parrot_trans_encoding_s_sc_ic,                     /*   1123 */
-  Parrot_is_cclass_i_i_s_i,                          /*   1124 */
-  Parrot_is_cclass_i_ic_s_i,                         /*   1125 */
-  Parrot_is_cclass_i_i_sc_i,                         /*   1126 */
-  Parrot_is_cclass_i_ic_sc_i,                        /*   1127 */
-  Parrot_is_cclass_i_i_s_ic,                         /*   1128 */
-  Parrot_is_cclass_i_ic_s_ic,                        /*   1129 */
-  Parrot_is_cclass_i_i_sc_ic,                        /*   1130 */
-  Parrot_is_cclass_i_ic_sc_ic,                       /*   1131 */
-  Parrot_find_cclass_i_i_s_i_i,                      /*   1132 */
-  Parrot_find_cclass_i_ic_s_i_i,                     /*   1133 */
-  Parrot_find_cclass_i_i_sc_i_i,                     /*   1134 */
-  Parrot_find_cclass_i_ic_sc_i_i,                    /*   1135 */
-  Parrot_find_cclass_i_i_s_ic_i,                     /*   1136 */
-  Parrot_find_cclass_i_ic_s_ic_i,                    /*   1137 */
-  Parrot_find_cclass_i_i_sc_ic_i,                    /*   1138 */
-  Parrot_find_cclass_i_ic_sc_ic_i,                   /*   1139 */
-  Parrot_find_cclass_i_i_s_i_ic,                     /*   1140 */
-  Parrot_find_cclass_i_ic_s_i_ic,                    /*   1141 */
-  Parrot_find_cclass_i_i_sc_i_ic,                    /*   1142 */
-  Parrot_find_cclass_i_ic_sc_i_ic,                   /*   1143 */
-  Parrot_find_cclass_i_i_s_ic_ic,                    /*   1144 */
-  Parrot_find_cclass_i_ic_s_ic_ic,                   /*   1145 */
-  Parrot_find_cclass_i_i_sc_ic_ic,                   /*   1146 */
-  Parrot_find_cclass_i_ic_sc_ic_ic,                  /*   1147 */
-  Parrot_find_not_cclass_i_i_s_i_i,                  /*   1148 */
-  Parrot_find_not_cclass_i_ic_s_i_i,                 /*   1149 */
-  Parrot_find_not_cclass_i_i_sc_i_i,                 /*   1150 */
-  Parrot_find_not_cclass_i_ic_sc_i_i,                /*   1151 */
-  Parrot_find_not_cclass_i_i_s_ic_i,                 /*   1152 */
-  Parrot_find_not_cclass_i_ic_s_ic_i,                /*   1153 */
-  Parrot_find_not_cclass_i_i_sc_ic_i,                /*   1154 */
-  Parrot_find_not_cclass_i_ic_sc_ic_i,               /*   1155 */
-  Parrot_find_not_cclass_i_i_s_i_ic,                 /*   1156 */
-  Parrot_find_not_cclass_i_ic_s_i_ic,                /*   1157 */
-  Parrot_find_not_cclass_i_i_sc_i_ic,                /*   1158 */
-  Parrot_find_not_cclass_i_ic_sc_i_ic,               /*   1159 */
-  Parrot_find_not_cclass_i_i_s_ic_ic,                /*   1160 */
-  Parrot_find_not_cclass_i_ic_s_ic_ic,               /*   1161 */
-  Parrot_find_not_cclass_i_i_sc_ic_ic,               /*   1162 */
-  Parrot_find_not_cclass_i_ic_sc_ic_ic,              /*   1163 */
-  Parrot_escape_s_s,                                 /*   1164 */
-  Parrot_compose_s_s,                                /*   1165 */
-  Parrot_compose_s_sc,                               /*   1166 */
-  Parrot_spawnw_i_s,                                 /*   1167 */
-  Parrot_spawnw_i_sc,                                /*   1168 */
-  Parrot_spawnw_i_p,                                 /*   1169 */
-  Parrot_err_i,                                      /*   1170 */
-  Parrot_err_s,                                      /*   1171 */
-  Parrot_err_s_i,                                    /*   1172 */
-  Parrot_err_s_ic,                                   /*   1173 */
-  Parrot_time_i,                                     /*   1174 */
-  Parrot_time_n,                                     /*   1175 */
-  Parrot_gmtime_s_i,                                 /*   1176 */
-  Parrot_gmtime_s_ic,                                /*   1177 */
-  Parrot_localtime_s_i,                              /*   1178 */
-  Parrot_localtime_s_ic,                             /*   1179 */
-  Parrot_decodetime_p_i,                             /*   1180 */
-  Parrot_decodetime_p_ic,                            /*   1181 */
-  Parrot_decodelocaltime_p_i,                        /*   1182 */
-  Parrot_decodelocaltime_p_ic,                       /*   1183 */
-  Parrot_sysinfo_s_i,                                /*   1184 */
-  Parrot_sysinfo_s_ic,                               /*   1185 */
-  Parrot_sysinfo_i_i,                                /*   1186 */
-  Parrot_sysinfo_i_ic,                               /*   1187 */
-  Parrot_sleep_i,                                    /*   1188 */
-  Parrot_sleep_ic,                                   /*   1189 */
-  Parrot_sleep_n,                                    /*   1190 */
-  Parrot_sleep_nc,                                   /*   1191 */
-  Parrot_sizeof_i_i,                                 /*   1192 */
-  Parrot_sizeof_i_ic,                                /*   1193 */
-  Parrot_store_lex_s_p,                              /*   1194 */
-  Parrot_store_lex_sc_p,                             /*   1195 */
-  Parrot_store_dynamic_lex_s_p,                      /*   1196 */
-  Parrot_store_dynamic_lex_sc_p,                     /*   1197 */
-  Parrot_find_lex_p_s,                               /*   1198 */
-  Parrot_find_lex_p_sc,                              /*   1199 */
-  Parrot_find_dynamic_lex_p_s,                       /*   1200 */
-  Parrot_find_dynamic_lex_p_sc,                      /*   1201 */
-  Parrot_find_caller_lex_p_s,                        /*   1202 */
-  Parrot_find_caller_lex_p_sc,                       /*   1203 */
-  Parrot_get_namespace_p,                            /*   1204 */
-  Parrot_get_namespace_p_p,                          /*   1205 */
-  Parrot_get_namespace_p_pc,                         /*   1206 */
-  Parrot_get_hll_namespace_p,                        /*   1207 */
-  Parrot_get_hll_namespace_p_p,                      /*   1208 */
-  Parrot_get_hll_namespace_p_pc,                     /*   1209 */
-  Parrot_get_root_namespace_p,                       /*   1210 */
-  Parrot_get_root_namespace_p_p,                     /*   1211 */
-  Parrot_get_root_namespace_p_pc,                    /*   1212 */
-  Parrot_get_global_p_s,                             /*   1213 */
-  Parrot_get_global_p_sc,                            /*   1214 */
-  Parrot_get_global_p_p_s,                           /*   1215 */
-  Parrot_get_global_p_pc_s,                          /*   1216 */
-  Parrot_get_global_p_p_sc,                          /*   1217 */
-  Parrot_get_global_p_pc_sc,                         /*   1218 */
-  Parrot_get_hll_global_p_s,                         /*   1219 */
-  Parrot_get_hll_global_p_sc,                        /*   1220 */
-  Parrot_get_hll_global_p_p_s,                       /*   1221 */
-  Parrot_get_hll_global_p_pc_s,                      /*   1222 */
-  Parrot_get_hll_global_p_p_sc,                      /*   1223 */
-  Parrot_get_hll_global_p_pc_sc,                     /*   1224 */
-  Parrot_get_root_global_p_s,                        /*   1225 */
-  Parrot_get_root_global_p_sc,                       /*   1226 */
-  Parrot_get_root_global_p_p_s,                      /*   1227 */
-  Parrot_get_root_global_p_pc_s,                     /*   1228 */
-  Parrot_get_root_global_p_p_sc,                     /*   1229 */
-  Parrot_get_root_global_p_pc_sc,                    /*   1230 */
-  Parrot_set_global_s_p,                             /*   1231 */
-  Parrot_set_global_sc_p,                            /*   1232 */
-  Parrot_set_global_p_s_p,                           /*   1233 */
-  Parrot_set_global_pc_s_p,                          /*   1234 */
-  Parrot_set_global_p_sc_p,                          /*   1235 */
-  Parrot_set_global_pc_sc_p,                         /*   1236 */
-  Parrot_set_hll_global_s_p,                         /*   1237 */
-  Parrot_set_hll_global_sc_p,                        /*   1238 */
-  Parrot_set_hll_global_p_s_p,                       /*   1239 */
-  Parrot_set_hll_global_pc_s_p,                      /*   1240 */
-  Parrot_set_hll_global_p_sc_p,                      /*   1241 */
-  Parrot_set_hll_global_pc_sc_p,                     /*   1242 */
-  Parrot_set_root_global_s_p,                        /*   1243 */
-  Parrot_set_root_global_sc_p,                       /*   1244 */
-  Parrot_set_root_global_p_s_p,                      /*   1245 */
-  Parrot_set_root_global_pc_s_p,                     /*   1246 */
-  Parrot_set_root_global_p_sc_p,                     /*   1247 */
-  Parrot_set_root_global_pc_sc_p,                    /*   1248 */
-  Parrot_find_name_p_s,                              /*   1249 */
-  Parrot_find_name_p_sc,                             /*   1250 */
-  Parrot_find_sub_not_null_p_s,                      /*   1251 */
-  Parrot_find_sub_not_null_p_sc,                     /*   1252 */
-  Parrot_trap,                                       /*   1253 */
-  Parrot_fetch_p_p_p_p,                              /*   1254 */
-  Parrot_fetch_p_pc_p_p,                             /*   1255 */
-  Parrot_fetch_p_p_pc_p,                             /*   1256 */
-  Parrot_fetch_p_pc_pc_p,                            /*   1257 */
-  Parrot_fetch_p_p_p_pc,                             /*   1258 */
-  Parrot_fetch_p_pc_p_pc,                            /*   1259 */
-  Parrot_fetch_p_p_pc_pc,                            /*   1260 */
-  Parrot_fetch_p_pc_pc_pc,                           /*   1261 */
-  Parrot_fetch_p_p_i_p,                              /*   1262 */
-  Parrot_fetch_p_pc_i_p,                             /*   1263 */
-  Parrot_fetch_p_p_ic_p,                             /*   1264 */
-  Parrot_fetch_p_pc_ic_p,                            /*   1265 */
-  Parrot_fetch_p_p_i_pc,                             /*   1266 */
-  Parrot_fetch_p_pc_i_pc,                            /*   1267 */
-  Parrot_fetch_p_p_ic_pc,                            /*   1268 */
-  Parrot_fetch_p_pc_ic_pc,                           /*   1269 */
-  Parrot_fetch_p_p_s_p,                              /*   1270 */
-  Parrot_fetch_p_pc_s_p,                             /*   1271 */
-  Parrot_fetch_p_p_sc_p,                             /*   1272 */
-  Parrot_fetch_p_pc_sc_p,                            /*   1273 */
-  Parrot_fetch_p_p_s_pc,                             /*   1274 */
-  Parrot_fetch_p_pc_s_pc,                            /*   1275 */
-  Parrot_fetch_p_p_sc_pc,                            /*   1276 */
-  Parrot_fetch_p_pc_sc_pc,                           /*   1277 */
-  Parrot_vivify_p_p_p_p,                             /*   1278 */
-  Parrot_vivify_p_pc_p_p,                            /*   1279 */
-  Parrot_vivify_p_p_pc_p,                            /*   1280 */
-  Parrot_vivify_p_pc_pc_p,                           /*   1281 */
-  Parrot_vivify_p_p_p_pc,                            /*   1282 */
-  Parrot_vivify_p_pc_p_pc,                           /*   1283 */
-  Parrot_vivify_p_p_pc_pc,                           /*   1284 */
-  Parrot_vivify_p_pc_pc_pc,                          /*   1285 */
-  Parrot_vivify_p_p_i_p,                             /*   1286 */
-  Parrot_vivify_p_pc_i_p,                            /*   1287 */
-  Parrot_vivify_p_p_ic_p,                            /*   1288 */
-  Parrot_vivify_p_pc_ic_p,                           /*   1289 */
-  Parrot_vivify_p_p_i_pc,                            /*   1290 */
-  Parrot_vivify_p_pc_i_pc,                           /*   1291 */
-  Parrot_vivify_p_p_ic_pc,                           /*   1292 */
-  Parrot_vivify_p_pc_ic_pc,                          /*   1293 */
-  Parrot_vivify_p_p_s_p,                             /*   1294 */
-  Parrot_vivify_p_pc_s_p,                            /*   1295 */
-  Parrot_vivify_p_p_sc_p,                            /*   1296 */
-  Parrot_vivify_p_pc_sc_p,                           /*   1297 */
-  Parrot_vivify_p_p_s_pc,                            /*   1298 */
-  Parrot_vivify_p_pc_s_pc,                           /*   1299 */
-  Parrot_vivify_p_p_sc_pc,                           /*   1300 */
-  Parrot_vivify_p_pc_sc_pc,                          /*   1301 */
+  Parrot_load_bytecode_s,                            /*      6 */
+  Parrot_load_bytecode_sc,                           /*      7 */
+  Parrot_load_language_s,                            /*      8 */
+  Parrot_load_language_sc,                           /*      9 */
+  Parrot_branch_i,                                   /*     10 */
+  Parrot_branch_ic,                                  /*     11 */
+  Parrot_local_branch_p_i,                           /*     12 */
+  Parrot_local_branch_p_ic,                          /*     13 */
+  Parrot_local_return_p,                             /*     14 */
+  Parrot_jump_i,                                     /*     15 */
+  Parrot_jump_ic,                                    /*     16 */
+  Parrot_enternative,                                /*     17 */
+  Parrot_if_i_ic,                                    /*     18 */
+  Parrot_if_n_ic,                                    /*     19 */
+  Parrot_if_s_ic,                                    /*     20 */
+  Parrot_if_p_ic,                                    /*     21 */
+  Parrot_unless_i_ic,                                /*     22 */
+  Parrot_unless_n_ic,                                /*     23 */
+  Parrot_unless_s_ic,                                /*     24 */
+  Parrot_unless_p_ic,                                /*     25 */
+  Parrot_invokecc_p,                                 /*     26 */
+  Parrot_invoke_p_p,                                 /*     27 */
+  Parrot_yield,                                      /*     28 */
+  Parrot_tailcall_p,                                 /*     29 */
+  Parrot_returncc,                                   /*     30 */
+  Parrot_capture_lex_p,                              /*     31 */
+  Parrot_newclosure_p_p,                             /*     32 */
+  Parrot_set_args_pc,                                /*     33 */
+  Parrot_get_results_pc,                             /*     34 */
+  Parrot_get_params_pc,                              /*     35 */
+  Parrot_set_returns_pc,                             /*     36 */
+  Parrot_result_info_p,                              /*     37 */
+  Parrot_set_addr_i_ic,                              /*     38 */
+  Parrot_set_addr_p_ic,                              /*     39 */
+  Parrot_set_addr_p_i,                               /*     40 */
+  Parrot_get_addr_i_p,                               /*     41 */
+  Parrot_schedule_p,                                 /*     42 */
+  Parrot_addhandler_p,                               /*     43 */
+  Parrot_push_eh_ic,                                 /*     44 */
+  Parrot_push_eh_p,                                  /*     45 */
+  Parrot_pop_eh,                                     /*     46 */
+  Parrot_throw_p,                                    /*     47 */
+  Parrot_throw_p_p,                                  /*     48 */
+  Parrot_rethrow_p,                                  /*     49 */
+  Parrot_count_eh_i,                                 /*     50 */
+  Parrot_die_s,                                      /*     51 */
+  Parrot_die_sc,                                     /*     52 */
+  Parrot_die_p,                                      /*     53 */
+  Parrot_die_pc,                                     /*     54 */
+  Parrot_die_i_i,                                    /*     55 */
+  Parrot_die_ic_i,                                   /*     56 */
+  Parrot_die_i_ic,                                   /*     57 */
+  Parrot_die_ic_ic,                                  /*     58 */
+  Parrot_exit_i,                                     /*     59 */
+  Parrot_exit_ic,                                    /*     60 */
+  Parrot_pushmark_i,                                 /*     61 */
+  Parrot_pushmark_ic,                                /*     62 */
+  Parrot_popmark_i,                                  /*     63 */
+  Parrot_popmark_ic,                                 /*     64 */
+  Parrot_pushaction_p,                               /*     65 */
+  Parrot_debug_i,                                    /*     66 */
+  Parrot_debug_ic,                                   /*     67 */
+  Parrot_bounds_i,                                   /*     68 */
+  Parrot_bounds_ic,                                  /*     69 */
+  Parrot_profile_i,                                  /*     70 */
+  Parrot_profile_ic,                                 /*     71 */
+  Parrot_trace_i,                                    /*     72 */
+  Parrot_trace_ic,                                   /*     73 */
+  Parrot_gc_debug_i,                                 /*     74 */
+  Parrot_gc_debug_ic,                                /*     75 */
+  Parrot_interpinfo_i_i,                             /*     76 */
+  Parrot_interpinfo_i_ic,                            /*     77 */
+  Parrot_interpinfo_p_i,                             /*     78 */
+  Parrot_interpinfo_p_ic,                            /*     79 */
+  Parrot_interpinfo_s_i,                             /*     80 */
+  Parrot_interpinfo_s_ic,                            /*     81 */
+  Parrot_warningson_i,                               /*     82 */
+  Parrot_warningson_ic,                              /*     83 */
+  Parrot_warningsoff_i,                              /*     84 */
+  Parrot_warningsoff_ic,                             /*     85 */
+  Parrot_errorson_i,                                 /*     86 */
+  Parrot_errorson_ic,                                /*     87 */
+  Parrot_errorsoff_i,                                /*     88 */
+  Parrot_errorsoff_ic,                               /*     89 */
+  Parrot_runinterp_p_i,                              /*     90 */
+  Parrot_runinterp_p_ic,                             /*     91 */
+  Parrot_getinterp_p,                                /*     92 */
+  Parrot_sweep_ic,                                   /*     93 */
+  Parrot_collect,                                    /*     94 */
+  Parrot_sweepoff,                                   /*     95 */
+  Parrot_sweepon,                                    /*     96 */
+  Parrot_collectoff,                                 /*     97 */
+  Parrot_collecton,                                  /*     98 */
+  Parrot_needs_destroy_p,                            /*     99 */
+  Parrot_loadlib_p_s,                                /*    100 */
+  Parrot_loadlib_p_sc,                               /*    101 */
+  Parrot_dlfunc_p_p_s_s,                             /*    102 */
+  Parrot_dlfunc_p_p_sc_s,                            /*    103 */
+  Parrot_dlfunc_p_p_s_sc,                            /*    104 */
+  Parrot_dlfunc_p_p_sc_sc,                           /*    105 */
+  Parrot_dlvar_p_p_s,                                /*    106 */
+  Parrot_dlvar_p_p_sc,                               /*    107 */
+  Parrot_compreg_s_p,                                /*    108 */
+  Parrot_compreg_sc_p,                               /*    109 */
+  Parrot_compreg_p_s,                                /*    110 */
+  Parrot_compreg_p_sc,                               /*    111 */
+  Parrot_new_callback_p_p_p_s,                       /*    112 */
+  Parrot_new_callback_p_p_p_sc,                      /*    113 */
+  Parrot_annotations_p,                              /*    114 */
+  Parrot_annotations_p_s,                            /*    115 */
+  Parrot_annotations_p_sc,                           /*    116 */
+  Parrot_band_i_i,                                   /*    117 */
+  Parrot_band_i_ic,                                  /*    118 */
+  Parrot_band_p_i,                                   /*    119 */
+  Parrot_band_p_ic,                                  /*    120 */
+  Parrot_band_p_p,                                   /*    121 */
+  Parrot_band_i_i_i,                                 /*    122 */
+  Parrot_band_i_ic_i,                                /*    123 */
+  Parrot_band_i_i_ic,                                /*    124 */
+  Parrot_band_p_p_i,                                 /*    125 */
+  Parrot_band_p_p_ic,                                /*    126 */
+  Parrot_band_p_p_p,                                 /*    127 */
+  Parrot_bands_s_s,                                  /*    128 */
+  Parrot_bands_s_sc,                                 /*    129 */
+  Parrot_bands_p_s,                                  /*    130 */
+  Parrot_bands_p_sc,                                 /*    131 */
+  Parrot_bands_p_p,                                  /*    132 */
+  Parrot_bands_s_s_s,                                /*    133 */
+  Parrot_bands_s_sc_s,                               /*    134 */
+  Parrot_bands_s_s_sc,                               /*    135 */
+  Parrot_bands_p_p_s,                                /*    136 */
+  Parrot_bands_p_p_sc,                               /*    137 */
+  Parrot_bands_p_p_p,                                /*    138 */
+  Parrot_bnot_i,                                     /*    139 */
+  Parrot_bnot_i_i,                                   /*    140 */
+  Parrot_bnot_p,                                     /*    141 */
+  Parrot_bnot_p_p,                                   /*    142 */
+  Parrot_bnots_s,                                    /*    143 */
+  Parrot_bnots_s_s,                                  /*    144 */
+  Parrot_bnots_s_sc,                                 /*    145 */
+  Parrot_bnots_p,                                    /*    146 */
+  Parrot_bnots_p_p,                                  /*    147 */
+  Parrot_bor_i_i,                                    /*    148 */
+  Parrot_bor_i_ic,                                   /*    149 */
+  Parrot_bor_p_i,                                    /*    150 */
+  Parrot_bor_p_ic,                                   /*    151 */
+  Parrot_bor_p_p,                                    /*    152 */
+  Parrot_bor_i_i_i,                                  /*    153 */
+  Parrot_bor_i_ic_i,                                 /*    154 */
+  Parrot_bor_i_i_ic,                                 /*    155 */
+  Parrot_bor_p_p_i,                                  /*    156 */
+  Parrot_bor_p_p_ic,                                 /*    157 */
+  Parrot_bor_p_p_p,                                  /*    158 */
+  Parrot_bors_s_s,                                   /*    159 */
+  Parrot_bors_s_sc,                                  /*    160 */
+  Parrot_bors_p_s,                                   /*    161 */
+  Parrot_bors_p_sc,                                  /*    162 */
+  Parrot_bors_p_p,                                   /*    163 */
+  Parrot_bors_s_s_s,                                 /*    164 */
+  Parrot_bors_s_sc_s,                                /*    165 */
+  Parrot_bors_s_s_sc,                                /*    166 */
+  Parrot_bors_p_p_s,                                 /*    167 */
+  Parrot_bors_p_p_sc,                                /*    168 */
+  Parrot_bors_p_p_p,                                 /*    169 */
+  Parrot_shl_i_i,                                    /*    170 */
+  Parrot_shl_i_ic,                                   /*    171 */
+  Parrot_shl_p_i,                                    /*    172 */
+  Parrot_shl_p_ic,                                   /*    173 */
+  Parrot_shl_p_p,                                    /*    174 */
+  Parrot_shl_i_i_i,                                  /*    175 */
+  Parrot_shl_i_ic_i,                                 /*    176 */
+  Parrot_shl_i_i_ic,                                 /*    177 */
+  Parrot_shl_p_p_i,                                  /*    178 */
+  Parrot_shl_p_p_ic,                                 /*    179 */
+  Parrot_shl_p_p_p,                                  /*    180 */
+  Parrot_shr_i_i,                                    /*    181 */
+  Parrot_shr_i_ic,                                   /*    182 */
+  Parrot_shr_p_i,                                    /*    183 */
+  Parrot_shr_p_ic,                                   /*    184 */
+  Parrot_shr_p_p,                                    /*    185 */
+  Parrot_shr_i_i_i,                                  /*    186 */
+  Parrot_shr_i_ic_i,                                 /*    187 */
+  Parrot_shr_i_i_ic,                                 /*    188 */
+  Parrot_shr_p_p_i,                                  /*    189 */
+  Parrot_shr_p_p_ic,                                 /*    190 */
+  Parrot_shr_p_p_p,                                  /*    191 */
+  Parrot_lsr_i_i,                                    /*    192 */
+  Parrot_lsr_i_ic,                                   /*    193 */
+  Parrot_lsr_p_i,                                    /*    194 */
+  Parrot_lsr_p_ic,                                   /*    195 */
+  Parrot_lsr_p_p,                                    /*    196 */
+  Parrot_lsr_i_i_i,                                  /*    197 */
+  Parrot_lsr_i_ic_i,                                 /*    198 */
+  Parrot_lsr_i_i_ic,                                 /*    199 */
+  Parrot_lsr_p_p_i,                                  /*    200 */
+  Parrot_lsr_p_p_ic,                                 /*    201 */
+  Parrot_lsr_p_p_p,                                  /*    202 */
+  Parrot_rot_i_i_i_ic,                               /*    203 */
+  Parrot_rot_i_ic_i_ic,                              /*    204 */
+  Parrot_rot_i_i_ic_ic,                              /*    205 */
+  Parrot_bxor_i_i,                                   /*    206 */
+  Parrot_bxor_i_ic,                                  /*    207 */
+  Parrot_bxor_p_i,                                   /*    208 */
+  Parrot_bxor_p_ic,                                  /*    209 */
+  Parrot_bxor_p_p,                                   /*    210 */
+  Parrot_bxor_i_i_i,                                 /*    211 */
+  Parrot_bxor_i_ic_i,                                /*    212 */
+  Parrot_bxor_i_i_ic,                                /*    213 */
+  Parrot_bxor_p_p_i,                                 /*    214 */
+  Parrot_bxor_p_p_ic,                                /*    215 */
+  Parrot_bxor_p_p_p,                                 /*    216 */
+  Parrot_bxors_s_s,                                  /*    217 */
+  Parrot_bxors_s_sc,                                 /*    218 */
+  Parrot_bxors_p_s,                                  /*    219 */
+  Parrot_bxors_p_sc,                                 /*    220 */
+  Parrot_bxors_p_p,                                  /*    221 */
+  Parrot_bxors_s_s_s,                                /*    222 */
+  Parrot_bxors_s_sc_s,                               /*    223 */
+  Parrot_bxors_s_s_sc,                               /*    224 */
+  Parrot_bxors_p_p_s,                                /*    225 */
+  Parrot_bxors_p_p_sc,                               /*    226 */
+  Parrot_bxors_p_p_p,                                /*    227 */
+  Parrot_eq_i_i_ic,                                  /*    228 */
+  Parrot_eq_ic_i_ic,                                 /*    229 */
+  Parrot_eq_i_ic_ic,                                 /*    230 */
+  Parrot_eq_n_n_ic,                                  /*    231 */
+  Parrot_eq_nc_n_ic,                                 /*    232 */
+  Parrot_eq_n_nc_ic,                                 /*    233 */
+  Parrot_eq_s_s_ic,                                  /*    234 */
+  Parrot_eq_sc_s_ic,                                 /*    235 */
+  Parrot_eq_s_sc_ic,                                 /*    236 */
+  Parrot_eq_p_p_ic,                                  /*    237 */
+  Parrot_eq_p_i_ic,                                  /*    238 */
+  Parrot_eq_p_ic_ic,                                 /*    239 */
+  Parrot_eq_p_n_ic,                                  /*    240 */
+  Parrot_eq_p_nc_ic,                                 /*    241 */
+  Parrot_eq_p_s_ic,                                  /*    242 */
+  Parrot_eq_p_sc_ic,                                 /*    243 */
+  Parrot_eq_str_p_p_ic,                              /*    244 */
+  Parrot_eq_num_p_p_ic,                              /*    245 */
+  Parrot_eq_addr_s_s_ic,                             /*    246 */
+  Parrot_eq_addr_sc_s_ic,                            /*    247 */
+  Parrot_eq_addr_s_sc_ic,                            /*    248 */
+  Parrot_eq_addr_sc_sc_ic,                           /*    249 */
+  Parrot_eq_addr_p_p_ic,                             /*    250 */
+  Parrot_ne_i_i_ic,                                  /*    251 */
+  Parrot_ne_ic_i_ic,                                 /*    252 */
+  Parrot_ne_i_ic_ic,                                 /*    253 */
+  Parrot_ne_n_n_ic,                                  /*    254 */
+  Parrot_ne_nc_n_ic,                                 /*    255 */
+  Parrot_ne_n_nc_ic,                                 /*    256 */
+  Parrot_ne_s_s_ic,                                  /*    257 */
+  Parrot_ne_sc_s_ic,                                 /*    258 */
+  Parrot_ne_s_sc_ic,                                 /*    259 */
+  Parrot_ne_p_p_ic,                                  /*    260 */
+  Parrot_ne_p_i_ic,                                  /*    261 */
+  Parrot_ne_p_ic_ic,                                 /*    262 */
+  Parrot_ne_p_n_ic,                                  /*    263 */
+  Parrot_ne_p_nc_ic,                                 /*    264 */
+  Parrot_ne_p_s_ic,                                  /*    265 */
+  Parrot_ne_p_sc_ic,                                 /*    266 */
+  Parrot_ne_str_p_p_ic,                              /*    267 */
+  Parrot_ne_num_p_p_ic,                              /*    268 */
+  Parrot_ne_addr_s_s_ic,                             /*    269 */
+  Parrot_ne_addr_sc_s_ic,                            /*    270 */
+  Parrot_ne_addr_s_sc_ic,                            /*    271 */
+  Parrot_ne_addr_sc_sc_ic,                           /*    272 */
+  Parrot_ne_addr_p_p_ic,                             /*    273 */
+  Parrot_lt_i_i_ic,                                  /*    274 */
+  Parrot_lt_ic_i_ic,                                 /*    275 */
+  Parrot_lt_i_ic_ic,                                 /*    276 */
+  Parrot_lt_n_n_ic,                                  /*    277 */
+  Parrot_lt_nc_n_ic,                                 /*    278 */
+  Parrot_lt_n_nc_ic,                                 /*    279 */
+  Parrot_lt_s_s_ic,                                  /*    280 */
+  Parrot_lt_sc_s_ic,                                 /*    281 */
+  Parrot_lt_s_sc_ic,                                 /*    282 */
+  Parrot_lt_p_p_ic,                                  /*    283 */
+  Parrot_lt_p_i_ic,                                  /*    284 */
+  Parrot_lt_p_ic_ic,                                 /*    285 */
+  Parrot_lt_p_n_ic,                                  /*    286 */
+  Parrot_lt_p_nc_ic,                                 /*    287 */
+  Parrot_lt_p_s_ic,                                  /*    288 */
+  Parrot_lt_p_sc_ic,                                 /*    289 */
+  Parrot_lt_str_p_p_ic,                              /*    290 */
+  Parrot_lt_num_p_p_ic,                              /*    291 */
+  Parrot_le_i_i_ic,                                  /*    292 */
+  Parrot_le_ic_i_ic,                                 /*    293 */
+  Parrot_le_i_ic_ic,                                 /*    294 */
+  Parrot_le_n_n_ic,                                  /*    295 */
+  Parrot_le_nc_n_ic,                                 /*    296 */
+  Parrot_le_n_nc_ic,                                 /*    297 */
+  Parrot_le_s_s_ic,                                  /*    298 */
+  Parrot_le_sc_s_ic,                                 /*    299 */
+  Parrot_le_s_sc_ic,                                 /*    300 */
+  Parrot_le_p_p_ic,                                  /*    301 */
+  Parrot_le_p_i_ic,                                  /*    302 */
+  Parrot_le_p_ic_ic,                                 /*    303 */
+  Parrot_le_p_n_ic,                                  /*    304 */
+  Parrot_le_p_nc_ic,                                 /*    305 */
+  Parrot_le_p_s_ic,                                  /*    306 */
+  Parrot_le_p_sc_ic,                                 /*    307 */
+  Parrot_le_str_p_p_ic,                              /*    308 */
+  Parrot_le_num_p_p_ic,                              /*    309 */
+  Parrot_gt_p_p_ic,                                  /*    310 */
+  Parrot_gt_p_i_ic,                                  /*    311 */
+  Parrot_gt_p_ic_ic,                                 /*    312 */
+  Parrot_gt_p_n_ic,                                  /*    313 */
+  Parrot_gt_p_nc_ic,                                 /*    314 */
+  Parrot_gt_p_s_ic,                                  /*    315 */
+  Parrot_gt_p_sc_ic,                                 /*    316 */
+  Parrot_gt_str_p_p_ic,                              /*    317 */
+  Parrot_gt_num_p_p_ic,                              /*    318 */
+  Parrot_ge_p_p_ic,                                  /*    319 */
+  Parrot_ge_p_i_ic,                                  /*    320 */
+  Parrot_ge_p_ic_ic,                                 /*    321 */
+  Parrot_ge_p_n_ic,                                  /*    322 */
+  Parrot_ge_p_nc_ic,                                 /*    323 */
+  Parrot_ge_p_s_ic,                                  /*    324 */
+  Parrot_ge_p_sc_ic,                                 /*    325 */
+  Parrot_ge_str_p_p_ic,                              /*    326 */
+  Parrot_ge_num_p_p_ic,                              /*    327 */
+  Parrot_if_null_p_ic,                               /*    328 */
+  Parrot_if_null_s_ic,                               /*    329 */
+  Parrot_unless_null_p_ic,                           /*    330 */
+  Parrot_unless_null_s_ic,                           /*    331 */
+  Parrot_cmp_i_i_i,                                  /*    332 */
+  Parrot_cmp_i_ic_i,                                 /*    333 */
+  Parrot_cmp_i_i_ic,                                 /*    334 */
+  Parrot_cmp_i_n_n,                                  /*    335 */
+  Parrot_cmp_i_nc_n,                                 /*    336 */
+  Parrot_cmp_i_n_nc,                                 /*    337 */
+  Parrot_cmp_i_s_s,                                  /*    338 */
+  Parrot_cmp_i_sc_s,                                 /*    339 */
+  Parrot_cmp_i_s_sc,                                 /*    340 */
+  Parrot_cmp_i_p_p,                                  /*    341 */
+  Parrot_cmp_i_p_i,                                  /*    342 */
+  Parrot_cmp_i_p_ic,                                 /*    343 */
+  Parrot_cmp_i_p_n,                                  /*    344 */
+  Parrot_cmp_i_p_nc,                                 /*    345 */
+  Parrot_cmp_i_p_s,                                  /*    346 */
+  Parrot_cmp_i_p_sc,                                 /*    347 */
+  Parrot_cmp_str_i_p_p,                              /*    348 */
+  Parrot_cmp_num_i_p_p,                              /*    349 */
+  Parrot_cmp_pmc_p_p_p,                              /*    350 */
+  Parrot_issame_i_p_p,                               /*    351 */
+  Parrot_issame_i_s_s,                               /*    352 */
+  Parrot_issame_i_sc_s,                              /*    353 */
+  Parrot_issame_i_s_sc,                              /*    354 */
+  Parrot_issame_i_sc_sc,                             /*    355 */
+  Parrot_isntsame_i_p_p,                             /*    356 */
+  Parrot_isntsame_i_s_s,                             /*    357 */
+  Parrot_isntsame_i_sc_s,                            /*    358 */
+  Parrot_isntsame_i_s_sc,                            /*    359 */
+  Parrot_isntsame_i_sc_sc,                           /*    360 */
+  Parrot_istrue_i_p,                                 /*    361 */
+  Parrot_isfalse_i_p,                                /*    362 */
+  Parrot_isnull_i_p,                                 /*    363 */
+  Parrot_isnull_i_pc,                                /*    364 */
+  Parrot_isnull_i_s,                                 /*    365 */
+  Parrot_isnull_i_sc,                                /*    366 */
+  Parrot_isgt_i_p_p,                                 /*    367 */
+  Parrot_isge_i_p_p,                                 /*    368 */
+  Parrot_isle_i_i_i,                                 /*    369 */
+  Parrot_isle_i_ic_i,                                /*    370 */
+  Parrot_isle_i_i_ic,                                /*    371 */
+  Parrot_isle_i_n_n,                                 /*    372 */
+  Parrot_isle_i_nc_n,                                /*    373 */
+  Parrot_isle_i_n_nc,                                /*    374 */
+  Parrot_isle_i_s_s,                                 /*    375 */
+  Parrot_isle_i_sc_s,                                /*    376 */
+  Parrot_isle_i_s_sc,                                /*    377 */
+  Parrot_isle_i_p_p,                                 /*    378 */
+  Parrot_islt_i_i_i,                                 /*    379 */
+  Parrot_islt_i_ic_i,                                /*    380 */
+  Parrot_islt_i_i_ic,                                /*    381 */
+  Parrot_islt_i_n_n,                                 /*    382 */
+  Parrot_islt_i_nc_n,                                /*    383 */
+  Parrot_islt_i_n_nc,                                /*    384 */
+  Parrot_islt_i_s_s,                                 /*    385 */
+  Parrot_islt_i_sc_s,                                /*    386 */
+  Parrot_islt_i_s_sc,                                /*    387 */
+  Parrot_islt_i_p_p,                                 /*    388 */
+  Parrot_iseq_i_i_i,                                 /*    389 */
+  Parrot_iseq_i_ic_i,                                /*    390 */
+  Parrot_iseq_i_i_ic,                                /*    391 */
+  Parrot_iseq_i_n_n,                                 /*    392 */
+  Parrot_iseq_i_nc_n,                                /*    393 */
+  Parrot_iseq_i_n_nc,                                /*    394 */
+  Parrot_iseq_i_s_s,                                 /*    395 */
+  Parrot_iseq_i_sc_s,                                /*    396 */
+  Parrot_iseq_i_s_sc,                                /*    397 */
+  Parrot_iseq_i_p_p,                                 /*    398 */
+  Parrot_isne_i_i_i,                                 /*    399 */
+  Parrot_isne_i_ic_i,                                /*    400 */
+  Parrot_isne_i_i_ic,                                /*    401 */
+  Parrot_isne_i_n_n,                                 /*    402 */
+  Parrot_isne_i_nc_n,                                /*    403 */
+  Parrot_isne_i_n_nc,                                /*    404 */
+  Parrot_isne_i_s_s,                                 /*    405 */
+  Parrot_isne_i_sc_s,                                /*    406 */
+  Parrot_isne_i_s_sc,                                /*    407 */
+  Parrot_isne_i_p_p,                                 /*    408 */
+  Parrot_and_i_i_i,                                  /*    409 */
+  Parrot_and_i_ic_i,                                 /*    410 */
+  Parrot_and_i_i_ic,                                 /*    411 */
+  Parrot_and_p_p_p,                                  /*    412 */
+  Parrot_not_i,                                      /*    413 */
+  Parrot_not_i_i,                                    /*    414 */
+  Parrot_not_p,                                      /*    415 */
+  Parrot_not_p_p,                                    /*    416 */
+  Parrot_or_i_i_i,                                   /*    417 */
+  Parrot_or_i_ic_i,                                  /*    418 */
+  Parrot_or_i_i_ic,                                  /*    419 */
+  Parrot_or_p_p_p,                                   /*    420 */
+  Parrot_xor_i_i_i,                                  /*    421 */
+  Parrot_xor_i_ic_i,                                 /*    422 */
+  Parrot_xor_i_i_ic,                                 /*    423 */
+  Parrot_xor_p_p_p,                                  /*    424 */
+  Parrot_debug_init,                                 /*    425 */
+  Parrot_debug_load_sc,                              /*    426 */
+  Parrot_debug_break,                                /*    427 */
+  Parrot_debug_print,                                /*    428 */
+  Parrot_backtrace,                                  /*    429 */
+  Parrot_getline_i,                                  /*    430 */
+  Parrot_getfile_s,                                  /*    431 */
+  Parrot_set_label_p_ic,                             /*    432 */
+  Parrot_get_label_i_p,                              /*    433 */
+  Parrot_close_p,                                    /*    434 */
+  Parrot_fdopen_p_i_s,                               /*    435 */
+  Parrot_fdopen_p_ic_s,                              /*    436 */
+  Parrot_fdopen_p_i_sc,                              /*    437 */
+  Parrot_fdopen_p_ic_sc,                             /*    438 */
+  Parrot_getstdin_p,                                 /*    439 */
+  Parrot_getstdout_p,                                /*    440 */
+  Parrot_getstderr_p,                                /*    441 */
+  Parrot_setstdin_p,                                 /*    442 */
+  Parrot_setstdout_p,                                /*    443 */
+  Parrot_setstderr_p,                                /*    444 */
+  Parrot_open_p_s_s,                                 /*    445 */
+  Parrot_open_p_sc_s,                                /*    446 */
+  Parrot_open_p_s_sc,                                /*    447 */
+  Parrot_open_p_sc_sc,                               /*    448 */
+  Parrot_open_p_s,                                   /*    449 */
+  Parrot_open_p_sc,                                  /*    450 */
+  Parrot_print_i,                                    /*    451 */
+  Parrot_print_ic,                                   /*    452 */
+  Parrot_print_n,                                    /*    453 */
+  Parrot_print_nc,                                   /*    454 */
+  Parrot_print_s,                                    /*    455 */
+  Parrot_print_sc,                                   /*    456 */
+  Parrot_print_p,                                    /*    457 */
+  Parrot_say_i,                                      /*    458 */
+  Parrot_say_ic,                                     /*    459 */
+  Parrot_say_n,                                      /*    460 */
+  Parrot_say_nc,                                     /*    461 */
+  Parrot_say_s,                                      /*    462 */
+  Parrot_say_sc,                                     /*    463 */
+  Parrot_say_p,                                      /*    464 */
+  Parrot_printerr_i,                                 /*    465 */
+  Parrot_printerr_ic,                                /*    466 */
+  Parrot_printerr_n,                                 /*    467 */
+  Parrot_printerr_nc,                                /*    468 */
+  Parrot_printerr_s,                                 /*    469 */
+  Parrot_printerr_sc,                                /*    470 */
+  Parrot_printerr_p,                                 /*    471 */
+  Parrot_print_p_i,                                  /*    472 */
+  Parrot_print_p_ic,                                 /*    473 */
+  Parrot_print_p_n,                                  /*    474 */
+  Parrot_print_p_nc,                                 /*    475 */
+  Parrot_print_p_s,                                  /*    476 */
+  Parrot_print_p_sc,                                 /*    477 */
+  Parrot_print_p_p,                                  /*    478 */
+  Parrot_read_s_i,                                   /*    479 */
+  Parrot_read_s_ic,                                  /*    480 */
+  Parrot_read_s_p_i,                                 /*    481 */
+  Parrot_read_s_p_ic,                                /*    482 */
+  Parrot_readline_s_p,                               /*    483 */
+  Parrot_peek_s,                                     /*    484 */
+  Parrot_peek_s_p,                                   /*    485 */
+  Parrot_stat_i_s_i,                                 /*    486 */
+  Parrot_stat_i_sc_i,                                /*    487 */
+  Parrot_stat_i_s_ic,                                /*    488 */
+  Parrot_stat_i_sc_ic,                               /*    489 */
+  Parrot_stat_i_i_i,                                 /*    490 */
+  Parrot_stat_i_ic_i,                                /*    491 */
+  Parrot_stat_i_i_ic,                                /*    492 */
+  Parrot_stat_i_ic_ic,                               /*    493 */
+  Parrot_seek_p_i_i,                                 /*    494 */
+  Parrot_seek_p_ic_i,                                /*    495 */
+  Parrot_seek_p_i_ic,                                /*    496 */
+  Parrot_seek_p_ic_ic,                               /*    497 */
+  Parrot_seek_p_i_i_i,                               /*    498 */
+  Parrot_seek_p_ic_i_i,                              /*    499 */
+  Parrot_seek_p_i_ic_i,                              /*    500 */
+  Parrot_seek_p_ic_ic_i,                             /*    501 */
+  Parrot_seek_p_i_i_ic,                              /*    502 */
+  Parrot_seek_p_ic_i_ic,                             /*    503 */
+  Parrot_seek_p_i_ic_ic,                             /*    504 */
+  Parrot_seek_p_ic_ic_ic,                            /*    505 */
+  Parrot_tell_i_p,                                   /*    506 */
+  Parrot_tell_i_i_p,                                 /*    507 */
+  Parrot_abs_i,                                      /*    508 */
+  Parrot_abs_n,                                      /*    509 */
+  Parrot_abs_i_i,                                    /*    510 */
+  Parrot_abs_n_n,                                    /*    511 */
+  Parrot_abs_p,                                      /*    512 */
+  Parrot_abs_p_p,                                    /*    513 */
+  Parrot_add_i_i,                                    /*    514 */
+  Parrot_add_i_ic,                                   /*    515 */
+  Parrot_add_n_n,                                    /*    516 */
+  Parrot_add_n_nc,                                   /*    517 */
+  Parrot_add_p_p,                                    /*    518 */
+  Parrot_add_p_i,                                    /*    519 */
+  Parrot_add_p_ic,                                   /*    520 */
+  Parrot_add_p_n,                                    /*    521 */
+  Parrot_add_p_nc,                                   /*    522 */
+  Parrot_add_i_i_i,                                  /*    523 */
+  Parrot_add_i_ic_i,                                 /*    524 */
+  Parrot_add_i_i_ic,                                 /*    525 */
+  Parrot_add_n_n_n,                                  /*    526 */
+  Parrot_add_n_nc_n,                                 /*    527 */
+  Parrot_add_n_n_nc,                                 /*    528 */
+  Parrot_add_p_p_p,                                  /*    529 */
+  Parrot_add_p_p_i,                                  /*    530 */
+  Parrot_add_p_p_ic,                                 /*    531 */
+  Parrot_add_p_p_n,                                  /*    532 */
+  Parrot_add_p_p_nc,                                 /*    533 */
+  Parrot_cmod_i_i_i,                                 /*    534 */
+  Parrot_cmod_i_ic_i,                                /*    535 */
+  Parrot_cmod_i_i_ic,                                /*    536 */
+  Parrot_cmod_p_p_i,                                 /*    537 */
+  Parrot_cmod_p_p_ic,                                /*    538 */
+  Parrot_cmod_p_p_p,                                 /*    539 */
+  Parrot_cmod_n_n_n,                                 /*    540 */
+  Parrot_cmod_n_nc_n,                                /*    541 */
+  Parrot_cmod_n_n_nc,                                /*    542 */
+  Parrot_cmod_p_p_n,                                 /*    543 */
+  Parrot_cmod_p_p_nc,                                /*    544 */
+  Parrot_dec_i,                                      /*    545 */
+  Parrot_dec_n,                                      /*    546 */
+  Parrot_dec_p,                                      /*    547 */
+  Parrot_div_i_i,                                    /*    548 */
+  Parrot_div_i_ic,                                   /*    549 */
+  Parrot_div_n_n,                                    /*    550 */
+  Parrot_div_n_nc,                                   /*    551 */
+  Parrot_div_p_p,                                    /*    552 */
+  Parrot_div_p_i,                                    /*    553 */
+  Parrot_div_p_ic,                                   /*    554 */
+  Parrot_div_p_n,                                    /*    555 */
+  Parrot_div_p_nc,                                   /*    556 */
+  Parrot_div_i_i_i,                                  /*    557 */
+  Parrot_div_i_ic_i,                                 /*    558 */
+  Parrot_div_i_i_ic,                                 /*    559 */
+  Parrot_div_i_ic_ic,                                /*    560 */
+  Parrot_div_n_n_n,                                  /*    561 */
+  Parrot_div_n_nc_n,                                 /*    562 */
+  Parrot_div_n_n_nc,                                 /*    563 */
+  Parrot_div_n_nc_nc,                                /*    564 */
+  Parrot_div_p_p_p,                                  /*    565 */
+  Parrot_div_p_p_i,                                  /*    566 */
+  Parrot_div_p_p_ic,                                 /*    567 */
+  Parrot_div_p_p_n,                                  /*    568 */
+  Parrot_div_p_p_nc,                                 /*    569 */
+  Parrot_fdiv_i_i,                                   /*    570 */
+  Parrot_fdiv_i_ic,                                  /*    571 */
+  Parrot_fdiv_n_n,                                   /*    572 */
+  Parrot_fdiv_n_nc,                                  /*    573 */
+  Parrot_fdiv_p_p,                                   /*    574 */
+  Parrot_fdiv_p_i,                                   /*    575 */
+  Parrot_fdiv_p_ic,                                  /*    576 */
+  Parrot_fdiv_p_n,                                   /*    577 */
+  Parrot_fdiv_p_nc,                                  /*    578 */
+  Parrot_fdiv_i_i_i,                                 /*    579 */
+  Parrot_fdiv_i_ic_i,                                /*    580 */
+  Parrot_fdiv_i_i_ic,                                /*    581 */
+  Parrot_fdiv_n_n_n,                                 /*    582 */
+  Parrot_fdiv_n_nc_n,                                /*    583 */
+  Parrot_fdiv_n_n_nc,                                /*    584 */
+  Parrot_fdiv_p_p_p,                                 /*    585 */
+  Parrot_fdiv_p_p_i,                                 /*    586 */
+  Parrot_fdiv_p_p_ic,                                /*    587 */
+  Parrot_fdiv_p_p_n,                                 /*    588 */
+  Parrot_fdiv_p_p_nc,                                /*    589 */
+  Parrot_ceil_n,                                     /*    590 */
+  Parrot_ceil_i_n,                                   /*    591 */
+  Parrot_ceil_n_n,                                   /*    592 */
+  Parrot_floor_n,                                    /*    593 */
+  Parrot_floor_i_n,                                  /*    594 */
+  Parrot_floor_n_n,                                  /*    595 */
+  Parrot_inc_i,                                      /*    596 */
+  Parrot_inc_n,                                      /*    597 */
+  Parrot_inc_p,                                      /*    598 */
+  Parrot_mod_i_i,                                    /*    599 */
+  Parrot_mod_i_ic,                                   /*    600 */
+  Parrot_mod_n_n,                                    /*    601 */
+  Parrot_mod_n_nc,                                   /*    602 */
+  Parrot_mod_p_p,                                    /*    603 */
+  Parrot_mod_p_i,                                    /*    604 */
+  Parrot_mod_p_ic,                                   /*    605 */
+  Parrot_mod_p_n,                                    /*    606 */
+  Parrot_mod_p_nc,                                   /*    607 */
+  Parrot_mod_i_i_i,                                  /*    608 */
+  Parrot_mod_i_ic_i,                                 /*    609 */
+  Parrot_mod_i_i_ic,                                 /*    610 */
+  Parrot_mod_n_n_n,                                  /*    611 */
+  Parrot_mod_n_nc_n,                                 /*    612 */
+  Parrot_mod_n_n_nc,                                 /*    613 */
+  Parrot_mod_p_p_p,                                  /*    614 */
+  Parrot_mod_p_p_i,                                  /*    615 */
+  Parrot_mod_p_p_ic,                                 /*    616 */
+  Parrot_mod_p_p_n,                                  /*    617 */
+  Parrot_mod_p_p_nc,                                 /*    618 */
+  Parrot_mul_i_i,                                    /*    619 */
+  Parrot_mul_i_ic,                                   /*    620 */
+  Parrot_mul_n_n,                                    /*    621 */
+  Parrot_mul_n_nc,                                   /*    622 */
+  Parrot_mul_p_p,                                    /*    623 */
+  Parrot_mul_p_i,                                    /*    624 */
+  Parrot_mul_p_ic,                                   /*    625 */
+  Parrot_mul_p_n,                                    /*    626 */
+  Parrot_mul_p_nc,                                   /*    627 */
+  Parrot_mul_i_i_i,                                  /*    628 */
+  Parrot_mul_i_ic_i,                                 /*    629 */
+  Parrot_mul_i_i_ic,                                 /*    630 */
+  Parrot_mul_n_n_n,                                  /*    631 */
+  Parrot_mul_n_nc_n,                                 /*    632 */
+  Parrot_mul_n_n_nc,                                 /*    633 */
+  Parrot_mul_p_p_p,                                  /*    634 */
+  Parrot_mul_p_p_i,                                  /*    635 */
+  Parrot_mul_p_p_ic,                                 /*    636 */
+  Parrot_mul_p_p_n,                                  /*    637 */
+  Parrot_mul_p_p_nc,                                 /*    638 */
+  Parrot_neg_i,                                      /*    639 */
+  Parrot_neg_n,                                      /*    640 */
+  Parrot_neg_p,                                      /*    641 */
+  Parrot_neg_i_i,                                    /*    642 */
+  Parrot_neg_n_n,                                    /*    643 */
+  Parrot_neg_p_p,                                    /*    644 */
+  Parrot_pow_n_n_n,                                  /*    645 */
+  Parrot_pow_n_nc_n,                                 /*    646 */
+  Parrot_pow_n_n_nc,                                 /*    647 */
+  Parrot_pow_p_p_p,                                  /*    648 */
+  Parrot_pow_p_p_i,                                  /*    649 */
+  Parrot_pow_p_p_ic,                                 /*    650 */
+  Parrot_pow_p_p_n,                                  /*    651 */
+  Parrot_pow_p_p_nc,                                 /*    652 */
+  Parrot_pow_n_n_i,                                  /*    653 */
+  Parrot_pow_n_nc_i,                                 /*    654 */
+  Parrot_pow_n_n_ic,                                 /*    655 */
+  Parrot_pow_n_nc_ic,                                /*    656 */
+  Parrot_sub_i_i,                                    /*    657 */
+  Parrot_sub_i_ic,                                   /*    658 */
+  Parrot_sub_n_n,                                    /*    659 */
+  Parrot_sub_n_nc,                                   /*    660 */
+  Parrot_sub_p_p,                                    /*    661 */
+  Parrot_sub_p_i,                                    /*    662 */
+  Parrot_sub_p_ic,                                   /*    663 */
+  Parrot_sub_p_n,                                    /*    664 */
+  Parrot_sub_p_nc,                                   /*    665 */
+  Parrot_sub_i_i_i,                                  /*    666 */
+  Parrot_sub_i_ic_i,                                 /*    667 */
+  Parrot_sub_i_i_ic,                                 /*    668 */
+  Parrot_sub_n_n_n,                                  /*    669 */
+  Parrot_sub_n_nc_n,                                 /*    670 */
+  Parrot_sub_n_n_nc,                                 /*    671 */
+  Parrot_sub_p_p_p,                                  /*    672 */
+  Parrot_sub_p_p_i,                                  /*    673 */
+  Parrot_sub_p_p_ic,                                 /*    674 */
+  Parrot_sub_p_p_n,                                  /*    675 */
+  Parrot_sub_p_p_nc,                                 /*    676 */
+  Parrot_sqrt_n_n,                                   /*    677 */
+  Parrot_acos_n_n,                                   /*    678 */
+  Parrot_asec_n_n,                                   /*    679 */
+  Parrot_asin_n_n,                                   /*    680 */
+  Parrot_atan_n_n,                                   /*    681 */
+  Parrot_atan_n_n_n,                                 /*    682 */
+  Parrot_atan_n_nc_n,                                /*    683 */
+  Parrot_atan_n_n_nc,                                /*    684 */
+  Parrot_cos_n_n,                                    /*    685 */
+  Parrot_cosh_n_n,                                   /*    686 */
+  Parrot_exp_n_n,                                    /*    687 */
+  Parrot_ln_n_n,                                     /*    688 */
+  Parrot_log10_n_n,                                  /*    689 */
+  Parrot_log2_n_n,                                   /*    690 */
+  Parrot_sec_n_n,                                    /*    691 */
+  Parrot_sech_n_n,                                   /*    692 */
+  Parrot_sin_n_n,                                    /*    693 */
+  Parrot_sinh_n_n,                                   /*    694 */
+  Parrot_tan_n_n,                                    /*    695 */
+  Parrot_tanh_n_n,                                   /*    696 */
+  Parrot_gcd_i_i_i,                                  /*    697 */
+  Parrot_gcd_i_ic_i,                                 /*    698 */
+  Parrot_gcd_i_i_ic,                                 /*    699 */
+  Parrot_lcm_i_i_i,                                  /*    700 */
+  Parrot_lcm_i_ic_i,                                 /*    701 */
+  Parrot_lcm_i_i_ic,                                 /*    702 */
+  Parrot_fact_i_i,                                   /*    703 */
+  Parrot_fact_n_i,                                   /*    704 */
+  Parrot_callmethodcc_p_s,                           /*    705 */
+  Parrot_callmethodcc_p_sc,                          /*    706 */
+  Parrot_callmethodcc_p_p,                           /*    707 */
+  Parrot_callmethod_p_s_p,                           /*    708 */
+  Parrot_callmethod_p_sc_p,                          /*    709 */
+  Parrot_callmethod_p_p_p,                           /*    710 */
+  Parrot_tailcallmethod_p_s,                         /*    711 */
+  Parrot_tailcallmethod_p_sc,                        /*    712 */
+  Parrot_tailcallmethod_p_p,                         /*    713 */
+  Parrot_addmethod_p_s_p,                            /*    714 */
+  Parrot_addmethod_p_sc_p,                           /*    715 */
+  Parrot_can_i_p_s,                                  /*    716 */
+  Parrot_can_i_p_sc,                                 /*    717 */
+  Parrot_does_i_p_s,                                 /*    718 */
+  Parrot_does_i_p_sc,                                /*    719 */
+  Parrot_does_i_p_p,                                 /*    720 */
+  Parrot_does_i_p_pc,                                /*    721 */
+  Parrot_isa_i_p_s,                                  /*    722 */
+  Parrot_isa_i_p_sc,                                 /*    723 */
+  Parrot_isa_i_p_p,                                  /*    724 */
+  Parrot_isa_i_p_pc,                                 /*    725 */
+  Parrot_newclass_p_s,                               /*    726 */
+  Parrot_newclass_p_sc,                              /*    727 */
+  Parrot_newclass_p_p,                               /*    728 */
+  Parrot_newclass_p_pc,                              /*    729 */
+  Parrot_subclass_p_p,                               /*    730 */
+  Parrot_subclass_p_pc,                              /*    731 */
+  Parrot_subclass_p_p_s,                             /*    732 */
+  Parrot_subclass_p_pc_s,                            /*    733 */
+  Parrot_subclass_p_p_sc,                            /*    734 */
+  Parrot_subclass_p_pc_sc,                           /*    735 */
+  Parrot_subclass_p_p_p,                             /*    736 */
+  Parrot_subclass_p_pc_p,                            /*    737 */
+  Parrot_subclass_p_p_pc,                            /*    738 */
+  Parrot_subclass_p_pc_pc,                           /*    739 */
+  Parrot_subclass_p_s,                               /*    740 */
+  Parrot_subclass_p_sc,                              /*    741 */
+  Parrot_subclass_p_s_s,                             /*    742 */
+  Parrot_subclass_p_sc_s,                            /*    743 */
+  Parrot_subclass_p_s_sc,                            /*    744 */
+  Parrot_subclass_p_sc_sc,                           /*    745 */
+  Parrot_subclass_p_s_p,                             /*    746 */
+  Parrot_subclass_p_sc_p,                            /*    747 */
+  Parrot_subclass_p_s_pc,                            /*    748 */
+  Parrot_subclass_p_sc_pc,                           /*    749 */
+  Parrot_get_class_p_s,                              /*    750 */
+  Parrot_get_class_p_sc,                             /*    751 */
+  Parrot_get_class_p_p,                              /*    752 */
+  Parrot_get_class_p_pc,                             /*    753 */
+  Parrot_class_p_p,                                  /*    754 */
+  Parrot_addparent_p_p,                              /*    755 */
+  Parrot_removeparent_p_p,                           /*    756 */
+  Parrot_addrole_p_p,                                /*    757 */
+  Parrot_addattribute_p_s,                           /*    758 */
+  Parrot_addattribute_p_sc,                          /*    759 */
+  Parrot_removeattribute_p_s,                        /*    760 */
+  Parrot_removeattribute_p_sc,                       /*    761 */
+  Parrot_getattribute_p_p_s,                         /*    762 */
+  Parrot_getattribute_p_p_sc,                        /*    763 */
+  Parrot_getattribute_p_p_p_s,                       /*    764 */
+  Parrot_getattribute_p_p_pc_s,                      /*    765 */
+  Parrot_getattribute_p_p_p_sc,                      /*    766 */
+  Parrot_getattribute_p_p_pc_sc,                     /*    767 */
+  Parrot_setattribute_p_s_p,                         /*    768 */
+  Parrot_setattribute_p_sc_p,                        /*    769 */
+  Parrot_setattribute_p_p_s_p,                       /*    770 */
+  Parrot_setattribute_p_pc_s_p,                      /*    771 */
+  Parrot_setattribute_p_p_sc_p,                      /*    772 */
+  Parrot_setattribute_p_pc_sc_p,                     /*    773 */
+  Parrot_inspect_p_p,                                /*    774 */
+  Parrot_inspect_p_pc,                               /*    775 */
+  Parrot_inspect_p_p_s,                              /*    776 */
+  Parrot_inspect_p_pc_s,                             /*    777 */
+  Parrot_inspect_p_p_sc,                             /*    778 */
+  Parrot_inspect_p_pc_sc,                            /*    779 */
+  Parrot_new_p_s,                                    /*    780 */
+  Parrot_new_p_sc,                                   /*    781 */
+  Parrot_new_p_s_p,                                  /*    782 */
+  Parrot_new_p_sc_p,                                 /*    783 */
+  Parrot_new_p_s_pc,                                 /*    784 */
+  Parrot_new_p_sc_pc,                                /*    785 */
+  Parrot_new_p_p,                                    /*    786 */
+  Parrot_new_p_pc,                                   /*    787 */
+  Parrot_new_p_p_p,                                  /*    788 */
+  Parrot_new_p_pc_p,                                 /*    789 */
+  Parrot_new_p_p_pc,                                 /*    790 */
+  Parrot_new_p_pc_pc,                                /*    791 */
+  Parrot_root_new_p_p,                               /*    792 */
+  Parrot_root_new_p_pc,                              /*    793 */
+  Parrot_root_new_p_p_p,                             /*    794 */
+  Parrot_root_new_p_pc_p,                            /*    795 */
+  Parrot_root_new_p_p_pc,                            /*    796 */
+  Parrot_root_new_p_pc_pc,                           /*    797 */
+  Parrot_typeof_s_p,                                 /*    798 */
+  Parrot_typeof_p_p,                                 /*    799 */
+  Parrot_get_repr_s_p,                               /*    800 */
+  Parrot_find_method_p_p_s,                          /*    801 */
+  Parrot_find_method_p_p_sc,                         /*    802 */
+  Parrot_defined_i_p,                                /*    803 */
+  Parrot_defined_i_p_ki,                             /*    804 */
+  Parrot_defined_i_p_kic,                            /*    805 */
+  Parrot_defined_i_p_k,                              /*    806 */
+  Parrot_defined_i_p_kc,                             /*    807 */
+  Parrot_exists_i_p_ki,                              /*    808 */
+  Parrot_exists_i_p_kic,                             /*    809 */
+  Parrot_exists_i_p_k,                               /*    810 */
+  Parrot_exists_i_p_kc,                              /*    811 */
+  Parrot_delete_p_k,                                 /*    812 */
+  Parrot_delete_p_kc,                                /*    813 */
+  Parrot_delete_p_ki,                                /*    814 */
+  Parrot_delete_p_kic,                               /*    815 */
+  Parrot_elements_i_p,                               /*    816 */
+  Parrot_push_p_i,                                   /*    817 */
+  Parrot_push_p_ic,                                  /*    818 */
+  Parrot_push_p_n,                                   /*    819 */
+  Parrot_push_p_nc,                                  /*    820 */
+  Parrot_push_p_s,                                   /*    821 */
+  Parrot_push_p_sc,                                  /*    822 */
+  Parrot_push_p_p,                                   /*    823 */
+  Parrot_pop_i_p,                                    /*    824 */
+  Parrot_pop_n_p,                                    /*    825 */
+  Parrot_pop_s_p,                                    /*    826 */
+  Parrot_pop_p_p,                                    /*    827 */
+  Parrot_unshift_p_i,                                /*    828 */
+  Parrot_unshift_p_ic,                               /*    829 */
+  Parrot_unshift_p_n,                                /*    830 */
+  Parrot_unshift_p_nc,                               /*    831 */
+  Parrot_unshift_p_s,                                /*    832 */
+  Parrot_unshift_p_sc,                               /*    833 */
+  Parrot_unshift_p_p,                                /*    834 */
+  Parrot_shift_i_p,                                  /*    835 */
+  Parrot_shift_n_p,                                  /*    836 */
+  Parrot_shift_s_p,                                  /*    837 */
+  Parrot_shift_p_p,                                  /*    838 */
+  Parrot_splice_p_p_i_i,                             /*    839 */
+  Parrot_splice_p_p_ic_i,                            /*    840 */
+  Parrot_splice_p_p_i_ic,                            /*    841 */
+  Parrot_splice_p_p_ic_ic,                           /*    842 */
+  Parrot_setprop_p_s_p,                              /*    843 */
+  Parrot_setprop_p_sc_p,                             /*    844 */
+  Parrot_getprop_p_s_p,                              /*    845 */
+  Parrot_getprop_p_sc_p,                             /*    846 */
+  Parrot_delprop_p_s,                                /*    847 */
+  Parrot_delprop_p_sc,                               /*    848 */
+  Parrot_prophash_p_p,                               /*    849 */
+  Parrot_freeze_s_p,                                 /*    850 */
+  Parrot_thaw_p_s,                                   /*    851 */
+  Parrot_thaw_p_sc,                                  /*    852 */
+  Parrot_add_multi_s_s_p,                            /*    853 */
+  Parrot_add_multi_sc_s_p,                           /*    854 */
+  Parrot_add_multi_s_sc_p,                           /*    855 */
+  Parrot_add_multi_sc_sc_p,                          /*    856 */
+  Parrot_find_multi_p_s_s,                           /*    857 */
+  Parrot_find_multi_p_sc_s,                          /*    858 */
+  Parrot_find_multi_p_s_sc,                          /*    859 */
+  Parrot_find_multi_p_sc_sc,                         /*    860 */
+  Parrot_register_p,                                 /*    861 */
+  Parrot_unregister_p,                               /*    862 */
+  Parrot_box_p_i,                                    /*    863 */
+  Parrot_box_p_ic,                                   /*    864 */
+  Parrot_box_p_n,                                    /*    865 */
+  Parrot_box_p_nc,                                   /*    866 */
+  Parrot_box_p_s,                                    /*    867 */
+  Parrot_box_p_sc,                                   /*    868 */
+  Parrot_iter_p_p,                                   /*    869 */
+  Parrot_morph_p_p,                                  /*    870 */
+  Parrot_morph_p_pc,                                 /*    871 */
+  Parrot_clone_s_s,                                  /*    872 */
+  Parrot_clone_s_sc,                                 /*    873 */
+  Parrot_exchange_i_i,                               /*    874 */
+  Parrot_exchange_p_p,                               /*    875 */
+  Parrot_exchange_n_n,                               /*    876 */
+  Parrot_exchange_s_s,                               /*    877 */
+  Parrot_set_i_i,                                    /*    878 */
+  Parrot_set_i_ic,                                   /*    879 */
+  Parrot_set_i_n,                                    /*    880 */
+  Parrot_set_i_nc,                                   /*    881 */
+  Parrot_set_i_s,                                    /*    882 */
+  Parrot_set_i_sc,                                   /*    883 */
+  Parrot_set_n_n,                                    /*    884 */
+  Parrot_set_n_nc,                                   /*    885 */
+  Parrot_set_n_i,                                    /*    886 */
+  Parrot_set_n_ic,                                   /*    887 */
+  Parrot_set_n_s,                                    /*    888 */
+  Parrot_set_n_sc,                                   /*    889 */
+  Parrot_set_n_p,                                    /*    890 */
+  Parrot_set_s_p,                                    /*    891 */
+  Parrot_set_s_s,                                    /*    892 */
+  Parrot_set_s_sc,                                   /*    893 */
+  Parrot_set_s_i,                                    /*    894 */
+  Parrot_set_s_ic,                                   /*    895 */
+  Parrot_set_s_n,                                    /*    896 */
+  Parrot_set_s_nc,                                   /*    897 */
+  Parrot_set_p_pc,                                   /*    898 */
+  Parrot_set_p_p,                                    /*    899 */
+  Parrot_set_p_i,                                    /*    900 */
+  Parrot_set_p_ic,                                   /*    901 */
+  Parrot_set_p_n,                                    /*    902 */
+  Parrot_set_p_nc,                                   /*    903 */
+  Parrot_set_p_s,                                    /*    904 */
+  Parrot_set_p_sc,                                   /*    905 */
+  Parrot_set_i_p,                                    /*    906 */
+  Parrot_assign_p_p,                                 /*    907 */
+  Parrot_assign_p_i,                                 /*    908 */
+  Parrot_assign_p_ic,                                /*    909 */
+  Parrot_assign_p_n,                                 /*    910 */
+  Parrot_assign_p_nc,                                /*    911 */
+  Parrot_assign_p_s,                                 /*    912 */
+  Parrot_assign_p_sc,                                /*    913 */
+  Parrot_assign_s_s,                                 /*    914 */
+  Parrot_assign_s_sc,                                /*    915 */
+  Parrot_setref_p_p,                                 /*    916 */
+  Parrot_deref_p_p,                                  /*    917 */
+  Parrot_setp_ind_i_p,                               /*    918 */
+  Parrot_setp_ind_ic_p,                              /*    919 */
+  Parrot_setn_ind_i_n,                               /*    920 */
+  Parrot_setn_ind_ic_n,                              /*    921 */
+  Parrot_setn_ind_i_nc,                              /*    922 */
+  Parrot_setn_ind_ic_nc,                             /*    923 */
+  Parrot_sets_ind_i_s,                               /*    924 */
+  Parrot_sets_ind_ic_s,                              /*    925 */
+  Parrot_sets_ind_i_sc,                              /*    926 */
+  Parrot_sets_ind_ic_sc,                             /*    927 */
+  Parrot_seti_ind_i_i,                               /*    928 */
+  Parrot_seti_ind_ic_i,                              /*    929 */
+  Parrot_seti_ind_i_ic,                              /*    930 */
+  Parrot_seti_ind_ic_ic,                             /*    931 */
+  Parrot_set_p_ki_i,                                 /*    932 */
+  Parrot_set_p_kic_i,                                /*    933 */
+  Parrot_set_p_ki_ic,                                /*    934 */
+  Parrot_set_p_kic_ic,                               /*    935 */
+  Parrot_set_p_ki_n,                                 /*    936 */
+  Parrot_set_p_kic_n,                                /*    937 */
+  Parrot_set_p_ki_nc,                                /*    938 */
+  Parrot_set_p_kic_nc,                               /*    939 */
+  Parrot_set_p_ki_s,                                 /*    940 */
+  Parrot_set_p_kic_s,                                /*    941 */
+  Parrot_set_p_ki_sc,                                /*    942 */
+  Parrot_set_p_kic_sc,                               /*    943 */
+  Parrot_set_p_ki_p,                                 /*    944 */
+  Parrot_set_p_kic_p,                                /*    945 */
+  Parrot_set_i_p_ki,                                 /*    946 */
+  Parrot_set_i_p_kic,                                /*    947 */
+  Parrot_set_n_p_ki,                                 /*    948 */
+  Parrot_set_n_p_kic,                                /*    949 */
+  Parrot_set_s_p_ki,                                 /*    950 */
+  Parrot_set_s_p_kic,                                /*    951 */
+  Parrot_set_p_p_ki,                                 /*    952 */
+  Parrot_set_p_p_kic,                                /*    953 */
+  Parrot_set_p_k_i,                                  /*    954 */
+  Parrot_set_p_kc_i,                                 /*    955 */
+  Parrot_set_p_k_ic,                                 /*    956 */
+  Parrot_set_p_kc_ic,                                /*    957 */
+  Parrot_set_p_k_n,                                  /*    958 */
+  Parrot_set_p_kc_n,                                 /*    959 */
+  Parrot_set_p_k_nc,                                 /*    960 */
+  Parrot_set_p_kc_nc,                                /*    961 */
+  Parrot_set_p_k_s,                                  /*    962 */
+  Parrot_set_p_kc_s,                                 /*    963 */
+  Parrot_set_p_k_sc,                                 /*    964 */
+  Parrot_set_p_kc_sc,                                /*    965 */
+  Parrot_set_p_k_p,                                  /*    966 */
+  Parrot_set_p_kc_p,                                 /*    967 */
+  Parrot_set_i_p_k,                                  /*    968 */
+  Parrot_set_i_p_kc,                                 /*    969 */
+  Parrot_set_n_p_k,                                  /*    970 */
+  Parrot_set_n_p_kc,                                 /*    971 */
+  Parrot_set_s_p_k,                                  /*    972 */
+  Parrot_set_s_p_kc,                                 /*    973 */
+  Parrot_set_p_p_k,                                  /*    974 */
+  Parrot_set_p_p_kc,                                 /*    975 */
+  Parrot_clone_p_p,                                  /*    976 */
+  Parrot_clone_p_p_p,                                /*    977 */
+  Parrot_clone_p_p_pc,                               /*    978 */
+  Parrot_copy_p_p,                                   /*    979 */
+  Parrot_null_s,                                     /*    980 */
+  Parrot_null_i,                                     /*    981 */
+  Parrot_null_p,                                     /*    982 */
+  Parrot_null_n,                                     /*    983 */
+  Parrot_cleari,                                     /*    984 */
+  Parrot_clearn,                                     /*    985 */
+  Parrot_clears,                                     /*    986 */
+  Parrot_clearp,                                     /*    987 */
+  Parrot_ord_i_s,                                    /*    988 */
+  Parrot_ord_i_sc,                                   /*    989 */
+  Parrot_ord_i_s_i,                                  /*    990 */
+  Parrot_ord_i_sc_i,                                 /*    991 */
+  Parrot_ord_i_s_ic,                                 /*    992 */
+  Parrot_ord_i_sc_ic,                                /*    993 */
+  Parrot_chr_s_i,                                    /*    994 */
+  Parrot_chr_s_ic,                                   /*    995 */
+  Parrot_chopn_s_i,                                  /*    996 */
+  Parrot_chopn_s_ic,                                 /*    997 */
+  Parrot_chopn_s_s_i,                                /*    998 */
+  Parrot_chopn_s_sc_i,                               /*    999 */
+  Parrot_chopn_s_s_ic,                               /*   1000 */
+  Parrot_chopn_s_sc_ic,                              /*   1001 */
+  Parrot_concat_s_s,                                 /*   1002 */
+  Parrot_concat_s_sc,                                /*   1003 */
+  Parrot_concat_p_p,                                 /*   1004 */
+  Parrot_concat_p_s,                                 /*   1005 */
+  Parrot_concat_p_sc,                                /*   1006 */
+  Parrot_concat_s_s_s,                               /*   1007 */
+  Parrot_concat_s_sc_s,                              /*   1008 */
+  Parrot_concat_s_s_sc,                              /*   1009 */
+  Parrot_concat_p_p_s,                               /*   1010 */
+  Parrot_concat_p_p_sc,                              /*   1011 */
+  Parrot_concat_p_p_p,                               /*   1012 */
+  Parrot_repeat_s_s_i,                               /*   1013 */
+  Parrot_repeat_s_sc_i,                              /*   1014 */
+  Parrot_repeat_s_s_ic,                              /*   1015 */
+  Parrot_repeat_s_sc_ic,                             /*   1016 */
+  Parrot_repeat_p_p_i,                               /*   1017 */
+  Parrot_repeat_p_p_ic,                              /*   1018 */
+  Parrot_repeat_p_p_p,                               /*   1019 */
+  Parrot_repeat_p_i,                                 /*   1020 */
+  Parrot_repeat_p_ic,                                /*   1021 */
+  Parrot_repeat_p_p,                                 /*   1022 */
+  Parrot_length_i_s,                                 /*   1023 */
+  Parrot_length_i_sc,                                /*   1024 */
+  Parrot_bytelength_i_s,                             /*   1025 */
+  Parrot_bytelength_i_sc,                            /*   1026 */
+  Parrot_pin_s,                                      /*   1027 */
+  Parrot_unpin_s,                                    /*   1028 */
+  Parrot_substr_s_s_i,                               /*   1029 */
+  Parrot_substr_s_sc_i,                              /*   1030 */
+  Parrot_substr_s_s_ic,                              /*   1031 */
+  Parrot_substr_s_sc_ic,                             /*   1032 */
+  Parrot_substr_s_s_i_i,                             /*   1033 */
+  Parrot_substr_s_sc_i_i,                            /*   1034 */
+  Parrot_substr_s_s_ic_i,                            /*   1035 */
+  Parrot_substr_s_sc_ic_i,                           /*   1036 */
+  Parrot_substr_s_s_i_ic,                            /*   1037 */
+  Parrot_substr_s_sc_i_ic,                           /*   1038 */
+  Parrot_substr_s_s_ic_ic,                           /*   1039 */
+  Parrot_substr_s_sc_ic_ic,                          /*   1040 */
+  Parrot_substr_s_s_i_i_s,                           /*   1041 */
+  Parrot_substr_s_s_ic_i_s,                          /*   1042 */
+  Parrot_substr_s_s_i_ic_s,                          /*   1043 */
+  Parrot_substr_s_s_ic_ic_s,                         /*   1044 */
+  Parrot_substr_s_s_i_i_sc,                          /*   1045 */
+  Parrot_substr_s_s_ic_i_sc,                         /*   1046 */
+  Parrot_substr_s_s_i_ic_sc,                         /*   1047 */
+  Parrot_substr_s_s_ic_ic_sc,                        /*   1048 */
+  Parrot_substr_s_i_i_s,                             /*   1049 */
+  Parrot_substr_s_ic_i_s,                            /*   1050 */
+  Parrot_substr_s_i_ic_s,                            /*   1051 */
+  Parrot_substr_s_ic_ic_s,                           /*   1052 */
+  Parrot_substr_s_i_i_sc,                            /*   1053 */
+  Parrot_substr_s_ic_i_sc,                           /*   1054 */
+  Parrot_substr_s_i_ic_sc,                           /*   1055 */
+  Parrot_substr_s_ic_ic_sc,                          /*   1056 */
+  Parrot_substr_s_p_i_i,                             /*   1057 */
+  Parrot_substr_s_p_ic_i,                            /*   1058 */
+  Parrot_substr_s_p_i_ic,                            /*   1059 */
+  Parrot_substr_s_p_ic_ic,                           /*   1060 */
+  Parrot_index_i_s_s,                                /*   1061 */
+  Parrot_index_i_sc_s,                               /*   1062 */
+  Parrot_index_i_s_sc,                               /*   1063 */
+  Parrot_index_i_sc_sc,                              /*   1064 */
+  Parrot_index_i_s_s_i,                              /*   1065 */
+  Parrot_index_i_sc_s_i,                             /*   1066 */
+  Parrot_index_i_s_sc_i,                             /*   1067 */
+  Parrot_index_i_sc_sc_i,                            /*   1068 */
+  Parrot_index_i_s_s_ic,                             /*   1069 */
+  Parrot_index_i_sc_s_ic,                            /*   1070 */
+  Parrot_index_i_s_sc_ic,                            /*   1071 */
+  Parrot_index_i_sc_sc_ic,                           /*   1072 */
+  Parrot_sprintf_s_s_p,                              /*   1073 */
+  Parrot_sprintf_s_sc_p,                             /*   1074 */
+  Parrot_sprintf_p_p_p,                              /*   1075 */
+  Parrot_new_s,                                      /*   1076 */
+  Parrot_new_s_i,                                    /*   1077 */
+  Parrot_new_s_ic,                                   /*   1078 */
+  Parrot_stringinfo_i_s_i,                           /*   1079 */
+  Parrot_stringinfo_i_sc_i,                          /*   1080 */
+  Parrot_stringinfo_i_s_ic,                          /*   1081 */
+  Parrot_stringinfo_i_sc_ic,                         /*   1082 */
+  Parrot_upcase_s_s,                                 /*   1083 */
+  Parrot_upcase_s_sc,                                /*   1084 */
+  Parrot_upcase_s,                                   /*   1085 */
+  Parrot_downcase_s_s,                               /*   1086 */
+  Parrot_downcase_s_sc,                              /*   1087 */
+  Parrot_downcase_s,                                 /*   1088 */
+  Parrot_titlecase_s_s,                              /*   1089 */
+  Parrot_titlecase_s_sc,                             /*   1090 */
+  Parrot_titlecase_s,                                /*   1091 */
+  Parrot_join_s_s_p,                                 /*   1092 */
+  Parrot_join_s_sc_p,                                /*   1093 */
+  Parrot_split_p_s_s,                                /*   1094 */
+  Parrot_split_p_sc_s,                               /*   1095 */
+  Parrot_split_p_s_sc,                               /*   1096 */
+  Parrot_split_p_sc_sc,                              /*   1097 */
+  Parrot_charset_i_s,                                /*   1098 */
+  Parrot_charset_i_sc,                               /*   1099 */
+  Parrot_charsetname_s_i,                            /*   1100 */
+  Parrot_charsetname_s_ic,                           /*   1101 */
+  Parrot_find_charset_i_s,                           /*   1102 */
+  Parrot_find_charset_i_sc,                          /*   1103 */
+  Parrot_trans_charset_s_i,                          /*   1104 */
+  Parrot_trans_charset_s_ic,                         /*   1105 */
+  Parrot_trans_charset_s_s_i,                        /*   1106 */
+  Parrot_trans_charset_s_sc_i,                       /*   1107 */
+  Parrot_trans_charset_s_s_ic,                       /*   1108 */
+  Parrot_trans_charset_s_sc_ic,                      /*   1109 */
+  Parrot_encoding_i_s,                               /*   1110 */
+  Parrot_encoding_i_sc,                              /*   1111 */
+  Parrot_encodingname_s_i,                           /*   1112 */
+  Parrot_encodingname_s_ic,                          /*   1113 */
+  Parrot_find_encoding_i_s,                          /*   1114 */
+  Parrot_find_encoding_i_sc,                         /*   1115 */
+  Parrot_trans_encoding_s_i,                         /*   1116 */
+  Parrot_trans_encoding_s_ic,                        /*   1117 */
+  Parrot_trans_encoding_s_s_i,                       /*   1118 */
+  Parrot_trans_encoding_s_sc_i,                      /*   1119 */
+  Parrot_trans_encoding_s_s_ic,                      /*   1120 */
+  Parrot_trans_encoding_s_sc_ic,                     /*   1121 */
+  Parrot_is_cclass_i_i_s_i,                          /*   1122 */
+  Parrot_is_cclass_i_ic_s_i,                         /*   1123 */
+  Parrot_is_cclass_i_i_sc_i,                         /*   1124 */
+  Parrot_is_cclass_i_ic_sc_i,                        /*   1125 */
+  Parrot_is_cclass_i_i_s_ic,                         /*   1126 */
+  Parrot_is_cclass_i_ic_s_ic,                        /*   1127 */
+  Parrot_is_cclass_i_i_sc_ic,                        /*   1128 */
+  Parrot_is_cclass_i_ic_sc_ic,                       /*   1129 */
+  Parrot_find_cclass_i_i_s_i_i,                      /*   1130 */
+  Parrot_find_cclass_i_ic_s_i_i,                     /*   1131 */
+  Parrot_find_cclass_i_i_sc_i_i,                     /*   1132 */
+  Parrot_find_cclass_i_ic_sc_i_i,                    /*   1133 */
+  Parrot_find_cclass_i_i_s_ic_i,                     /*   1134 */
+  Parrot_find_cclass_i_ic_s_ic_i,                    /*   1135 */
+  Parrot_find_cclass_i_i_sc_ic_i,                    /*   1136 */
+  Parrot_find_cclass_i_ic_sc_ic_i,                   /*   1137 */
+  Parrot_find_cclass_i_i_s_i_ic,                     /*   1138 */
+  Parrot_find_cclass_i_ic_s_i_ic,                    /*   1139 */
+  Parrot_find_cclass_i_i_sc_i_ic,                    /*   1140 */
+  Parrot_find_cclass_i_ic_sc_i_ic,                   /*   1141 */
+  Parrot_find_cclass_i_i_s_ic_ic,                    /*   1142 */
+  Parrot_find_cclass_i_ic_s_ic_ic,                   /*   1143 */
+  Parrot_find_cclass_i_i_sc_ic_ic,                   /*   1144 */
+  Parrot_find_cclass_i_ic_sc_ic_ic,                  /*   1145 */
+  Parrot_find_not_cclass_i_i_s_i_i,                  /*   1146 */
+  Parrot_find_not_cclass_i_ic_s_i_i,                 /*   1147 */
+  Parrot_find_not_cclass_i_i_sc_i_i,                 /*   1148 */
+  Parrot_find_not_cclass_i_ic_sc_i_i,                /*   1149 */
+  Parrot_find_not_cclass_i_i_s_ic_i,                 /*   1150 */
+  Parrot_find_not_cclass_i_ic_s_ic_i,                /*   1151 */
+  Parrot_find_not_cclass_i_i_sc_ic_i,                /*   1152 */
+  Parrot_find_not_cclass_i_ic_sc_ic_i,               /*   1153 */
+  Parrot_find_not_cclass_i_i_s_i_ic,                 /*   1154 */
+  Parrot_find_not_cclass_i_ic_s_i_ic,                /*   1155 */
+  Parrot_find_not_cclass_i_i_sc_i_ic,                /*   1156 */
+  Parrot_find_not_cclass_i_ic_sc_i_ic,               /*   1157 */
+  Parrot_find_not_cclass_i_i_s_ic_ic,                /*   1158 */
+  Parrot_find_not_cclass_i_ic_s_ic_ic,               /*   1159 */
+  Parrot_find_not_cclass_i_i_sc_ic_ic,               /*   1160 */
+  Parrot_find_not_cclass_i_ic_sc_ic_ic,              /*   1161 */
+  Parrot_escape_s_s,                                 /*   1162 */
+  Parrot_compose_s_s,                                /*   1163 */
+  Parrot_compose_s_sc,                               /*   1164 */
+  Parrot_spawnw_i_s,                                 /*   1165 */
+  Parrot_spawnw_i_sc,                                /*   1166 */
+  Parrot_spawnw_i_p,                                 /*   1167 */
+  Parrot_err_i,                                      /*   1168 */
+  Parrot_err_s,                                      /*   1169 */
+  Parrot_err_s_i,                                    /*   1170 */
+  Parrot_err_s_ic,                                   /*   1171 */
+  Parrot_time_i,                                     /*   1172 */
+  Parrot_time_n,                                     /*   1173 */
+  Parrot_gmtime_s_i,                                 /*   1174 */
+  Parrot_gmtime_s_ic,                                /*   1175 */
+  Parrot_localtime_s_i,                              /*   1176 */
+  Parrot_localtime_s_ic,                             /*   1177 */
+  Parrot_decodetime_p_i,                             /*   1178 */
+  Parrot_decodetime_p_ic,                            /*   1179 */
+  Parrot_decodelocaltime_p_i,                        /*   1180 */
+  Parrot_decodelocaltime_p_ic,                       /*   1181 */
+  Parrot_sysinfo_s_i,                                /*   1182 */
+  Parrot_sysinfo_s_ic,                               /*   1183 */
+  Parrot_sysinfo_i_i,                                /*   1184 */
+  Parrot_sysinfo_i_ic,                               /*   1185 */
+  Parrot_sleep_i,                                    /*   1186 */
+  Parrot_sleep_ic,                                   /*   1187 */
+  Parrot_sleep_n,                                    /*   1188 */
+  Parrot_sleep_nc,                                   /*   1189 */
+  Parrot_sizeof_i_i,                                 /*   1190 */
+  Parrot_sizeof_i_ic,                                /*   1191 */
+  Parrot_store_lex_s_p,                              /*   1192 */
+  Parrot_store_lex_sc_p,                             /*   1193 */
+  Parrot_store_dynamic_lex_s_p,                      /*   1194 */
+  Parrot_store_dynamic_lex_sc_p,                     /*   1195 */
+  Parrot_find_lex_p_s,                               /*   1196 */
+  Parrot_find_lex_p_sc,                              /*   1197 */
+  Parrot_find_dynamic_lex_p_s,                       /*   1198 */
+  Parrot_find_dynamic_lex_p_sc,                      /*   1199 */
+  Parrot_find_caller_lex_p_s,                        /*   1200 */
+  Parrot_find_caller_lex_p_sc,                       /*   1201 */
+  Parrot_get_namespace_p,                            /*   1202 */
+  Parrot_get_namespace_p_p,                          /*   1203 */
+  Parrot_get_namespace_p_pc,                         /*   1204 */
+  Parrot_get_hll_namespace_p,                        /*   1205 */
+  Parrot_get_hll_namespace_p_p,                      /*   1206 */
+  Parrot_get_hll_namespace_p_pc,                     /*   1207 */
+  Parrot_get_root_namespace_p,                       /*   1208 */
+  Parrot_get_root_namespace_p_p,                     /*   1209 */
+  Parrot_get_root_namespace_p_pc,                    /*   1210 */
+  Parrot_get_global_p_s,                             /*   1211 */
+  Parrot_get_global_p_sc,                            /*   1212 */
+  Parrot_get_global_p_p_s,                           /*   1213 */
+  Parrot_get_global_p_pc_s,                          /*   1214 */
+  Parrot_get_global_p_p_sc,                          /*   1215 */
+  Parrot_get_global_p_pc_sc,                         /*   1216 */
+  Parrot_get_hll_global_p_s,                         /*   1217 */
+  Parrot_get_hll_global_p_sc,                        /*   1218 */
+  Parrot_get_hll_global_p_p_s,                       /*   1219 */
+  Parrot_get_hll_global_p_pc_s,                      /*   1220 */
+  Parrot_get_hll_global_p_p_sc,                      /*   1221 */
+  Parrot_get_hll_global_p_pc_sc,                     /*   1222 */
+  Parrot_get_root_global_p_s,                        /*   1223 */
+  Parrot_get_root_global_p_sc,                       /*   1224 */
+  Parrot_get_root_global_p_p_s,                      /*   1225 */
+  Parrot_get_root_global_p_pc_s,                     /*   1226 */
+  Parrot_get_root_global_p_p_sc,                     /*   1227 */
+  Parrot_get_root_global_p_pc_sc,                    /*   1228 */
+  Parrot_set_global_s_p,                             /*   1229 */
+  Parrot_set_global_sc_p,                            /*   1230 */
+  Parrot_set_global_p_s_p,                           /*   1231 */
+  Parrot_set_global_pc_s_p,                          /*   1232 */
+  Parrot_set_global_p_sc_p,                          /*   1233 */
+  Parrot_set_global_pc_sc_p,                         /*   1234 */
+  Parrot_set_hll_global_s_p,                         /*   1235 */
+  Parrot_set_hll_global_sc_p,                        /*   1236 */
+  Parrot_set_hll_global_p_s_p,                       /*   1237 */
+  Parrot_set_hll_global_pc_s_p,                      /*   1238 */
+  Parrot_set_hll_global_p_sc_p,                      /*   1239 */
+  Parrot_set_hll_global_pc_sc_p,                     /*   1240 */
+  Parrot_set_root_global_s_p,                        /*   1241 */
+  Parrot_set_root_global_sc_p,                       /*   1242 */
+  Parrot_set_root_global_p_s_p,                      /*   1243 */
+  Parrot_set_root_global_pc_s_p,                     /*   1244 */
+  Parrot_set_root_global_p_sc_p,                     /*   1245 */
+  Parrot_set_root_global_pc_sc_p,                    /*   1246 */
+  Parrot_find_name_p_s,                              /*   1247 */
+  Parrot_find_name_p_sc,                             /*   1248 */
+  Parrot_find_sub_not_null_p_s,                      /*   1249 */
+  Parrot_find_sub_not_null_p_sc,                     /*   1250 */
+  Parrot_trap,                                       /*   1251 */
+  Parrot_fetch_p_p_p_p,                              /*   1252 */
+  Parrot_fetch_p_pc_p_p,                             /*   1253 */
+  Parrot_fetch_p_p_pc_p,                             /*   1254 */
+  Parrot_fetch_p_pc_pc_p,                            /*   1255 */
+  Parrot_fetch_p_p_p_pc,                             /*   1256 */
+  Parrot_fetch_p_pc_p_pc,                            /*   1257 */
+  Parrot_fetch_p_p_pc_pc,                            /*   1258 */
+  Parrot_fetch_p_pc_pc_pc,                           /*   1259 */
+  Parrot_fetch_p_p_i_p,                              /*   1260 */
+  Parrot_fetch_p_pc_i_p,                             /*   1261 */
+  Parrot_fetch_p_p_ic_p,                             /*   1262 */
+  Parrot_fetch_p_pc_ic_p,                            /*   1263 */
+  Parrot_fetch_p_p_i_pc,                             /*   1264 */
+  Parrot_fetch_p_pc_i_pc,                            /*   1265 */
+  Parrot_fetch_p_p_ic_pc,                            /*   1266 */
+  Parrot_fetch_p_pc_ic_pc,                           /*   1267 */
+  Parrot_fetch_p_p_s_p,                              /*   1268 */
+  Parrot_fetch_p_pc_s_p,                             /*   1269 */
+  Parrot_fetch_p_p_sc_p,                             /*   1270 */
+  Parrot_fetch_p_pc_sc_p,                            /*   1271 */
+  Parrot_fetch_p_p_s_pc,                             /*   1272 */
+  Parrot_fetch_p_pc_s_pc,                            /*   1273 */
+  Parrot_fetch_p_p_sc_pc,                            /*   1274 */
+  Parrot_fetch_p_pc_sc_pc,                           /*   1275 */
+  Parrot_vivify_p_p_p_p,                             /*   1276 */
+  Parrot_vivify_p_pc_p_p,                            /*   1277 */
+  Parrot_vivify_p_p_pc_p,                            /*   1278 */
+  Parrot_vivify_p_pc_pc_p,                           /*   1279 */
+  Parrot_vivify_p_p_p_pc,                            /*   1280 */
+  Parrot_vivify_p_pc_p_pc,                           /*   1281 */
+  Parrot_vivify_p_p_pc_pc,                           /*   1282 */
+  Parrot_vivify_p_pc_pc_pc,                          /*   1283 */
+  Parrot_vivify_p_p_i_p,                             /*   1284 */
+  Parrot_vivify_p_pc_i_p,                            /*   1285 */
+  Parrot_vivify_p_p_ic_p,                            /*   1286 */
+  Parrot_vivify_p_pc_ic_p,                           /*   1287 */
+  Parrot_vivify_p_p_i_pc,                            /*   1288 */
+  Parrot_vivify_p_pc_i_pc,                           /*   1289 */
+  Parrot_vivify_p_p_ic_pc,                           /*   1290 */
+  Parrot_vivify_p_pc_ic_pc,                          /*   1291 */
+  Parrot_vivify_p_p_s_p,                             /*   1292 */
+  Parrot_vivify_p_pc_s_p,                            /*   1293 */
+  Parrot_vivify_p_p_sc_p,                            /*   1294 */
+  Parrot_vivify_p_pc_sc_p,                           /*   1295 */
+  Parrot_vivify_p_p_s_pc,                            /*   1296 */
+  Parrot_vivify_p_pc_s_pc,                           /*   1297 */
+  Parrot_vivify_p_p_sc_pc,                           /*   1298 */
+  Parrot_vivify_p_pc_sc_pc,                          /*   1299 */
   NULL /* NULL function pointer */
 };
 
@@ -18324,9 +16996,9 @@
   PARROT_FUNCTION_CORE,                       /* core_type = PARROT_XX_CORE */
   0,                                /* flags */
   2,    /* major_version */
-  0,    /* minor_version */
+  1,    /* minor_version */
   0,    /* patch_version */
-  1302,              /* op_count */
+  1300,              /* op_count */
   core_op_info_table,              /* op_info_table */
   core_op_func_table,              /* op_func_table */
   get_op                 /* op_code() */
@@ -18346,14 +17018,14 @@
 opcode_t *
 Parrot_noop (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 109 "src/ops/core.ops"
+#line 99 "src/ops/core.ops"
 
 return (opcode_t *)cur_opcode + 1;}
 
 opcode_t *
 Parrot_cpu_ret (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 112 "src/ops/core.ops"
+#line 102 "src/ops/core.ops"
     /* We only want to call __asm__("ret") if we're in the JIT core. Otherwise
        we want to throw an error. Seriously people: Do not use this opcode
        directly in PIR. Ever. It absolutely makes no sense and it doesn't do
@@ -18377,7 +17049,7 @@
 opcode_t *
 Parrot_check_events (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 132 "src/ops/core.ops"
+#line 122 "src/ops/core.ops"
     opcode_t *next = cur_opcode + 1;
     Parrot_cx_check_tasks(interp, interp->scheduler);
     return (opcode_t *)next;   /* force this being a branch op */
@@ -18386,7 +17058,7 @@
 opcode_t *
 Parrot_check_events__ (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 138 "src/ops/core.ops"
+#line 128 "src/ops/core.ops"
     opcode_t *_this = CUR_OPCODE;
     /* Restore op_func_table. */
     disable_event_checking(interp);
@@ -18397,38 +17069,16 @@
 opcode_t *
 Parrot_wrapper__ (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 146 "src/ops/core.ops"
+#line 136 "src/ops/core.ops"
     opcode_t *pc = CUR_OPCODE;
     DO_OP(pc, interp);
     return (opcode_t *)pc;
 }
 
 opcode_t *
-Parrot_prederef__ (opcode_t *cur_opcode, PARROT_INTERP)  {
-    Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 152 "src/ops/core.ops"
-    opcode_t * const _this = CUR_OPCODE;
-    if (PARROT_RUNCORE_CGOTO_OPS_TEST(interp->run_core)) {
-        /* must be CGP then - check for events in not yet prederefed code */
-        Parrot_cx_runloop_wake(interp, interp->scheduler);
-    /*    _this = CHECK_EVENTS(interp, _this); */
-    }
-    do_prederef((void**)cur_opcode, interp, interp->run_core);
-    return (opcode_t *)_this; /* force this being a branch op */
-}
-
-opcode_t *
-Parrot_reserved_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
-    Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 163 "src/ops/core.ops"
-    /* reserve 1 entries */
-
-return (opcode_t *)cur_opcode + 2;}
-
-opcode_t *
 Parrot_load_bytecode_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 167 "src/ops/core.ops"
+#line 142 "src/ops/core.ops"
     Parrot_load_bytecode(interp, SREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -18436,7 +17086,7 @@
 opcode_t *
 Parrot_load_bytecode_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 167 "src/ops/core.ops"
+#line 142 "src/ops/core.ops"
     Parrot_load_bytecode(interp, CONST(1)->u.string);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -18444,7 +17094,7 @@
 opcode_t *
 Parrot_load_language_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 178 "src/ops/core.ops"
+#line 153 "src/ops/core.ops"
     Parrot_load_language(interp, SREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -18452,7 +17102,7 @@
 opcode_t *
 Parrot_load_language_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 178 "src/ops/core.ops"
+#line 153 "src/ops/core.ops"
     Parrot_load_language(interp, CONST(1)->u.string);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -18460,21 +17110,21 @@
 opcode_t *
 Parrot_branch_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 204 "src/ops/core.ops"
+#line 179 "src/ops/core.ops"
     return (opcode_t *)cur_opcode + IREG(1);
 }
 
 opcode_t *
 Parrot_branch_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 204 "src/ops/core.ops"
+#line 179 "src/ops/core.ops"
     return (opcode_t *)cur_opcode + cur_opcode[1];
 }
 
 opcode_t *
 Parrot_local_branch_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 218 "src/ops/core.ops"
+#line 193 "src/ops/core.ops"
     INTVAL return_addr;
     opcode_t *dest = cur_opcode + 3;
 
@@ -18494,7 +17144,7 @@
 opcode_t *
 Parrot_local_branch_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 218 "src/ops/core.ops"
+#line 193 "src/ops/core.ops"
     INTVAL return_addr;
     opcode_t *dest = cur_opcode + 3;
 
@@ -18514,7 +17164,7 @@
 opcode_t *
 Parrot_local_return_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 241 "src/ops/core.ops"
+#line 216 "src/ops/core.ops"
     INTVAL return_addr;
     opcode_t *next;
     opcode_t *dest = cur_opcode + 2;
@@ -18544,7 +17194,7 @@
 opcode_t *
 Parrot_jump_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 276 "src/ops/core.ops"
+#line 251 "src/ops/core.ops"
     opcode_t * const loc = INTVAL2PTR(opcode_t *, IREG(1));
     return (opcode_t *)loc;
 }
@@ -18552,7 +17202,7 @@
 opcode_t *
 Parrot_jump_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 276 "src/ops/core.ops"
+#line 251 "src/ops/core.ops"
     opcode_t * const loc = INTVAL2PTR(opcode_t *, cur_opcode[1]);
     return (opcode_t *)loc;
 }
@@ -18560,7 +17210,7 @@
 opcode_t *
 Parrot_enternative (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 289 "src/ops/core.ops"
+#line 264 "src/ops/core.ops"
     opcode_t * const addr = run_native(interp, CUR_OPCODE,
             interp->code->base.data);
     return (opcode_t *)addr;
@@ -18569,7 +17219,7 @@
 opcode_t *
 Parrot_if_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 324 "src/ops/core.ops"
+#line 299 "src/ops/core.ops"
     if (IREG(1) != 0)
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -18578,7 +17228,7 @@
 opcode_t *
 Parrot_if_n_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 329 "src/ops/core.ops"
+#line 304 "src/ops/core.ops"
     if (!FLOAT_IS_ZERO(NREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -18587,7 +17237,7 @@
 opcode_t *
 Parrot_if_s_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 334 "src/ops/core.ops"
+#line 309 "src/ops/core.ops"
     if (Parrot_str_boolean(interp, SREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -18596,7 +17246,7 @@
 opcode_t *
 Parrot_if_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 339 "src/ops/core.ops"
+#line 314 "src/ops/core.ops"
     if (VTABLE_get_bool(interp, PREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -18605,7 +17255,7 @@
 opcode_t *
 Parrot_unless_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 358 "src/ops/core.ops"
+#line 333 "src/ops/core.ops"
     if (IREG(1) == 0)
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -18614,7 +17264,7 @@
 opcode_t *
 Parrot_unless_n_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 363 "src/ops/core.ops"
+#line 338 "src/ops/core.ops"
     if (FLOAT_IS_ZERO(NREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -18623,7 +17273,7 @@
 opcode_t *
 Parrot_unless_s_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 368 "src/ops/core.ops"
+#line 343 "src/ops/core.ops"
     if (!Parrot_str_boolean(interp, SREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -18632,7 +17282,7 @@
 opcode_t *
 Parrot_unless_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 373 "src/ops/core.ops"
+#line 348 "src/ops/core.ops"
     if (!VTABLE_get_bool(interp, PREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -18641,7 +17291,7 @@
 opcode_t *
 Parrot_invokecc_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 428 "src/ops/core.ops"
+#line 403 "src/ops/core.ops"
     PMC      * const p     = PREG(1);
     opcode_t *dest         = cur_opcode + 2;
 
@@ -18655,7 +17305,7 @@
 opcode_t *
 Parrot_invoke_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 439 "src/ops/core.ops"
+#line 414 "src/ops/core.ops"
     opcode_t   *dest       = cur_opcode + 3;
     PMC * const p          = PREG(1);
 
@@ -18669,7 +17319,7 @@
 opcode_t *
 Parrot_yield (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 450 "src/ops/core.ops"
+#line 425 "src/ops/core.ops"
     opcode_t   *dest = cur_opcode + 1;
     PMC * const p    = Parrot_pcc_get_sub(interp, CURRENT_CONTEXT(interp));
 
@@ -18682,7 +17332,7 @@
 opcode_t *
 Parrot_tailcall_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 460 "src/ops/core.ops"
+#line 435 "src/ops/core.ops"
     PMC * const p               = PREG(1);
     opcode_t   *dest            = cur_opcode + 2;
     PMC * const ctx             = CURRENT_CONTEXT(interp);
@@ -18693,14 +17343,6 @@
 
     Parrot_pcc_merge_signature_for_tailcall(interp, parent_call_sig, this_call_sig);
 
-    /* Detach continuation from current CallContext to avoid marking dead object. */
-    /* RetContinuation will kill itself after invoke */
-    if (interp->current_cont->vtable->base_type == enum_class_RetContinuation
-        && Parrot_pcc_do_run_ops(interp, p)) {
-        PMC_cont(interp->current_cont)->from_ctx = parent_ctx;
-        Parrot_pcc_set_continuation(interp, ctx, PMCNULL);
-    }
-
     SUB_FLAG_TAILCALL_SET(interp->current_cont);
     dest = VTABLE_invoke(interp, p, dest);
     return (opcode_t *)dest;
@@ -18709,7 +17351,7 @@
 opcode_t *
 Parrot_returncc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 484 "src/ops/core.ops"
+#line 451 "src/ops/core.ops"
     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;
@@ -18718,7 +17360,7 @@
 opcode_t *
 Parrot_capture_lex_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 490 "src/ops/core.ops"
+#line 457 "src/ops/core.ops"
     Parrot_capture_lex(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -18726,7 +17368,7 @@
 opcode_t *
 Parrot_newclosure_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 494 "src/ops/core.ops"
+#line 461 "src/ops/core.ops"
     PREG(1) = parrot_new_closure(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18734,7 +17376,7 @@
 opcode_t *
 Parrot_set_args_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 532 "src/ops/core.ops"
+#line 499 "src/ops/core.ops"
     opcode_t * const raw_args = CUR_OPCODE;
     PMC * const signature = CONST(1)->u.key;
     PMC * call_sig;
@@ -18751,7 +17393,7 @@
 opcode_t *
 Parrot_get_results_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 546 "src/ops/core.ops"
+#line 513 "src/ops/core.ops"
     opcode_t * const raw_returns = CUR_OPCODE;
     PMC * const signature = CONST(1)->u.key;
     PMC * call_sig;
@@ -18769,7 +17411,7 @@
 opcode_t *
 Parrot_get_params_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 561 "src/ops/core.ops"
+#line 528 "src/ops/core.ops"
     opcode_t * const raw_params = CUR_OPCODE;
     PMC *caller_ctx, *ctx;
     PMC *ccont, *call_object;
@@ -18797,7 +17439,7 @@
 opcode_t *
 Parrot_set_returns_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 586 "src/ops/core.ops"
+#line 553 "src/ops/core.ops"
     opcode_t * const raw_returns = CUR_OPCODE;
     PMC      *signature          = CONST(1)->u.key;
     PMC      *ctx                = CURRENT_CONTEXT(interp);
@@ -18815,7 +17457,7 @@
 opcode_t *
 Parrot_result_info_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 610 "src/ops/core.ops"
+#line 577 "src/ops/core.ops"
     PMC *caller_ctx  = Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
     PMC *call_object = Parrot_pcc_get_signature(interp, caller_ctx);
     PMC *sig = VTABLE_get_attr_str(interp, call_object,
@@ -18823,7 +17465,7 @@
 
     /* If no elements, hand back empty array; otherwise PMC. */
     if (!sig)
-        PREG(1) = pmc_new(interp, enum_class_FixedIntegerArray);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
     else
         PREG(1) = sig;
 
@@ -18832,7 +17474,7 @@
 opcode_t *
 Parrot_set_addr_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 651 "src/ops/core.ops"
+#line 618 "src/ops/core.ops"
     IREG(1) = PTR2INTVAL(CUR_OPCODE + cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18840,7 +17482,7 @@
 opcode_t *
 Parrot_set_addr_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 655 "src/ops/core.ops"
+#line 622 "src/ops/core.ops"
     VTABLE_set_pointer(interp, PREG(1), (CUR_OPCODE + cur_opcode[2]));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18848,7 +17490,7 @@
 opcode_t *
 Parrot_set_addr_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 659 "src/ops/core.ops"
+#line 626 "src/ops/core.ops"
     VTABLE_set_pointer(interp, PREG(1), (void*)IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18856,7 +17498,7 @@
 opcode_t *
 Parrot_get_addr_i_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 663 "src/ops/core.ops"
+#line 630 "src/ops/core.ops"
     void *ptr = VTABLE_get_pointer(interp, PREG(2));
     IREG(1)        = (INTVAL)ptr;
 
@@ -18865,7 +17507,7 @@
 opcode_t *
 Parrot_schedule_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 685 "src/ops/core.ops"
+#line 652 "src/ops/core.ops"
     Parrot_cx_schedule_task(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -18873,7 +17515,7 @@
 opcode_t *
 Parrot_addhandler_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 696 "src/ops/core.ops"
+#line 663 "src/ops/core.ops"
     Parrot_cx_add_handler(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -18881,8 +17523,8 @@
 opcode_t *
 Parrot_push_eh_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 773 "src/ops/core.ops"
-    PMC * const eh = pmc_new(interp, enum_class_ExceptionHandler);
+#line 740 "src/ops/core.ops"
+    PMC * const eh = Parrot_pmc_new(interp, enum_class_ExceptionHandler);
     VTABLE_set_pointer(interp, eh, CUR_OPCODE + cur_opcode[1]);
     Parrot_cx_add_handler_local(interp, eh);
 
@@ -18891,7 +17533,7 @@
 opcode_t *
 Parrot_push_eh_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 779 "src/ops/core.ops"
+#line 746 "src/ops/core.ops"
     Parrot_cx_add_handler_local(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -18899,7 +17541,7 @@
 opcode_t *
 Parrot_pop_eh (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 783 "src/ops/core.ops"
+#line 750 "src/ops/core.ops"
     Parrot_cx_delete_handler_local(interp,
             Parrot_str_new(interp, "exception", 9));
 
@@ -18908,7 +17550,7 @@
 opcode_t *
 Parrot_throw_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 788 "src/ops/core.ops"
+#line 755 "src/ops/core.ops"
     PMC * except = PREG(1);
     opcode_t *dest;
     opcode_t *const ret    = cur_opcode + 2;
@@ -18926,7 +17568,7 @@
 opcode_t *
 Parrot_throw_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 803 "src/ops/core.ops"
+#line 770 "src/ops/core.ops"
     opcode_t * dest;
     PMC * except = PREG(1);
     if (PMC_IS_NULL(except) || except->vtable->base_type != enum_class_Exception)
@@ -18941,7 +17583,7 @@
 opcode_t *
 Parrot_rethrow_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 815 "src/ops/core.ops"
+#line 782 "src/ops/core.ops"
     opcode_t * dest;
     if (PMC_IS_NULL(PREG(1)) || PREG(1)->vtable->base_type != enum_class_Exception) {
         opcode_t * const ret = cur_opcode + 2;
@@ -18958,7 +17600,7 @@
 opcode_t *
 Parrot_count_eh_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 829 "src/ops/core.ops"
+#line 796 "src/ops/core.ops"
     IREG(1) = Parrot_cx_count_handlers_local(interp,
             Parrot_str_new(interp, "exception", 9));
 
@@ -18967,7 +17609,7 @@
 opcode_t *
 Parrot_die_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 834 "src/ops/core.ops"
+#line 801 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC             *resume    = new_ret_continuation_pmc(interp, ret);
@@ -18983,7 +17625,7 @@
 opcode_t *
 Parrot_die_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 834 "src/ops/core.ops"
+#line 801 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC             *resume    = new_ret_continuation_pmc(interp, ret);
@@ -18999,7 +17641,7 @@
 opcode_t *
 Parrot_die_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 847 "src/ops/core.ops"
+#line 814 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC             *resume    = new_ret_continuation_pmc(interp, ret);
@@ -19017,7 +17659,7 @@
 opcode_t *
 Parrot_die_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 847 "src/ops/core.ops"
+#line 814 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC             *resume    = new_ret_continuation_pmc(interp, ret);
@@ -19035,7 +17677,7 @@
 opcode_t *
 Parrot_die_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 862 "src/ops/core.ops"
+#line 829 "src/ops/core.ops"
     if (IREG(1) == EXCEPT_doomed)
         _exit(IREG(2));
     else {
@@ -19051,7 +17693,7 @@
 opcode_t *
 Parrot_die_ic_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 862 "src/ops/core.ops"
+#line 829 "src/ops/core.ops"
     if (cur_opcode[1] == EXCEPT_doomed)
         _exit(IREG(2));
     else {
@@ -19067,7 +17709,7 @@
 opcode_t *
 Parrot_die_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 862 "src/ops/core.ops"
+#line 829 "src/ops/core.ops"
     if (IREG(1) == EXCEPT_doomed)
         _exit(cur_opcode[2]);
     else {
@@ -19083,7 +17725,7 @@
 opcode_t *
 Parrot_die_ic_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 862 "src/ops/core.ops"
+#line 829 "src/ops/core.ops"
     if (cur_opcode[1] == EXCEPT_doomed)
         _exit(cur_opcode[2]);
     else {
@@ -19099,7 +17741,7 @@
 opcode_t *
 Parrot_exit_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 875 "src/ops/core.ops"
+#line 842 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC             *resume    = new_ret_continuation_pmc(interp, ret);
@@ -19116,7 +17758,7 @@
 opcode_t *
 Parrot_exit_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 875 "src/ops/core.ops"
+#line 842 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC             *resume    = new_ret_continuation_pmc(interp, ret);
@@ -19133,8 +17775,8 @@
 opcode_t *
 Parrot_pushmark_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 889 "src/ops/core.ops"
-    PMC * const newint = pmc_new(interp, enum_class_Integer);
+#line 856 "src/ops/core.ops"
+    PMC * const newint = Parrot_pmc_new(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, newint, IREG(1));
     VTABLE_push_pmc(interp, interp->dynamic_env, newint);
 
@@ -19143,8 +17785,8 @@
 opcode_t *
 Parrot_pushmark_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 889 "src/ops/core.ops"
-    PMC * const newint = pmc_new(interp, enum_class_Integer);
+#line 856 "src/ops/core.ops"
+    PMC * const newint = Parrot_pmc_new(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, newint, cur_opcode[1]);
     VTABLE_push_pmc(interp, interp->dynamic_env, newint);
 
@@ -19153,7 +17795,7 @@
 opcode_t *
 Parrot_popmark_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 895 "src/ops/core.ops"
+#line 862 "src/ops/core.ops"
     opcode_t * dest;
     opcode_t * const ret = cur_opcode + 2;
     int found = 0;
@@ -19177,7 +17819,7 @@
 opcode_t *
 Parrot_popmark_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 895 "src/ops/core.ops"
+#line 862 "src/ops/core.ops"
     opcode_t * dest;
     opcode_t * const ret = cur_opcode + 2;
     int found = 0;
@@ -19201,7 +17843,7 @@
 opcode_t *
 Parrot_pushaction_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 915 "src/ops/core.ops"
+#line 882 "src/ops/core.ops"
     VTABLE_push_pmc(interp, interp->dynamic_env, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -19209,7 +17851,7 @@
 opcode_t *
 Parrot_debug_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 942 "src/ops/core.ops"
+#line 909 "src/ops/core.ops"
     if (IREG(1) != 0) { Interp_debug_SET(interp,   IREG(1)); }
     else         { Interp_debug_CLEAR(interp, PARROT_ALL_DEBUG_FLAGS); }
     interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -19218,7 +17860,7 @@
 opcode_t *
 Parrot_debug_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 942 "src/ops/core.ops"
+#line 909 "src/ops/core.ops"
     if (cur_opcode[1] != 0) { Interp_debug_SET(interp,   cur_opcode[1]); }
     else         { Interp_debug_CLEAR(interp, PARROT_ALL_DEBUG_FLAGS); }
     interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -19227,7 +17869,7 @@
 opcode_t *
 Parrot_bounds_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 957 "src/ops/core.ops"
+#line 924 "src/ops/core.ops"
     if (IREG(1) != 0) { Parrot_set_flag(interp,   PARROT_BOUNDS_FLAG); }
     else         { Interp_flags_CLEAR(interp, PARROT_BOUNDS_FLAG); }
     interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -19236,7 +17878,7 @@
 opcode_t *
 Parrot_bounds_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 957 "src/ops/core.ops"
+#line 924 "src/ops/core.ops"
     if (cur_opcode[1] != 0) { Parrot_set_flag(interp,   PARROT_BOUNDS_FLAG); }
     else         { Interp_flags_CLEAR(interp, PARROT_BOUNDS_FLAG); }
     interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -19245,7 +17887,7 @@
 opcode_t *
 Parrot_profile_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 972 "src/ops/core.ops"
+#line 939 "src/ops/core.ops"
     if (IREG(1) != 0) { Parrot_set_flag(interp,   PARROT_PROFILE_FLAG); }
     else         { Interp_flags_CLEAR(interp, PARROT_PROFILE_FLAG); }
     interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -19254,7 +17896,7 @@
 opcode_t *
 Parrot_profile_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 972 "src/ops/core.ops"
+#line 939 "src/ops/core.ops"
     if (cur_opcode[1] != 0) { Parrot_set_flag(interp,   PARROT_PROFILE_FLAG); }
     else         { Interp_flags_CLEAR(interp, PARROT_PROFILE_FLAG); }
     interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -19263,7 +17905,7 @@
 opcode_t *
 Parrot_trace_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 987 "src/ops/core.ops"
+#line 954 "src/ops/core.ops"
     if (IREG(1) != 0) { Parrot_set_trace(interp,   IREG(1)); }
     else         { Parrot_clear_trace(interp, PARROT_ALL_TRACE_FLAGS); }
     interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -19272,7 +17914,7 @@
 opcode_t *
 Parrot_trace_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 987 "src/ops/core.ops"
+#line 954 "src/ops/core.ops"
     if (cur_opcode[1] != 0) { Parrot_set_trace(interp,   cur_opcode[1]); }
     else         { Parrot_clear_trace(interp, PARROT_ALL_TRACE_FLAGS); }
     interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -19281,7 +17923,7 @@
 opcode_t *
 Parrot_gc_debug_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1001 "src/ops/core.ops"
+#line 968 "src/ops/core.ops"
     if (IREG(1) != 0) { Interp_flags_SET(interp,   PARROT_GC_DEBUG_FLAG); }
     else         { Interp_flags_CLEAR(interp, PARROT_GC_DEBUG_FLAG); }
 
@@ -19290,7 +17932,7 @@
 opcode_t *
 Parrot_gc_debug_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1001 "src/ops/core.ops"
+#line 968 "src/ops/core.ops"
     if (cur_opcode[1] != 0) { Interp_flags_SET(interp,   PARROT_GC_DEBUG_FLAG); }
     else         { Interp_flags_CLEAR(interp, PARROT_GC_DEBUG_FLAG); }
 
@@ -19299,7 +17941,7 @@
 opcode_t *
 Parrot_interpinfo_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1035 "src/ops/core.ops"
+#line 1002 "src/ops/core.ops"
     IREG(1) = interpinfo(interp, IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -19307,7 +17949,7 @@
 opcode_t *
 Parrot_interpinfo_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1035 "src/ops/core.ops"
+#line 1002 "src/ops/core.ops"
     IREG(1) = interpinfo(interp, cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -19315,7 +17957,7 @@
 opcode_t *
 Parrot_interpinfo_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1039 "src/ops/core.ops"
+#line 1006 "src/ops/core.ops"
     PREG(1) = interpinfo_p(interp, IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -19323,7 +17965,7 @@
 opcode_t *
 Parrot_interpinfo_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1039 "src/ops/core.ops"
+#line 1006 "src/ops/core.ops"
     PREG(1) = interpinfo_p(interp, cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -19331,23 +17973,25 @@
 opcode_t *
 Parrot_interpinfo_s_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1043 "src/ops/core.ops"
-    SREG(1) = interpinfo_s(interp, IREG(2));
+#line 1010 "src/ops/core.ops"
+    STRING * s = interpinfo_s(interp, IREG(2));
+    SREG(1) = s;
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_interpinfo_s_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1043 "src/ops/core.ops"
-    SREG(1) = interpinfo_s(interp, cur_opcode[2]);
+#line 1010 "src/ops/core.ops"
+    STRING * s = interpinfo_s(interp, cur_opcode[2]);
+    SREG(1) = s;
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_warningson_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1062 "src/ops/core.ops"
+#line 1030 "src/ops/core.ops"
     PARROT_WARNINGS_on(interp, IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -19355,7 +17999,7 @@
 opcode_t *
 Parrot_warningson_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1062 "src/ops/core.ops"
+#line 1030 "src/ops/core.ops"
     PARROT_WARNINGS_on(interp, cur_opcode[1]);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -19363,7 +18007,7 @@
 opcode_t *
 Parrot_warningsoff_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1074 "src/ops/core.ops"
+#line 1042 "src/ops/core.ops"
     PARROT_WARNINGS_off(interp, IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -19371,7 +18015,7 @@
 opcode_t *
 Parrot_warningsoff_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1074 "src/ops/core.ops"
+#line 1042 "src/ops/core.ops"
     PARROT_WARNINGS_off(interp, cur_opcode[1]);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -19379,7 +18023,7 @@
 opcode_t *
 Parrot_errorson_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1109 "src/ops/core.ops"
+#line 1077 "src/ops/core.ops"
     PARROT_ERRORS_on(interp, IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -19387,7 +18031,7 @@
 opcode_t *
 Parrot_errorson_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1109 "src/ops/core.ops"
+#line 1077 "src/ops/core.ops"
     PARROT_ERRORS_on(interp, cur_opcode[1]);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -19395,7 +18039,7 @@
 opcode_t *
 Parrot_errorsoff_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1121 "src/ops/core.ops"
+#line 1089 "src/ops/core.ops"
     PARROT_ERRORS_off(interp, IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -19403,7 +18047,7 @@
 opcode_t *
 Parrot_errorsoff_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1121 "src/ops/core.ops"
+#line 1089 "src/ops/core.ops"
     PARROT_ERRORS_off(interp, cur_opcode[1]);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -19411,7 +18055,7 @@
 opcode_t *
 Parrot_runinterp_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1137 "src/ops/core.ops"
+#line 1105 "src/ops/core.ops"
     Interp * const new_interp = (Interp *)VTABLE_get_pointer(interp, PREG(1));
     Interp_flags_SET(new_interp, PARROT_EXTERN_CODE_FLAG);
     Parrot_switch_to_cs(new_interp, interp->code, 1);
@@ -19422,7 +18066,7 @@
 opcode_t *
 Parrot_runinterp_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1137 "src/ops/core.ops"
+#line 1105 "src/ops/core.ops"
     Interp * const new_interp = (Interp *)VTABLE_get_pointer(interp, PREG(1));
     Interp_flags_SET(new_interp, PARROT_EXTERN_CODE_FLAG);
     Parrot_switch_to_cs(new_interp, interp->code, 1);
@@ -19433,7 +18077,7 @@
 opcode_t *
 Parrot_getinterp_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1144 "src/ops/core.ops"
+#line 1112 "src/ops/core.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
            IGLOBALS_INTERPRETER);
 
@@ -19442,7 +18086,7 @@
 opcode_t *
 Parrot_sweep_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1188 "src/ops/core.ops"
+#line 1156 "src/ops/core.ops"
     if (cur_opcode[1])
         Parrot_gc_mark_and_sweep(interp, 0);
     else
@@ -19454,7 +18098,7 @@
 opcode_t *
 Parrot_collect (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1202 "src/ops/core.ops"
+#line 1170 "src/ops/core.ops"
     Parrot_gc_compact_memory_pool(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -19462,7 +18106,7 @@
 opcode_t *
 Parrot_sweepoff (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1212 "src/ops/core.ops"
+#line 1180 "src/ops/core.ops"
     Parrot_block_GC_mark(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -19470,7 +18114,7 @@
 opcode_t *
 Parrot_sweepon (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1222 "src/ops/core.ops"
+#line 1190 "src/ops/core.ops"
     Parrot_unblock_GC_mark(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -19478,7 +18122,7 @@
 opcode_t *
 Parrot_collectoff (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1232 "src/ops/core.ops"
+#line 1200 "src/ops/core.ops"
     Parrot_block_GC_sweep(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -19486,7 +18130,7 @@
 opcode_t *
 Parrot_collecton (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1242 "src/ops/core.ops"
+#line 1210 "src/ops/core.ops"
     Parrot_unblock_GC_sweep(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -19494,7 +18138,7 @@
 opcode_t *
 Parrot_needs_destroy_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1253 "src/ops/core.ops"
+#line 1221 "src/ops/core.ops"
     Parrot_gc_pmc_needs_early_collection(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -19502,7 +18146,7 @@
 opcode_t *
 Parrot_loadlib_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1308 "src/ops/core.ops"
+#line 1276 "src/ops/core.ops"
     PREG(1) = Parrot_load_lib(interp, SREG(2), NULL);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -19510,7 +18154,7 @@
 opcode_t *
 Parrot_loadlib_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1308 "src/ops/core.ops"
+#line 1276 "src/ops/core.ops"
     PREG(1) = Parrot_load_lib(interp, CONST(2)->u.string, NULL);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -19518,7 +18162,7 @@
 opcode_t *
 Parrot_dlfunc_p_p_s_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1312 "src/ops/core.ops"
+#line 1280 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (SREG(3)));
     void         *dl_handle = NULL;
     void         *ptr       = NULL;
@@ -19540,10 +18184,10 @@
         const char * err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
                 "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
-        PREG(1) = pmc_new(interp, enum_class_Undef);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
-        PREG(1) = pmc_new(interp, enum_class_NCI);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_NCI);
         VTABLE_set_pointer_keyed_str(interp, PREG(1), SREG(4), F2DPTR(p));
         PObj_get_FLAGS(PREG(1)) |= PObj_private1_FLAG;
     }
@@ -19554,7 +18198,7 @@
 opcode_t *
 Parrot_dlfunc_p_p_sc_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1312 "src/ops/core.ops"
+#line 1280 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (CONST(3)->u.string));
     void         *dl_handle = NULL;
     void         *ptr       = NULL;
@@ -19576,10 +18220,10 @@
         const char * err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
                 "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
-        PREG(1) = pmc_new(interp, enum_class_Undef);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
-        PREG(1) = pmc_new(interp, enum_class_NCI);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_NCI);
         VTABLE_set_pointer_keyed_str(interp, PREG(1), SREG(4), F2DPTR(p));
         PObj_get_FLAGS(PREG(1)) |= PObj_private1_FLAG;
     }
@@ -19590,7 +18234,7 @@
 opcode_t *
 Parrot_dlfunc_p_p_s_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1312 "src/ops/core.ops"
+#line 1280 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (SREG(3)));
     void         *dl_handle = NULL;
     void         *ptr       = NULL;
@@ -19612,10 +18256,10 @@
         const char * err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
                 "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
-        PREG(1) = pmc_new(interp, enum_class_Undef);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
-        PREG(1) = pmc_new(interp, enum_class_NCI);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_NCI);
         VTABLE_set_pointer_keyed_str(interp, PREG(1), CONST(4)->u.string, F2DPTR(p));
         PObj_get_FLAGS(PREG(1)) |= PObj_private1_FLAG;
     }
@@ -19626,7 +18270,7 @@
 opcode_t *
 Parrot_dlfunc_p_p_sc_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1312 "src/ops/core.ops"
+#line 1280 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (CONST(3)->u.string));
     void         *dl_handle = NULL;
     void         *ptr       = NULL;
@@ -19648,10 +18292,10 @@
         const char * err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
                 "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
-        PREG(1) = pmc_new(interp, enum_class_Undef);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
-        PREG(1) = pmc_new(interp, enum_class_NCI);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_NCI);
         VTABLE_set_pointer_keyed_str(interp, PREG(1), CONST(4)->u.string, F2DPTR(p));
         PObj_get_FLAGS(PREG(1)) |= PObj_private1_FLAG;
     }
@@ -19662,7 +18306,7 @@
 opcode_t *
 Parrot_dlvar_p_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1344 "src/ops/core.ops"
+#line 1312 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (SREG(3)));
     void *        p         = NULL;
     void         *dl_handle = NULL;
@@ -19675,12 +18319,12 @@
         const char * const err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
                 "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
-        PREG(1) = pmc_new(interp, enum_class_Undef);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
         /* At this point we have the symbol's address. We just need to build
            a PMC with it so we can get and set the value */
-        PREG(1) = pmc_new(interp, enum_class_UnManagedStruct);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
         VTABLE_set_pointer(interp, PREG(1), p);
     }
     Parrot_str_free_cstring(name);
@@ -19690,7 +18334,7 @@
 opcode_t *
 Parrot_dlvar_p_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1344 "src/ops/core.ops"
+#line 1312 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (CONST(3)->u.string));
     void *        p         = NULL;
     void         *dl_handle = NULL;
@@ -19703,12 +18347,12 @@
         const char * const err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
                 "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
-        PREG(1) = pmc_new(interp, enum_class_Undef);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
         /* At this point we have the symbol's address. We just need to build
            a PMC with it so we can get and set the value */
-        PREG(1) = pmc_new(interp, enum_class_UnManagedStruct);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
         VTABLE_set_pointer(interp, PREG(1), p);
     }
     Parrot_str_free_cstring(name);
@@ -19718,7 +18362,7 @@
 opcode_t *
 Parrot_compreg_s_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1368 "src/ops/core.ops"
+#line 1336 "src/ops/core.ops"
     PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
             interp->iglobals, IGLOBALS_COMPREG_HASH);
     VTABLE_set_pmc_keyed_str(interp, compreg_hash, SREG(1), PREG(2));
@@ -19728,7 +18372,7 @@
 opcode_t *
 Parrot_compreg_sc_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1368 "src/ops/core.ops"
+#line 1336 "src/ops/core.ops"
     PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
             interp->iglobals, IGLOBALS_COMPREG_HASH);
     VTABLE_set_pmc_keyed_str(interp, compreg_hash, CONST(1)->u.string, PREG(2));
@@ -19738,7 +18382,7 @@
 opcode_t *
 Parrot_compreg_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1374 "src/ops/core.ops"
+#line 1342 "src/ops/core.ops"
     PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
             interp->iglobals, IGLOBALS_COMPREG_HASH);
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, compreg_hash, SREG(2));
@@ -19748,7 +18392,7 @@
 opcode_t *
 Parrot_compreg_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1374 "src/ops/core.ops"
+#line 1342 "src/ops/core.ops"
     PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
             interp->iglobals, IGLOBALS_COMPREG_HASH);
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, compreg_hash, CONST(2)->u.string);
@@ -19758,7 +18402,7 @@
 opcode_t *
 Parrot_new_callback_p_p_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1380 "src/ops/core.ops"
+#line 1348 "src/ops/core.ops"
     PREG(1) = Parrot_make_cb(interp, PREG(2), PREG(3), SREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -19766,7 +18410,7 @@
 opcode_t *
 Parrot_new_callback_p_p_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1380 "src/ops/core.ops"
+#line 1348 "src/ops/core.ops"
     PREG(1) = Parrot_make_cb(interp, PREG(2), PREG(3), CONST(4)->u.string);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -19774,14 +18418,14 @@
 opcode_t *
 Parrot_annotations_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1407 "src/ops/core.ops"
+#line 1375 "src/ops/core.ops"
     if (interp->code->annotations) {
         opcode_t const cur_pos = (cur_opcode + 2) - interp->code->base.data;
         PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
                 cur_pos, NULL);
     }
     else {
-        PREG(1) = pmc_new(interp, enum_class_Hash);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_Hash);
     }
 
 return (opcode_t *)cur_opcode + 2;}
@@ -19789,7 +18433,7 @@
 opcode_t *
 Parrot_annotations_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1425 "src/ops/core.ops"
+#line 1393 "src/ops/core.ops"
     if (interp->code->annotations) {
         opcode_t const cur_pos = (cur_opcode + 3) - interp->code->base.data;
         PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
@@ -19804,7 +18448,7 @@
 opcode_t *
 Parrot_annotations_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1425 "src/ops/core.ops"
+#line 1393 "src/ops/core.ops"
     if (interp->code->annotations) {
         opcode_t const cur_pos = (cur_opcode + 3) - interp->code->base.data;
         PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
@@ -19836,7 +18480,9 @@
 Parrot_band_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 66 "src/ops/bit.ops"
-    VTABLE_i_bitwise_and_int(interp, PREG(1), IREG(2));
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    const INTVAL b = a & IREG(2);
+    VTABLE_set_integer_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -19844,22 +18490,26 @@
 Parrot_band_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 66 "src/ops/bit.ops"
-    VTABLE_i_bitwise_and_int(interp, PREG(1), cur_opcode[2]);
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    const INTVAL b = a & cur_opcode[2];
+    VTABLE_set_integer_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_band_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 70 "src/ops/bit.ops"
-    VTABLE_i_bitwise_and(interp, PREG(1), PREG(2));
+#line 72 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    const INTVAL b = VTABLE_get_integer(interp, PREG(2));
+    VTABLE_set_integer_native(interp, PREG(1), a & b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_band_i_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 74 "src/ops/bit.ops"
+#line 78 "src/ops/bit.ops"
     IREG(1) = IREG(2) & IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19867,7 +18517,7 @@
 opcode_t *
 Parrot_band_i_ic_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 74 "src/ops/bit.ops"
+#line 78 "src/ops/bit.ops"
     IREG(1) = cur_opcode[2] & IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19875,7 +18525,7 @@
 opcode_t *
 Parrot_band_i_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 74 "src/ops/bit.ops"
+#line 78 "src/ops/bit.ops"
     IREG(1) = IREG(2) & cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19883,31 +18533,35 @@
 opcode_t *
 Parrot_band_p_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 78 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_and_int(interp, PREG(2), IREG(3), PREG(1));
+#line 82 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    VTABLE_set_integer_native(interp, PREG(1), a & IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_band_p_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 78 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_and_int(interp, PREG(2), cur_opcode[3], PREG(1));
+#line 82 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    VTABLE_set_integer_native(interp, PREG(1), a & cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_band_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 82 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_and(interp, PREG(2), PREG(3), PREG(1));
+#line 87 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    const INTVAL b = VTABLE_get_integer(interp, PREG(3));
+    VTABLE_set_integer_native(interp, PREG(1), a & b);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bands_s_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 106 "src/ops/bit.ops"
+#line 113 "src/ops/bit.ops"
     Parrot_str_bitwise_and(interp, SREG(1), SREG(2), &SREG(1));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -19915,7 +18569,7 @@
 opcode_t *
 Parrot_bands_s_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 106 "src/ops/bit.ops"
+#line 113 "src/ops/bit.ops"
     Parrot_str_bitwise_and(interp, SREG(1), CONST(2)->u.string, &SREG(1));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -19923,31 +18577,38 @@
 opcode_t *
 Parrot_bands_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 110 "src/ops/bit.ops"
-    VTABLE_i_bitwise_ands_str(interp, PREG(1), SREG(2));
+#line 117 "src/ops/bit.ops"
+    STRING * const a = VTABLE_get_string(interp, PREG(1));
+    STRING * const b = Parrot_str_bitwise_and(interp, a, SREG(2), NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bands_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 110 "src/ops/bit.ops"
-    VTABLE_i_bitwise_ands_str(interp, PREG(1), CONST(2)->u.string);
+#line 117 "src/ops/bit.ops"
+    STRING * const a = VTABLE_get_string(interp, PREG(1));
+    STRING * const b = Parrot_str_bitwise_and(interp, a, CONST(2)->u.string, NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bands_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 114 "src/ops/bit.ops"
-    VTABLE_i_bitwise_ands(interp, PREG(1), PREG(2));
+#line 123 "src/ops/bit.ops"
+    STRING * a = VTABLE_get_string(interp, PREG(1));
+    STRING * b = VTABLE_get_string(interp, PREG(2));
+    a = Parrot_str_bitwise_and(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, PREG(1), a);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bands_s_s_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 118 "src/ops/bit.ops"
+#line 130 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_and(interp, SREG(2), SREG(3), NULL);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19955,7 +18616,7 @@
 opcode_t *
 Parrot_bands_s_sc_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 118 "src/ops/bit.ops"
+#line 130 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_and(interp, CONST(2)->u.string, SREG(3), NULL);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19963,7 +18624,7 @@
 opcode_t *
 Parrot_bands_s_s_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 118 "src/ops/bit.ops"
+#line 130 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_and(interp, SREG(2), CONST(3)->u.string, NULL);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19971,31 +18632,38 @@
 opcode_t *
 Parrot_bands_p_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 122 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_ands_str(interp, PREG(2), SREG(3), PREG(1));
+#line 134 "src/ops/bit.ops"
+    STRING * const a = VTABLE_get_string(interp, PREG(2));
+    STRING * const b = Parrot_str_bitwise_and(interp, a, SREG(3), NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bands_p_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 122 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_ands_str(interp, PREG(2), CONST(3)->u.string, PREG(1));
+#line 134 "src/ops/bit.ops"
+    STRING * const a = VTABLE_get_string(interp, PREG(2));
+    STRING * const b = Parrot_str_bitwise_and(interp, a, CONST(3)->u.string, NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bands_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 126 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_ands(interp, PREG(2), PREG(3), PREG(1));
+#line 140 "src/ops/bit.ops"
+    STRING * const a = VTABLE_get_string(interp, PREG(2));
+    STRING * const b = VTABLE_get_string(interp, PREG(3));
+    STRING * const c = Parrot_str_bitwise_and(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bnot_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 144 "src/ops/bit.ops"
+#line 161 "src/ops/bit.ops"
     IREG(1) = ~ IREG(1);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -20003,7 +18671,7 @@
 opcode_t *
 Parrot_bnot_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 148 "src/ops/bit.ops"
+#line 165 "src/ops/bit.ops"
     IREG(1) = ~ IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20011,23 +18679,27 @@
 opcode_t *
 Parrot_bnot_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 152 "src/ops/bit.ops"
-    VTABLE_i_bitwise_not(interp, PREG(1));
+#line 169 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    VTABLE_set_integer_native(interp, PREG(1), ~a);
 
 return (opcode_t *)cur_opcode + 2;}
 
 opcode_t *
 Parrot_bnot_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 156 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_not(interp, PREG(2), PREG(1));
+#line 174 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    PMC * const b = Parrot_pmc_new(interp, VTABLE_type(interp, PREG(2)));
+    VTABLE_set_integer_native(interp, b, ~a);
+    PREG(1) = b;
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bnots_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 170 "src/ops/bit.ops"
+#line 191 "src/ops/bit.ops"
     Parrot_str_bitwise_not(interp, SREG(1), &SREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -20035,7 +18707,7 @@
 opcode_t *
 Parrot_bnots_s_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 174 "src/ops/bit.ops"
+#line 195 "src/ops/bit.ops"
     Parrot_str_bitwise_not(interp, SREG(2), &SREG(1));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20043,7 +18715,7 @@
 opcode_t *
 Parrot_bnots_s_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 174 "src/ops/bit.ops"
+#line 195 "src/ops/bit.ops"
     Parrot_str_bitwise_not(interp, CONST(2)->u.string, &SREG(1));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20051,23 +18723,27 @@
 opcode_t *
 Parrot_bnots_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 178 "src/ops/bit.ops"
-    VTABLE_i_bitwise_nots(interp, PREG(1));
+#line 199 "src/ops/bit.ops"
+    STRING * a = VTABLE_get_string(interp, PREG(1));
+    STRING * b = Parrot_str_bitwise_not(interp, a, NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 2;}
 
 opcode_t *
 Parrot_bnots_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 182 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_nots(interp, PREG(2), PREG(1));
+#line 205 "src/ops/bit.ops"
+    STRING * a = VTABLE_get_string(interp, PREG(2));
+    STRING * b = Parrot_str_bitwise_not(interp, a, NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bor_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 208 "src/ops/bit.ops"
+#line 233 "src/ops/bit.ops"
     IREG(1) |= IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20075,7 +18751,7 @@
 opcode_t *
 Parrot_bor_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 208 "src/ops/bit.ops"
+#line 233 "src/ops/bit.ops"
     IREG(1) |= cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20083,31 +18759,35 @@
 opcode_t *
 Parrot_bor_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 212 "src/ops/bit.ops"
-    VTABLE_i_bitwise_or_int(interp, PREG(1), IREG(2));
+#line 237 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    VTABLE_set_integer_native(interp, PREG(1), a | IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bor_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 212 "src/ops/bit.ops"
-    VTABLE_i_bitwise_or_int(interp, PREG(1), cur_opcode[2]);
+#line 237 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    VTABLE_set_integer_native(interp, PREG(1), a | cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bor_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 216 "src/ops/bit.ops"
-    VTABLE_i_bitwise_or(interp, PREG(1), PREG(2));
+#line 242 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    const INTVAL b = VTABLE_get_integer(interp, PREG(2));
+    VTABLE_set_integer_native(interp, PREG(1), a | b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bor_i_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 220 "src/ops/bit.ops"
+#line 248 "src/ops/bit.ops"
     IREG(1) = IREG(2) | IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20115,7 +18795,7 @@
 opcode_t *
 Parrot_bor_i_ic_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 220 "src/ops/bit.ops"
+#line 248 "src/ops/bit.ops"
     IREG(1) = cur_opcode[2] | IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20123,7 +18803,7 @@
 opcode_t *
 Parrot_bor_i_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 220 "src/ops/bit.ops"
+#line 248 "src/ops/bit.ops"
     IREG(1) = IREG(2) | cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20131,31 +18811,35 @@
 opcode_t *
 Parrot_bor_p_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 224 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_or_int(interp, PREG(2), IREG(3), PREG(1));
+#line 252 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    VTABLE_set_integer_native(interp, PREG(1), a | IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bor_p_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 224 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_or_int(interp, PREG(2), cur_opcode[3], PREG(1));
+#line 252 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    VTABLE_set_integer_native(interp, PREG(1), a | cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bor_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 228 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_or(interp, PREG(2), PREG(3), PREG(1));
+#line 257 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    const INTVAL b = VTABLE_get_integer(interp, PREG(3));
+    VTABLE_set_integer_native(interp, PREG(1), a | b);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bors_s_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 252 "src/ops/bit.ops"
+#line 283 "src/ops/bit.ops"
     Parrot_str_bitwise_or(interp, SREG(1), SREG(2), &SREG(1));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20163,7 +18847,7 @@
 opcode_t *
 Parrot_bors_s_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 252 "src/ops/bit.ops"
+#line 283 "src/ops/bit.ops"
     Parrot_str_bitwise_or(interp, SREG(1), CONST(2)->u.string, &SREG(1));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20171,31 +18855,38 @@
 opcode_t *
 Parrot_bors_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 256 "src/ops/bit.ops"
-    VTABLE_i_bitwise_ors_str(interp, PREG(1), SREG(2));
+#line 287 "src/ops/bit.ops"
+    STRING * const a = VTABLE_get_string(interp, PREG(1));
+    STRING * const b = Parrot_str_bitwise_or(interp, a, SREG(2), NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bors_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 256 "src/ops/bit.ops"
-    VTABLE_i_bitwise_ors_str(interp, PREG(1), CONST(2)->u.string);
+#line 287 "src/ops/bit.ops"
+    STRING * const a = VTABLE_get_string(interp, PREG(1));
+    STRING * const b = Parrot_str_bitwise_or(interp, a, CONST(2)->u.string, NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bors_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 260 "src/ops/bit.ops"
-    VTABLE_i_bitwise_ors(interp, PREG(1), PREG(2));
+#line 293 "src/ops/bit.ops"
+    STRING * const a = VTABLE_get_string(interp, PREG(1));
+    STRING * const b = VTABLE_get_string(interp, PREG(2));
+    STRING * const c = Parrot_str_bitwise_or(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bors_s_s_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 264 "src/ops/bit.ops"
+#line 300 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_or(interp, SREG(2), SREG(3), NULL);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20203,7 +18894,7 @@
 opcode_t *
 Parrot_bors_s_sc_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 264 "src/ops/bit.ops"
+#line 300 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_or(interp, CONST(2)->u.string, SREG(3), NULL);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20211,7 +18902,7 @@
 opcode_t *
 Parrot_bors_s_s_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 264 "src/ops/bit.ops"
+#line 300 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_or(interp, SREG(2), CONST(3)->u.string, NULL);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20219,31 +18910,38 @@
 opcode_t *
 Parrot_bors_p_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 268 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_ors_str(interp, PREG(2), SREG(3), PREG(1));
+#line 304 "src/ops/bit.ops"
+    STRING * const b = VTABLE_get_string(interp, PREG(2));
+    STRING * const c = Parrot_str_bitwise_or(interp, b, SREG(3), NULL);
+    VTABLE_set_string_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bors_p_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 268 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_ors_str(interp, PREG(2), CONST(3)->u.string, PREG(1));
+#line 304 "src/ops/bit.ops"
+    STRING * const b = VTABLE_get_string(interp, PREG(2));
+    STRING * const c = Parrot_str_bitwise_or(interp, b, CONST(3)->u.string, NULL);
+    VTABLE_set_string_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bors_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 272 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_ors(interp, PREG(2), PREG(3), PREG(1));
+#line 310 "src/ops/bit.ops"
+    STRING * const a = VTABLE_get_string(interp, PREG(2));
+    STRING * const b = VTABLE_get_string(interp, PREG(3));
+    STRING * const c = Parrot_str_bitwise_or(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_shl_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 296 "src/ops/bit.ops"
+#line 337 "src/ops/bit.ops"
     IREG(1) = bit_shift_left(IREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20251,7 +18949,7 @@
 opcode_t *
 Parrot_shl_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 296 "src/ops/bit.ops"
+#line 337 "src/ops/bit.ops"
     IREG(1) = bit_shift_left(IREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20259,31 +18957,38 @@
 opcode_t *
 Parrot_shl_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 300 "src/ops/bit.ops"
-    VTABLE_i_bitwise_shl_int(interp, PREG(1), IREG(2));
+#line 341 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    const INTVAL b = bit_shift_left(a, IREG(2));
+    VTABLE_set_integer_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_shl_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 300 "src/ops/bit.ops"
-    VTABLE_i_bitwise_shl_int(interp, PREG(1), cur_opcode[2]);
+#line 341 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    const INTVAL b = bit_shift_left(a, cur_opcode[2]);
+    VTABLE_set_integer_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_shl_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 304 "src/ops/bit.ops"
-    VTABLE_i_bitwise_shl(interp, PREG(1), PREG(2));
+#line 347 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    const INTVAL b = VTABLE_get_integer(interp, PREG(2));
+    const INTVAL c = bit_shift_left(a, b);
+    VTABLE_set_integer_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_shl_i_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 308 "src/ops/bit.ops"
+#line 354 "src/ops/bit.ops"
     IREG(1) = bit_shift_left(IREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20291,7 +18996,7 @@
 opcode_t *
 Parrot_shl_i_ic_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 308 "src/ops/bit.ops"
+#line 354 "src/ops/bit.ops"
     IREG(1) = bit_shift_left(cur_opcode[2], IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20299,7 +19004,7 @@
 opcode_t *
 Parrot_shl_i_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 308 "src/ops/bit.ops"
+#line 354 "src/ops/bit.ops"
     IREG(1) = bit_shift_left(IREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20307,31 +19012,38 @@
 opcode_t *
 Parrot_shl_p_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 312 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_shl_int(interp, PREG(2), IREG(3), PREG(1));
+#line 358 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    const INTVAL b = bit_shift_left(a, IREG(3));
+    VTABLE_set_integer_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_shl_p_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 312 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_shl_int(interp, PREG(2), cur_opcode[3], PREG(1));
+#line 358 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    const INTVAL b = bit_shift_left(a, cur_opcode[3]);
+    VTABLE_set_integer_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_shl_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 316 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_shl(interp, PREG(2), PREG(3), PREG(1));
+#line 364 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    const INTVAL b = VTABLE_get_integer(interp, PREG(3));
+    const INTVAL c = bit_shift_left(a, b);
+    VTABLE_set_integer_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_shr_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 340 "src/ops/bit.ops"
+#line 391 "src/ops/bit.ops"
     const INTVAL signed_shift = -IREG(2);
     IREG(1) = bit_shift_left(IREG(1), signed_shift);
 
@@ -20340,7 +19052,7 @@
 opcode_t *
 Parrot_shr_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 340 "src/ops/bit.ops"
+#line 391 "src/ops/bit.ops"
     const INTVAL signed_shift = -cur_opcode[2];
     IREG(1) = bit_shift_left(IREG(1), signed_shift);
 
@@ -20349,31 +19061,38 @@
 opcode_t *
 Parrot_shr_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 345 "src/ops/bit.ops"
-    VTABLE_i_bitwise_shr_int(interp, PREG(1), IREG(2));
+#line 396 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    const INTVAL b = bit_shift_left(a, -IREG(2));
+    VTABLE_set_integer_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_shr_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 345 "src/ops/bit.ops"
-    VTABLE_i_bitwise_shr_int(interp, PREG(1), cur_opcode[2]);
+#line 396 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    const INTVAL b = bit_shift_left(a, -cur_opcode[2]);
+    VTABLE_set_integer_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_shr_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 349 "src/ops/bit.ops"
-    VTABLE_i_bitwise_shr(interp, PREG(1), PREG(2));
+#line 402 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(1));
+    const INTVAL b = VTABLE_get_integer(interp, PREG(2));
+    const INTVAL c = bit_shift_left(a, -b);
+    VTABLE_set_integer_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_shr_i_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 353 "src/ops/bit.ops"
+#line 409 "src/ops/bit.ops"
     const INTVAL signed_shift = -IREG(3);
     IREG(1) = bit_shift_left(IREG(2), signed_shift);
 
@@ -20382,7 +19101,7 @@
 opcode_t *
 Parrot_shr_i_ic_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 353 "src/ops/bit.ops"
+#line 409 "src/ops/bit.ops"
     const INTVAL signed_shift = -IREG(3);
     IREG(1) = bit_shift_left(cur_opcode[2], signed_shift);
 
@@ -20391,7 +19110,7 @@
 opcode_t *
 Parrot_shr_i_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 353 "src/ops/bit.ops"
+#line 409 "src/ops/bit.ops"
     const INTVAL signed_shift = -cur_opcode[3];
     IREG(1) = bit_shift_left(IREG(2), signed_shift);
 
@@ -20400,79 +19119,89 @@
 opcode_t *
 Parrot_shr_p_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 358 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_shr_int(interp, PREG(2), IREG(3), PREG(1));
+#line 414 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    const INTVAL c = bit_shift_left(a, -IREG(3));
+    VTABLE_set_integer_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_shr_p_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 358 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_shr_int(interp, PREG(2), cur_opcode[3], PREG(1));
+#line 414 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    const INTVAL c = bit_shift_left(a, -cur_opcode[3]);
+    VTABLE_set_integer_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_shr_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 362 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_shr(interp, PREG(2), PREG(3), PREG(1));
+#line 420 "src/ops/bit.ops"
+    const INTVAL a = VTABLE_get_integer(interp, PREG(2));
+    const INTVAL b = VTABLE_get_integer(interp, PREG(3));
+    const INTVAL c = bit_shift_left(a, -b);
+    VTABLE_set_integer_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_lsr_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 386 "src/ops/bit.ops"
-    /*
-     * lvalue casts are evil, but this one isn't evil enough to kill.
-     * it's just casting a signed integral to the equivalent unsigned.
-     */
-    LVALUE_CAST(UINTVAL, IREG(1)) >>= IREG(2);
+#line 447 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)IREG(1);
+    const UINTVAL b = a >> IREG(2);
+    IREG(1) = (INTVAL)b;
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_lsr_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 386 "src/ops/bit.ops"
-    /*
-     * lvalue casts are evil, but this one isn't evil enough to kill.
-     * it's just casting a signed integral to the equivalent unsigned.
-     */
-    LVALUE_CAST(UINTVAL, IREG(1)) >>= cur_opcode[2];
+#line 447 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)IREG(1);
+    const UINTVAL b = a >> cur_opcode[2];
+    IREG(1) = (INTVAL)b;
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_lsr_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 394 "src/ops/bit.ops"
-    VTABLE_i_bitwise_lsr_int(interp, PREG(1), IREG(2));
+#line 453 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
+    const UINTVAL b = a >> IREG(2);
+    VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_lsr_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 394 "src/ops/bit.ops"
-    VTABLE_i_bitwise_lsr_int(interp, PREG(1), cur_opcode[2]);
+#line 453 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
+    const UINTVAL b = a >> cur_opcode[2];
+    VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_lsr_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 398 "src/ops/bit.ops"
-    VTABLE_i_bitwise_lsr(interp, PREG(1), PREG(2));
+#line 459 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
+    const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
+    const UINTVAL c = a >> b;
+    VTABLE_set_integer_native(interp, PREG(1), (INTVAL)c);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_lsr_i_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 402 "src/ops/bit.ops"
+#line 466 "src/ops/bit.ops"
     IREG(1) = (INTVAL)((UINTVAL)IREG(2) >> IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20480,7 +19209,7 @@
 opcode_t *
 Parrot_lsr_i_ic_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 402 "src/ops/bit.ops"
+#line 466 "src/ops/bit.ops"
     IREG(1) = (INTVAL)((UINTVAL)cur_opcode[2] >> IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20488,7 +19217,7 @@
 opcode_t *
 Parrot_lsr_i_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 402 "src/ops/bit.ops"
+#line 466 "src/ops/bit.ops"
     IREG(1) = (INTVAL)((UINTVAL)IREG(2) >> cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20496,31 +19225,40 @@
 opcode_t *
 Parrot_lsr_p_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 406 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_lsr_int(interp, PREG(2), IREG(3), PREG(1));
+#line 470 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
+    const UINTVAL b = (UINTVAL)IREG(3);
+    const UINTVAL c = a >> b;
+    VTABLE_set_integer_native(interp, PREG(1), (INTVAL)c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_lsr_p_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 406 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_lsr_int(interp, PREG(2), cur_opcode[3], PREG(1));
+#line 470 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
+    const UINTVAL b = (UINTVAL)cur_opcode[3];
+    const UINTVAL c = a >> b;
+    VTABLE_set_integer_native(interp, PREG(1), (INTVAL)c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_lsr_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 410 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_lsr(interp, PREG(2), PREG(3), PREG(1));
+#line 477 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
+    const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, PREG(3));
+    const UINTVAL c = a >> b;
+    VTABLE_set_integer_native(interp, PREG(3), (INTVAL)c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_rot_i_i_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 423 "src/ops/bit.ops"
+#line 493 "src/ops/bit.ops"
     const INTVAL r = IREG(2);
     INTVAL s = IREG(3);
     const INTVAL w = cur_opcode[4];
@@ -20538,7 +19276,7 @@
 opcode_t *
 Parrot_rot_i_ic_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 423 "src/ops/bit.ops"
+#line 493 "src/ops/bit.ops"
     const INTVAL r = cur_opcode[2];
     INTVAL s = IREG(3);
     const INTVAL w = cur_opcode[4];
@@ -20556,7 +19294,7 @@
 opcode_t *
 Parrot_rot_i_i_ic_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 423 "src/ops/bit.ops"
+#line 493 "src/ops/bit.ops"
     const INTVAL r = IREG(2);
     INTVAL s = cur_opcode[3];
     const INTVAL w = cur_opcode[4];
@@ -20574,7 +19312,7 @@
 opcode_t *
 Parrot_bxor_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 460 "src/ops/bit.ops"
+#line 529 "src/ops/bit.ops"
     IREG(1) ^= IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20582,7 +19320,7 @@
 opcode_t *
 Parrot_bxor_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 460 "src/ops/bit.ops"
+#line 529 "src/ops/bit.ops"
     IREG(1) ^= cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20590,31 +19328,38 @@
 opcode_t *
 Parrot_bxor_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 464 "src/ops/bit.ops"
-    VTABLE_i_bitwise_xor_int(interp, PREG(1), IREG(2));
+#line 533 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
+    const UINTVAL b = a ^ IREG(2);
+    VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bxor_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 464 "src/ops/bit.ops"
-    VTABLE_i_bitwise_xor_int(interp, PREG(1), cur_opcode[2]);
+#line 533 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
+    const UINTVAL b = a ^ cur_opcode[2];
+    VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bxor_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 468 "src/ops/bit.ops"
-    VTABLE_i_bitwise_xor(interp, PREG(1), PREG(2));
+#line 539 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
+    const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
+    const UINTVAL c = a ^ b;
+    VTABLE_set_integer_native(interp, PREG(1), (INTVAL)c);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bxor_i_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 472 "src/ops/bit.ops"
+#line 546 "src/ops/bit.ops"
     IREG(1) = IREG(2) ^ IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20622,7 +19367,7 @@
 opcode_t *
 Parrot_bxor_i_ic_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 472 "src/ops/bit.ops"
+#line 546 "src/ops/bit.ops"
     IREG(1) = cur_opcode[2] ^ IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20630,7 +19375,7 @@
 opcode_t *
 Parrot_bxor_i_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 472 "src/ops/bit.ops"
+#line 546 "src/ops/bit.ops"
     IREG(1) = IREG(2) ^ cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20638,31 +19383,38 @@
 opcode_t *
 Parrot_bxor_p_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 476 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_xor_int(interp, PREG(2), IREG(3), PREG(1));
+#line 550 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
+    const UINTVAL b = a ^ IREG(3);
+    VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bxor_p_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 476 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_xor_int(interp, PREG(2), cur_opcode[3], PREG(1));
+#line 550 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
+    const UINTVAL b = a ^ cur_opcode[3];
+    VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bxor_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 480 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_xor(interp, PREG(2), PREG(3), PREG(1));
+#line 556 "src/ops/bit.ops"
+    const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
+    const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, PREG(3));
+    const UINTVAL c = a ^ b;
+    VTABLE_set_integer_native(interp, PREG(1), (INTVAL)c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bxors_s_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 504 "src/ops/bit.ops"
+#line 583 "src/ops/bit.ops"
     Parrot_str_bitwise_xor(interp, SREG(1), SREG(2), &SREG(1));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20670,7 +19422,7 @@
 opcode_t *
 Parrot_bxors_s_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 504 "src/ops/bit.ops"
+#line 583 "src/ops/bit.ops"
     Parrot_str_bitwise_xor(interp, SREG(1), CONST(2)->u.string, &SREG(1));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20678,31 +19430,38 @@
 opcode_t *
 Parrot_bxors_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 508 "src/ops/bit.ops"
-    VTABLE_i_bitwise_xors_str(interp, PREG(1), SREG(2));
+#line 587 "src/ops/bit.ops"
+    STRING *a = VTABLE_get_string(interp, PREG(1));
+    STRING *b = Parrot_str_bitwise_xor(interp, a, SREG(2), NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bxors_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 508 "src/ops/bit.ops"
-    VTABLE_i_bitwise_xors_str(interp, PREG(1), CONST(2)->u.string);
+#line 587 "src/ops/bit.ops"
+    STRING *a = VTABLE_get_string(interp, PREG(1));
+    STRING *b = Parrot_str_bitwise_xor(interp, a, CONST(2)->u.string, NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bxors_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 512 "src/ops/bit.ops"
-    VTABLE_i_bitwise_xors(interp, PREG(1), PREG(2));
+#line 593 "src/ops/bit.ops"
+    STRING *a = VTABLE_get_string(interp, PREG(1));
+    STRING *b = VTABLE_get_string(interp, PREG(2));
+    STRING *c = Parrot_str_bitwise_xor(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bxors_s_s_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 516 "src/ops/bit.ops"
+#line 600 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_xor(interp, SREG(2), SREG(3), NULL);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20710,7 +19469,7 @@
 opcode_t *
 Parrot_bxors_s_sc_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 516 "src/ops/bit.ops"
+#line 600 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_xor(interp, CONST(2)->u.string, SREG(3), NULL);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20718,7 +19477,7 @@
 opcode_t *
 Parrot_bxors_s_s_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 516 "src/ops/bit.ops"
+#line 600 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_xor(interp, SREG(2), CONST(3)->u.string, NULL);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20726,24 +19485,31 @@
 opcode_t *
 Parrot_bxors_p_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 520 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_xors_str(interp, PREG(2), SREG(3), PREG(1));
+#line 604 "src/ops/bit.ops"
+    STRING *a = VTABLE_get_string(interp, PREG(2));
+    STRING *b = Parrot_str_bitwise_xor(interp, a, SREG(3), NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bxors_p_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 520 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_xors_str(interp, PREG(2), CONST(3)->u.string, PREG(1));
+#line 604 "src/ops/bit.ops"
+    STRING *a = VTABLE_get_string(interp, PREG(2));
+    STRING *b = Parrot_str_bitwise_xor(interp, a, CONST(3)->u.string, NULL);
+    VTABLE_set_string_native(interp, PREG(1), b);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_bxors_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 524 "src/ops/bit.ops"
-    PREG(1) = VTABLE_bitwise_xors(interp, PREG(2), PREG(3), PREG(1));
+#line 610 "src/ops/bit.ops"
+    STRING *a = VTABLE_get_string(interp, PREG(2));
+    STRING *b = VTABLE_get_string(interp, PREG(3));
+    STRING *c = Parrot_str_bitwise_xor(interp, a, b, NULL);
+    VTABLE_set_string_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20851,15 +19617,15 @@
 Parrot_eq_p_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 90 "src/ops/cmp.ops"
-    PMC * temp = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
     if (VTABLE_is_equal(interp, PREG(1), temp)) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20867,15 +19633,15 @@
 Parrot_eq_p_ic_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 90 "src/ops/cmp.ops"
-    PMC * temp = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
     if (VTABLE_is_equal(interp, PREG(1), temp)) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21105,15 +19871,15 @@
 Parrot_ne_p_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 196 "src/ops/cmp.ops"
-    PMC * temp = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
     if (!VTABLE_is_equal(interp, PREG(1), temp)) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21121,15 +19887,15 @@
 Parrot_ne_p_ic_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 196 "src/ops/cmp.ops"
-    PMC * temp = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
     if (!VTABLE_is_equal(interp, PREG(1), temp)) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21347,15 +20113,15 @@
 Parrot_lt_p_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 292 "src/ops/cmp.ops"
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
     if (VTABLE_cmp(interp, PREG(1), temp) < 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21363,15 +20129,15 @@
 Parrot_lt_p_ic_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 292 "src/ops/cmp.ops"
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
     if (VTABLE_cmp(interp, PREG(1), temp) < 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21539,15 +20305,15 @@
 Parrot_le_p_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 376 "src/ops/cmp.ops"
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
     if (VTABLE_cmp(interp, PREG(1), temp) <= 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21555,15 +20321,15 @@
 Parrot_le_p_ic_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 376 "src/ops/cmp.ops"
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
     if (VTABLE_cmp(interp, PREG(1), temp) <= 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21641,15 +20407,15 @@
 Parrot_gt_p_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 436 "src/ops/cmp.ops"
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
     if (VTABLE_cmp(interp, PREG(1), temp) > 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21657,15 +20423,15 @@
 Parrot_gt_p_ic_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 436 "src/ops/cmp.ops"
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
     if (VTABLE_cmp(interp, PREG(1), temp) > 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21743,15 +20509,15 @@
 Parrot_ge_p_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 496 "src/ops/cmp.ops"
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
     if (VTABLE_cmp(interp, PREG(1), temp) >= 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21759,15 +20525,15 @@
 Parrot_ge_p_ic_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 496 "src/ops/cmp.ops"
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
     if (VTABLE_cmp(interp, PREG(1), temp) >= 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -22756,7 +21522,7 @@
 #line 55 "src/ops/io.ops"
     PREG(1) = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)IREG(2), SREG(3));
     if (!PREG(1))
-        PREG(1) = pmc_new(interp, enum_class_Undef);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -22766,7 +21532,7 @@
 #line 55 "src/ops/io.ops"
     PREG(1) = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)cur_opcode[2], SREG(3));
     if (!PREG(1))
-        PREG(1) = pmc_new(interp, enum_class_Undef);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -22776,7 +21542,7 @@
 #line 55 "src/ops/io.ops"
     PREG(1) = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)IREG(2), CONST(3)->u.string);
     if (!PREG(1))
-        PREG(1) = pmc_new(interp, enum_class_Undef);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -22786,7 +21552,7 @@
 #line 55 "src/ops/io.ops"
     PREG(1) = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)cur_opcode[2], CONST(3)->u.string);
     if (!PREG(1))
-        PREG(1) = pmc_new(interp, enum_class_Undef);
+        PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23856,7 +22622,7 @@
 
     result = VTABLE_get_integer(interp, PREG(2)) % IREG(3);
 
-    PREG(1) = pmc_new(interp, VTABLE_type(interp, PREG(2)));
+    PREG(1) = Parrot_pmc_new(interp, VTABLE_type(interp, PREG(2)));
     VTABLE_set_integer_native(interp, PREG(1), result);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23876,7 +22642,7 @@
 
     result = VTABLE_get_integer(interp, PREG(2)) % cur_opcode[3];
 
-    PREG(1) = pmc_new(interp, VTABLE_type(interp, PREG(2)));
+    PREG(1) = Parrot_pmc_new(interp, VTABLE_type(interp, PREG(2)));
     VTABLE_set_integer_native(interp, PREG(1), result);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23897,7 +22663,7 @@
 
     result = VTABLE_get_integer(interp, PREG(2)) % value;
 
-    PREG(1) = pmc_new(interp, VTABLE_type(interp, PREG(2)));
+    PREG(1) = Parrot_pmc_new(interp, VTABLE_type(interp, PREG(2)));
     VTABLE_set_integer_native(interp, PREG(1), result);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23963,7 +22729,7 @@
 
     result = fmod(VTABLE_get_integer(interp, PREG(2)), value);
 
-    PREG(1) = pmc_new(interp, VTABLE_type(interp, PREG(2)));
+    PREG(1) = Parrot_pmc_new(interp, VTABLE_type(interp, PREG(2)));
     VTABLE_set_integer_native(interp, PREG(1), (INTVAL) result);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23984,7 +22750,7 @@
 
     result = fmod(VTABLE_get_integer(interp, PREG(2)), value);
 
-    PREG(1) = pmc_new(interp, VTABLE_type(interp, PREG(2)));
+    PREG(1) = Parrot_pmc_new(interp, VTABLE_type(interp, PREG(2)));
     VTABLE_set_integer_native(interp, PREG(1), (INTVAL) result);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -24993,46 +23759,79 @@
 Parrot_pow_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 815 "src/ops/math.ops"
-    PREG(1) = VTABLE_pow(interp, PREG(2), PREG(3), PREG(1));
+    const FLOATVAL a = VTABLE_get_number(interp, PREG(2));
+    const FLOATVAL b = VTABLE_get_number(interp, PREG(3));
+    const FLOATVAL c = pow(a, b);
+    if (PMC_IS_NULL(PREG(1)))
+        PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    else
+        PREG(1) = Parrot_pmc_new(interp, PREG(1)->vtable->base_type);
+    VTABLE_set_number_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_pow_p_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 819 "src/ops/math.ops"
-    PREG(1) = VTABLE_pow_int(interp, PREG(2), IREG(3), PREG(1));
+#line 826 "src/ops/math.ops"
+    const FLOATVAL a = VTABLE_get_number(interp, PREG(2));
+    const FLOATVAL b = (FLOATVAL)IREG(3);
+    const FLOATVAL c = pow(a, b);
+    if (PMC_IS_NULL(PREG(1)))
+        PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    else
+        PREG(1) = Parrot_pmc_new(interp, PREG(1)->vtable->base_type);
+    VTABLE_set_number_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_pow_p_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 819 "src/ops/math.ops"
-    PREG(1) = VTABLE_pow_int(interp, PREG(2), cur_opcode[3], PREG(1));
+#line 826 "src/ops/math.ops"
+    const FLOATVAL a = VTABLE_get_number(interp, PREG(2));
+    const FLOATVAL b = (FLOATVAL)cur_opcode[3];
+    const FLOATVAL c = pow(a, b);
+    if (PMC_IS_NULL(PREG(1)))
+        PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    else
+        PREG(1) = Parrot_pmc_new(interp, PREG(1)->vtable->base_type);
+    VTABLE_set_number_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_pow_p_p_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 823 "src/ops/math.ops"
-    PREG(1) = VTABLE_pow_float(interp, PREG(2), NREG(3), PREG(1));
+#line 837 "src/ops/math.ops"
+    const FLOATVAL a = VTABLE_get_number(interp, PREG(2));
+    const FLOATVAL c = pow(a, NREG(3));
+    if (PMC_IS_NULL(PREG(1)))
+        PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    else
+        PREG(1) = Parrot_pmc_new(interp, PREG(1)->vtable->base_type);
+    VTABLE_set_number_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_pow_p_p_nc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 823 "src/ops/math.ops"
-    PREG(1) = VTABLE_pow_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
+#line 837 "src/ops/math.ops"
+    const FLOATVAL a = VTABLE_get_number(interp, PREG(2));
+    const FLOATVAL c = pow(a, CONST(3)->u.number);
+    if (PMC_IS_NULL(PREG(1)))
+        PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    else
+        PREG(1) = Parrot_pmc_new(interp, PREG(1)->vtable->base_type);
+    VTABLE_set_number_native(interp, PREG(1), c);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_pow_n_n_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 827 "src/ops/math.ops"
+#line 847 "src/ops/math.ops"
     FLOATVAL n2 = NREG(2);
     FLOATVAL res = 1.0;
     INTVAL   e  = IREG(3);
@@ -25060,7 +23859,7 @@
 opcode_t *
 Parrot_pow_n_nc_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 827 "src/ops/math.ops"
+#line 847 "src/ops/math.ops"
     FLOATVAL n2 = CONST(2)->u.number;
     FLOATVAL res = 1.0;
     INTVAL   e  = IREG(3);
@@ -25088,7 +23887,7 @@
 opcode_t *
 Parrot_pow_n_n_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 827 "src/ops/math.ops"
+#line 847 "src/ops/math.ops"
     FLOATVAL n2 = NREG(2);
     FLOATVAL res = 1.0;
     INTVAL   e  = cur_opcode[3];
@@ -25116,7 +23915,7 @@
 opcode_t *
 Parrot_pow_n_nc_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 827 "src/ops/math.ops"
+#line 847 "src/ops/math.ops"
     FLOATVAL n2 = CONST(2)->u.number;
     FLOATVAL res = 1.0;
     INTVAL   e  = cur_opcode[3];
@@ -25144,7 +23943,7 @@
 opcode_t *
 Parrot_sub_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 879 "src/ops/math.ops"
+#line 899 "src/ops/math.ops"
     IREG(1) -= IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25152,7 +23951,7 @@
 opcode_t *
 Parrot_sub_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 879 "src/ops/math.ops"
+#line 899 "src/ops/math.ops"
     IREG(1) -= cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25160,7 +23959,7 @@
 opcode_t *
 Parrot_sub_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 883 "src/ops/math.ops"
+#line 903 "src/ops/math.ops"
     NREG(1) -= NREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25168,7 +23967,7 @@
 opcode_t *
 Parrot_sub_n_nc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 883 "src/ops/math.ops"
+#line 903 "src/ops/math.ops"
     NREG(1) -= CONST(2)->u.number;
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25176,7 +23975,7 @@
 opcode_t *
 Parrot_sub_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 887 "src/ops/math.ops"
+#line 907 "src/ops/math.ops"
     VTABLE_i_subtract(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25184,7 +23983,7 @@
 opcode_t *
 Parrot_sub_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 891 "src/ops/math.ops"
+#line 911 "src/ops/math.ops"
     VTABLE_i_subtract_int(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25192,7 +23991,7 @@
 opcode_t *
 Parrot_sub_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 891 "src/ops/math.ops"
+#line 911 "src/ops/math.ops"
     VTABLE_i_subtract_int(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25200,7 +23999,7 @@
 opcode_t *
 Parrot_sub_p_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 895 "src/ops/math.ops"
+#line 915 "src/ops/math.ops"
     VTABLE_i_subtract_float(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25208,7 +24007,7 @@
 opcode_t *
 Parrot_sub_p_nc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 895 "src/ops/math.ops"
+#line 915 "src/ops/math.ops"
     VTABLE_i_subtract_float(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25216,7 +24015,7 @@
 opcode_t *
 Parrot_sub_i_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 899 "src/ops/math.ops"
+#line 919 "src/ops/math.ops"
     IREG(1) = IREG(2) - IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25224,7 +24023,7 @@
 opcode_t *
 Parrot_sub_i_ic_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 899 "src/ops/math.ops"
+#line 919 "src/ops/math.ops"
     IREG(1) = cur_opcode[2] - IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25232,7 +24031,7 @@
 opcode_t *
 Parrot_sub_i_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 899 "src/ops/math.ops"
+#line 919 "src/ops/math.ops"
     IREG(1) = IREG(2) - cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25240,7 +24039,7 @@
 opcode_t *
 Parrot_sub_n_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 903 "src/ops/math.ops"
+#line 923 "src/ops/math.ops"
     NREG(1) = NREG(2) - NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25248,7 +24047,7 @@
 opcode_t *
 Parrot_sub_n_nc_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 903 "src/ops/math.ops"
+#line 923 "src/ops/math.ops"
     NREG(1) = CONST(2)->u.number - NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25256,7 +24055,7 @@
 opcode_t *
 Parrot_sub_n_n_nc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 903 "src/ops/math.ops"
+#line 923 "src/ops/math.ops"
     NREG(1) = NREG(2) - CONST(3)->u.number;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25264,7 +24063,7 @@
 opcode_t *
 Parrot_sub_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 907 "src/ops/math.ops"
+#line 927 "src/ops/math.ops"
     PREG(1) = VTABLE_subtract(interp, PREG(2), PREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25272,7 +24071,7 @@
 opcode_t *
 Parrot_sub_p_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 911 "src/ops/math.ops"
+#line 931 "src/ops/math.ops"
     PREG(1) = VTABLE_subtract_int(interp, PREG(2), IREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25280,7 +24079,7 @@
 opcode_t *
 Parrot_sub_p_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 911 "src/ops/math.ops"
+#line 931 "src/ops/math.ops"
     PREG(1) = VTABLE_subtract_int(interp, PREG(2), cur_opcode[3], PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25288,7 +24087,7 @@
 opcode_t *
 Parrot_sub_p_p_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 915 "src/ops/math.ops"
+#line 935 "src/ops/math.ops"
     PREG(1) = VTABLE_subtract_float(interp, PREG(2), NREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25296,7 +24095,7 @@
 opcode_t *
 Parrot_sub_p_p_nc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 915 "src/ops/math.ops"
+#line 935 "src/ops/math.ops"
     PREG(1) = VTABLE_subtract_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25304,7 +24103,7 @@
 opcode_t *
 Parrot_sqrt_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 927 "src/ops/math.ops"
+#line 947 "src/ops/math.ops"
     NREG(1) = sqrt((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25312,7 +24111,7 @@
 opcode_t *
 Parrot_acos_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 956 "src/ops/math.ops"
+#line 976 "src/ops/math.ops"
     NREG(1) = acos((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25320,7 +24119,7 @@
 opcode_t *
 Parrot_asec_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 968 "src/ops/math.ops"
+#line 988 "src/ops/math.ops"
     NREG(1) = acos(((FLOATVAL)1) / ((FLOATVAL)NREG(2)));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25328,7 +24127,7 @@
 opcode_t *
 Parrot_asin_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 981 "src/ops/math.ops"
+#line 1001 "src/ops/math.ops"
     NREG(1) = asin((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25336,7 +24135,7 @@
 opcode_t *
 Parrot_atan_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 999 "src/ops/math.ops"
+#line 1019 "src/ops/math.ops"
     NREG(1) = atan((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25344,7 +24143,7 @@
 opcode_t *
 Parrot_atan_n_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1003 "src/ops/math.ops"
+#line 1023 "src/ops/math.ops"
     NREG(1) = atan2((FLOATVAL)NREG(2), (FLOATVAL)NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25352,7 +24151,7 @@
 opcode_t *
 Parrot_atan_n_nc_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1003 "src/ops/math.ops"
+#line 1023 "src/ops/math.ops"
     NREG(1) = atan2((FLOATVAL)CONST(2)->u.number, (FLOATVAL)NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25360,7 +24159,7 @@
 opcode_t *
 Parrot_atan_n_n_nc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1003 "src/ops/math.ops"
+#line 1023 "src/ops/math.ops"
     NREG(1) = atan2((FLOATVAL)NREG(2), (FLOATVAL)CONST(3)->u.number);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25368,7 +24167,7 @@
 opcode_t *
 Parrot_cos_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1015 "src/ops/math.ops"
+#line 1035 "src/ops/math.ops"
     NREG(1) = cos((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25376,7 +24175,7 @@
 opcode_t *
 Parrot_cosh_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1027 "src/ops/math.ops"
+#line 1047 "src/ops/math.ops"
     NREG(1) = cosh((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25384,7 +24183,7 @@
 opcode_t *
 Parrot_exp_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1040 "src/ops/math.ops"
+#line 1060 "src/ops/math.ops"
     NREG(1) = exp((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25392,7 +24191,7 @@
 opcode_t *
 Parrot_ln_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1052 "src/ops/math.ops"
+#line 1072 "src/ops/math.ops"
     NREG(1) = log((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25400,7 +24199,7 @@
 opcode_t *
 Parrot_log10_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1064 "src/ops/math.ops"
+#line 1084 "src/ops/math.ops"
     NREG(1) = log10((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25408,7 +24207,7 @@
 opcode_t *
 Parrot_log2_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1076 "src/ops/math.ops"
+#line 1096 "src/ops/math.ops"
     FLOATVAL temp = log((FLOATVAL)2.0);
     NREG(1) = log((FLOATVAL)NREG(2)) / temp;
 
@@ -25417,7 +24216,7 @@
 opcode_t *
 Parrot_sec_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1089 "src/ops/math.ops"
+#line 1109 "src/ops/math.ops"
     NREG(1) = ((FLOATVAL)1) / cos((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25425,7 +24224,7 @@
 opcode_t *
 Parrot_sech_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1101 "src/ops/math.ops"
+#line 1121 "src/ops/math.ops"
     NREG(1) = ((FLOATVAL)1) / cosh((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25433,7 +24232,7 @@
 opcode_t *
 Parrot_sin_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1113 "src/ops/math.ops"
+#line 1133 "src/ops/math.ops"
     NREG(1) = sin((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25441,7 +24240,7 @@
 opcode_t *
 Parrot_sinh_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1125 "src/ops/math.ops"
+#line 1145 "src/ops/math.ops"
     NREG(1) = sinh((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25449,7 +24248,7 @@
 opcode_t *
 Parrot_tan_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1137 "src/ops/math.ops"
+#line 1157 "src/ops/math.ops"
     NREG(1) = tan((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25457,7 +24256,7 @@
 opcode_t *
 Parrot_tanh_n_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1149 "src/ops/math.ops"
+#line 1169 "src/ops/math.ops"
     NREG(1) = tanh((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25465,7 +24264,7 @@
 opcode_t *
 Parrot_gcd_i_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1175 "src/ops/math.ops"
+#line 1195 "src/ops/math.ops"
     INTVAL p = 0;
     INTVAL a = IREG(2) < 0 ? -IREG(2) : IREG(2);
     INTVAL b = IREG(3) < 0 ? -IREG(3) : IREG(3);
@@ -25493,7 +24292,7 @@
 opcode_t *
 Parrot_gcd_i_ic_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1175 "src/ops/math.ops"
+#line 1195 "src/ops/math.ops"
     INTVAL p = 0;
     INTVAL a = cur_opcode[2] < 0 ? -cur_opcode[2] : cur_opcode[2];
     INTVAL b = IREG(3) < 0 ? -IREG(3) : IREG(3);
@@ -25521,7 +24320,7 @@
 opcode_t *
 Parrot_gcd_i_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1175 "src/ops/math.ops"
+#line 1195 "src/ops/math.ops"
     INTVAL p = 0;
     INTVAL a = IREG(2) < 0 ? -IREG(2) : IREG(2);
     INTVAL b = cur_opcode[3] < 0 ? -cur_opcode[3] : cur_opcode[3];
@@ -25549,7 +24348,7 @@
 opcode_t *
 Parrot_lcm_i_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1208 "src/ops/math.ops"
+#line 1228 "src/ops/math.ops"
     INTVAL gcd = 0;
     INTVAL p = 0;
     INTVAL a = IREG(2) < 0 ? -IREG(2) : IREG(2);
@@ -25580,7 +24379,7 @@
 opcode_t *
 Parrot_lcm_i_ic_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1208 "src/ops/math.ops"
+#line 1228 "src/ops/math.ops"
     INTVAL gcd = 0;
     INTVAL p = 0;
     INTVAL a = cur_opcode[2] < 0 ? -cur_opcode[2] : cur_opcode[2];
@@ -25611,7 +24410,7 @@
 opcode_t *
 Parrot_lcm_i_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1208 "src/ops/math.ops"
+#line 1228 "src/ops/math.ops"
     INTVAL gcd = 0;
     INTVAL p = 0;
     INTVAL a = IREG(2) < 0 ? -IREG(2) : IREG(2);
@@ -25642,7 +24441,7 @@
 opcode_t *
 Parrot_fact_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1245 "src/ops/math.ops"
+#line 1265 "src/ops/math.ops"
     /* Coercing a negative to a UINT can get pretty ugly
      * in this situation. */
     INTVAL i = IREG(2);
@@ -25658,7 +24457,7 @@
 opcode_t *
 Parrot_fact_n_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 1257 "src/ops/math.ops"
+#line 1277 "src/ops/math.ops"
     /* Coercing a negative to a UINT can get pretty ugly
      * in this situation. */
     INTVAL i = IREG(2);
@@ -25836,15 +24635,6 @@
     else {
         interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
         PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
-        /* Detach continuation from current CallContext to avoid marking dead object. */
-        /* RetContinuation will kill itself after invoke */
-        if (interp->current_cont->vtable->base_type == enum_class_RetContinuation
-            && Parrot_pcc_do_run_ops(interp, method_pmc)) {
-            PMC * const ctx             = CURRENT_CONTEXT(interp);
-            PMC * const parent_ctx      = Parrot_pcc_get_caller_ctx(interp, ctx);
-            PMC_cont(interp->current_cont)->from_ctx = parent_ctx;
-            Parrot_pcc_set_continuation(interp, ctx, PMCNULL);
-        }
         interp->current_object = object;
         dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
     }
@@ -25870,15 +24660,6 @@
     else {
         interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
         PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
-        /* Detach continuation from current CallContext to avoid marking dead object. */
-        /* RetContinuation will kill itself after invoke */
-        if (interp->current_cont->vtable->base_type == enum_class_RetContinuation
-            && Parrot_pcc_do_run_ops(interp, method_pmc)) {
-            PMC * const ctx             = CURRENT_CONTEXT(interp);
-            PMC * const parent_ctx      = Parrot_pcc_get_caller_ctx(interp, ctx);
-            PMC_cont(interp->current_cont)->from_ctx = parent_ctx;
-            Parrot_pcc_set_continuation(interp, ctx, PMCNULL);
-        }
         interp->current_object = object;
         dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
     }
@@ -25888,7 +24669,7 @@
 opcode_t *
 Parrot_tailcallmethod_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 157 "src/ops/object.ops"
+#line 148 "src/ops/object.ops"
     opcode_t * const next       = cur_opcode + 3;
     PMC      * const object     = PREG(1);
     PMC      * const method_pmc = PREG(2);
@@ -25897,15 +24678,6 @@
 
     interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
     PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
-    /* Detach continuation from current CallContext to avoid marking dead object. */
-    /* RetContinuation will kill itself after invoke */
-    if (interp->current_cont->vtable->base_type == enum_class_RetContinuation
-        && Parrot_pcc_do_run_ops(interp, method_pmc)) {
-        PMC * const ctx             = CURRENT_CONTEXT(interp);
-        PMC * const parent_ctx      = Parrot_pcc_get_caller_ctx(interp, ctx);
-        PMC_cont(interp->current_cont)->from_ctx = parent_ctx;
-        Parrot_pcc_set_continuation(interp, ctx, PMCNULL);
-    }
 
     interp->current_object = object;
     dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
@@ -25915,7 +24687,7 @@
 opcode_t *
 Parrot_addmethod_p_s_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 187 "src/ops/object.ops"
+#line 169 "src/ops/object.ops"
     VTABLE_add_method(interp, PREG(1), SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25923,7 +24695,7 @@
 opcode_t *
 Parrot_addmethod_p_sc_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 187 "src/ops/object.ops"
+#line 169 "src/ops/object.ops"
     VTABLE_add_method(interp, PREG(1), CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25931,7 +24703,7 @@
 opcode_t *
 Parrot_can_i_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 199 "src/ops/object.ops"
+#line 181 "src/ops/object.ops"
     IREG(1) = VTABLE_can(interp, PREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25939,7 +24711,7 @@
 opcode_t *
 Parrot_can_i_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 199 "src/ops/object.ops"
+#line 181 "src/ops/object.ops"
     IREG(1) = VTABLE_can(interp, PREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25947,7 +24719,7 @@
 opcode_t *
 Parrot_does_i_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 211 "src/ops/object.ops"
+#line 193 "src/ops/object.ops"
     IREG(1) = SREG(3) ? VTABLE_does(interp, PREG(2), SREG(3)) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25955,7 +24727,7 @@
 opcode_t *
 Parrot_does_i_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 211 "src/ops/object.ops"
+#line 193 "src/ops/object.ops"
     IREG(1) = CONST(3)->u.string ? VTABLE_does(interp, PREG(2), CONST(3)->u.string) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25963,7 +24735,7 @@
 opcode_t *
 Parrot_does_i_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 222 "src/ops/object.ops"
+#line 204 "src/ops/object.ops"
     IREG(1) = PREG(3) ? VTABLE_does_pmc(interp, PREG(2), PREG(3)) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25971,7 +24743,7 @@
 opcode_t *
 Parrot_does_i_p_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 222 "src/ops/object.ops"
+#line 204 "src/ops/object.ops"
     IREG(1) = CONST(3)->u.key ? VTABLE_does_pmc(interp, PREG(2), CONST(3)->u.key) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25979,7 +24751,7 @@
 opcode_t *
 Parrot_isa_i_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 235 "src/ops/object.ops"
+#line 217 "src/ops/object.ops"
     IREG(1) = SREG(3) ? VTABLE_isa(interp, PREG(2), SREG(3)) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25987,7 +24759,7 @@
 opcode_t *
 Parrot_isa_i_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 235 "src/ops/object.ops"
+#line 217 "src/ops/object.ops"
     IREG(1) = CONST(3)->u.string ? VTABLE_isa(interp, PREG(2), CONST(3)->u.string) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25995,7 +24767,7 @@
 opcode_t *
 Parrot_isa_i_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 239 "src/ops/object.ops"
+#line 221 "src/ops/object.ops"
     IREG(1) = PREG(3) ? VTABLE_isa_pmc(interp, PREG(2), PREG(3)) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26003,7 +24775,7 @@
 opcode_t *
 Parrot_isa_i_p_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 239 "src/ops/object.ops"
+#line 221 "src/ops/object.ops"
     IREG(1) = CONST(3)->u.key ? VTABLE_isa_pmc(interp, PREG(2), CONST(3)->u.key) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26011,43 +24783,43 @@
 opcode_t *
 Parrot_newclass_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 257 "src/ops/object.ops"
-    PMC * const name = pmc_new(interp, enum_class_String);
+#line 239 "src/ops/object.ops"
+    PMC * const name = Parrot_pmc_new(interp, enum_class_String);
     VTABLE_set_string_native(interp, name, SREG(2));
-    PREG(1) = pmc_new_init(interp, enum_class_Class, name);
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, name);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_newclass_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 257 "src/ops/object.ops"
-    PMC * const name = pmc_new(interp, enum_class_String);
+#line 239 "src/ops/object.ops"
+    PMC * const name = Parrot_pmc_new(interp, enum_class_String);
     VTABLE_set_string_native(interp, name, CONST(2)->u.string);
-    PREG(1) = pmc_new_init(interp, enum_class_Class, name);
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, name);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_newclass_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 263 "src/ops/object.ops"
-    PREG(1) = pmc_new_init(interp, enum_class_Class, PREG(2));
+#line 245 "src/ops/object.ops"
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_newclass_p_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 263 "src/ops/object.ops"
-    PREG(1) = pmc_new_init(interp, enum_class_Class, CONST(2)->u.key);
+#line 245 "src/ops/object.ops"
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(2)->u.key);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_subclass_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 279 "src/ops/object.ops"
+#line 261 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
     opcode_t * const next         = cur_opcode + 3;
 
@@ -26057,7 +24829,7 @@
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, PREG(2)));
         return (opcode_t *)handler;
     }
-    PREG(1) = pmc_new(interp, enum_class_Class);
+    PREG(1) = Parrot_pmc_new(interp, enum_class_Class);
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26065,7 +24837,7 @@
 opcode_t *
 Parrot_subclass_p_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 279 "src/ops/object.ops"
+#line 261 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
     opcode_t * const next         = cur_opcode + 3;
 
@@ -26075,7 +24847,7 @@
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2)->u.key));
         return (opcode_t *)handler;
     }
-    PREG(1) = pmc_new(interp, enum_class_Class);
+    PREG(1) = Parrot_pmc_new(interp, enum_class_Class);
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26083,7 +24855,7 @@
 opcode_t *
 Parrot_subclass_p_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 294 "src/ops/object.ops"
+#line 276 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26101,7 +24873,7 @@
 opcode_t *
 Parrot_subclass_p_pc_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 294 "src/ops/object.ops"
+#line 276 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26119,7 +24891,7 @@
 opcode_t *
 Parrot_subclass_p_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 294 "src/ops/object.ops"
+#line 276 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26137,7 +24909,7 @@
 opcode_t *
 Parrot_subclass_p_pc_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 294 "src/ops/object.ops"
+#line 276 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26155,7 +24927,7 @@
 opcode_t *
 Parrot_subclass_p_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 309 "src/ops/object.ops"
+#line 291 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26165,7 +24937,7 @@
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, PREG(2)));
         return (opcode_t *)handler;
     }
-    PREG(1) = pmc_new_init(interp, enum_class_Class, PREG(3));
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PREG(3));
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26173,7 +24945,7 @@
 opcode_t *
 Parrot_subclass_p_pc_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 309 "src/ops/object.ops"
+#line 291 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26183,7 +24955,7 @@
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2)->u.key));
         return (opcode_t *)handler;
     }
-    PREG(1) = pmc_new_init(interp, enum_class_Class, PREG(3));
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PREG(3));
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26191,7 +24963,7 @@
 opcode_t *
 Parrot_subclass_p_p_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 309 "src/ops/object.ops"
+#line 291 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26201,7 +24973,7 @@
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, PREG(2)));
         return (opcode_t *)handler;
     }
-    PREG(1) = pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26209,7 +24981,7 @@
 opcode_t *
 Parrot_subclass_p_pc_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 309 "src/ops/object.ops"
+#line 291 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26219,7 +24991,7 @@
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2)->u.key));
         return (opcode_t *)handler;
     }
-    PREG(1) = pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26227,7 +24999,7 @@
 opcode_t *
 Parrot_subclass_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 337 "src/ops/object.ops"
+#line 319 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
     opcode_t * const next         = cur_opcode + 3;
 
@@ -26238,7 +25010,7 @@
         return (opcode_t *)handler;
     }
 
-    PREG(1) = pmc_new(interp, enum_class_Class);
+    PREG(1) = Parrot_pmc_new(interp, enum_class_Class);
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26246,7 +25018,7 @@
 opcode_t *
 Parrot_subclass_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 337 "src/ops/object.ops"
+#line 319 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
     opcode_t * const next         = cur_opcode + 3;
 
@@ -26257,7 +25029,7 @@
         return (opcode_t *)handler;
     }
 
-    PREG(1) = pmc_new(interp, enum_class_Class);
+    PREG(1) = Parrot_pmc_new(interp, enum_class_Class);
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26265,7 +25037,7 @@
 opcode_t *
 Parrot_subclass_p_s_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 353 "src/ops/object.ops"
+#line 335 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26284,7 +25056,7 @@
 opcode_t *
 Parrot_subclass_p_sc_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 353 "src/ops/object.ops"
+#line 335 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26303,7 +25075,7 @@
 opcode_t *
 Parrot_subclass_p_s_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 353 "src/ops/object.ops"
+#line 335 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26322,7 +25094,7 @@
 opcode_t *
 Parrot_subclass_p_sc_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 353 "src/ops/object.ops"
+#line 335 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26341,7 +25113,7 @@
 opcode_t *
 Parrot_subclass_p_s_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 369 "src/ops/object.ops"
+#line 351 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26352,7 +25124,7 @@
         return (opcode_t *)handler;
     }
 
-    PREG(1) = pmc_new_init(interp, enum_class_Class, PREG(3));
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PREG(3));
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26360,7 +25132,7 @@
 opcode_t *
 Parrot_subclass_p_sc_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 369 "src/ops/object.ops"
+#line 351 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26371,7 +25143,7 @@
         return (opcode_t *)handler;
     }
 
-    PREG(1) = pmc_new_init(interp, enum_class_Class, PREG(3));
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PREG(3));
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26379,7 +25151,7 @@
 opcode_t *
 Parrot_subclass_p_s_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 369 "src/ops/object.ops"
+#line 351 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26390,7 +25162,7 @@
         return (opcode_t *)handler;
     }
 
-    PREG(1) = pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26398,7 +25170,7 @@
 opcode_t *
 Parrot_subclass_p_sc_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 369 "src/ops/object.ops"
+#line 351 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -26409,7 +25181,7 @@
         return (opcode_t *)handler;
     }
 
-    PREG(1) = pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
     VTABLE_add_parent(interp, PREG(1), parent_class);
     return (opcode_t *)next;
 }
@@ -26417,7 +25189,7 @@
 opcode_t *
 Parrot_get_class_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 395 "src/ops/object.ops"
+#line 377 "src/ops/object.ops"
     PREG(1) = Parrot_oo_get_class_str(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26425,7 +25197,7 @@
 opcode_t *
 Parrot_get_class_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 395 "src/ops/object.ops"
+#line 377 "src/ops/object.ops"
     PREG(1) = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26433,7 +25205,7 @@
 opcode_t *
 Parrot_get_class_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 399 "src/ops/object.ops"
+#line 381 "src/ops/object.ops"
     PREG(1) = Parrot_oo_get_class(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26441,7 +25213,7 @@
 opcode_t *
 Parrot_get_class_p_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 399 "src/ops/object.ops"
+#line 381 "src/ops/object.ops"
     PREG(1) = Parrot_oo_get_class(interp, CONST(2)->u.key);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26449,7 +25221,7 @@
 opcode_t *
 Parrot_class_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 411 "src/ops/object.ops"
+#line 393 "src/ops/object.ops"
     PREG(1) = VTABLE_get_class(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26457,7 +25229,7 @@
 opcode_t *
 Parrot_addparent_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 424 "src/ops/object.ops"
+#line 406 "src/ops/object.ops"
     VTABLE_add_parent(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26465,7 +25237,7 @@
 opcode_t *
 Parrot_removeparent_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 434 "src/ops/object.ops"
+#line 416 "src/ops/object.ops"
     VTABLE_remove_parent(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26473,7 +25245,7 @@
 opcode_t *
 Parrot_addrole_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 444 "src/ops/object.ops"
+#line 426 "src/ops/object.ops"
     VTABLE_add_role(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26481,7 +25253,7 @@
 opcode_t *
 Parrot_addattribute_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 454 "src/ops/object.ops"
+#line 436 "src/ops/object.ops"
     STRING * const class_name  = string_from_literal(interp, "Class");
     STRING * const role_name   = string_from_literal(interp, "Role");
 
@@ -26499,7 +25271,7 @@
 opcode_t *
 Parrot_addattribute_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 454 "src/ops/object.ops"
+#line 436 "src/ops/object.ops"
     STRING * const class_name  = string_from_literal(interp, "Class");
     STRING * const role_name   = string_from_literal(interp, "Role");
 
@@ -26517,7 +25289,7 @@
 opcode_t *
 Parrot_removeattribute_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 474 "src/ops/object.ops"
+#line 456 "src/ops/object.ops"
     VTABLE_remove_attribute(interp, PREG(1), SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26525,7 +25297,7 @@
 opcode_t *
 Parrot_removeattribute_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 474 "src/ops/object.ops"
+#line 456 "src/ops/object.ops"
     VTABLE_remove_attribute(interp, PREG(1), CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26533,7 +25305,7 @@
 opcode_t *
 Parrot_getattribute_p_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 491 "src/ops/object.ops"
+#line 473 "src/ops/object.ops"
     PREG(1) = VTABLE_get_attr_str(interp, PREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26541,7 +25313,7 @@
 opcode_t *
 Parrot_getattribute_p_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 491 "src/ops/object.ops"
+#line 473 "src/ops/object.ops"
     PREG(1) = VTABLE_get_attr_str(interp, PREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26549,7 +25321,7 @@
 opcode_t *
 Parrot_getattribute_p_p_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 495 "src/ops/object.ops"
+#line 477 "src/ops/object.ops"
     PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), PREG(3), SREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26557,7 +25329,7 @@
 opcode_t *
 Parrot_getattribute_p_p_pc_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 495 "src/ops/object.ops"
+#line 477 "src/ops/object.ops"
     PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), CONST(3)->u.key, SREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26565,7 +25337,7 @@
 opcode_t *
 Parrot_getattribute_p_p_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 495 "src/ops/object.ops"
+#line 477 "src/ops/object.ops"
     PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), PREG(3), CONST(4)->u.string);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26573,7 +25345,7 @@
 opcode_t *
 Parrot_getattribute_p_p_pc_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 495 "src/ops/object.ops"
+#line 477 "src/ops/object.ops"
     PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), CONST(3)->u.key, CONST(4)->u.string);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26581,7 +25353,7 @@
 opcode_t *
 Parrot_setattribute_p_s_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 511 "src/ops/object.ops"
+#line 493 "src/ops/object.ops"
     VTABLE_set_attr_str(interp, PREG(1), SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26589,7 +25361,7 @@
 opcode_t *
 Parrot_setattribute_p_sc_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 511 "src/ops/object.ops"
+#line 493 "src/ops/object.ops"
     VTABLE_set_attr_str(interp, PREG(1), CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26597,7 +25369,7 @@
 opcode_t *
 Parrot_setattribute_p_p_s_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 515 "src/ops/object.ops"
+#line 497 "src/ops/object.ops"
     VTABLE_set_attr_keyed(interp, PREG(1), PREG(2), SREG(3), PREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26605,7 +25377,7 @@
 opcode_t *
 Parrot_setattribute_p_pc_s_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 515 "src/ops/object.ops"
+#line 497 "src/ops/object.ops"
     VTABLE_set_attr_keyed(interp, PREG(1), CONST(2)->u.key, SREG(3), PREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26613,7 +25385,7 @@
 opcode_t *
 Parrot_setattribute_p_p_sc_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 515 "src/ops/object.ops"
+#line 497 "src/ops/object.ops"
     VTABLE_set_attr_keyed(interp, PREG(1), PREG(2), CONST(3)->u.string, PREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26621,7 +25393,7 @@
 opcode_t *
 Parrot_setattribute_p_pc_sc_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 515 "src/ops/object.ops"
+#line 497 "src/ops/object.ops"
     VTABLE_set_attr_keyed(interp, PREG(1), CONST(2)->u.key, CONST(3)->u.string, PREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26629,7 +25401,7 @@
 opcode_t *
 Parrot_inspect_p_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 533 "src/ops/object.ops"
+#line 515 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26637,7 +25409,7 @@
 opcode_t *
 Parrot_inspect_p_pc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 533 "src/ops/object.ops"
+#line 515 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect(interp, CONST(2)->u.key);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26645,7 +25417,7 @@
 opcode_t *
 Parrot_inspect_p_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 537 "src/ops/object.ops"
+#line 519 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect_str(interp, PREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26653,7 +25425,7 @@
 opcode_t *
 Parrot_inspect_p_pc_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 537 "src/ops/object.ops"
+#line 519 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect_str(interp, CONST(2)->u.key, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26661,7 +25433,7 @@
 opcode_t *
 Parrot_inspect_p_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 537 "src/ops/object.ops"
+#line 519 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect_str(interp, PREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26669,7 +25441,7 @@
 opcode_t *
 Parrot_inspect_p_pc_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-#line 537 "src/ops/object.ops"
+#line 519 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect_str(interp, CONST(2)->u.key, CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26686,14 +25458,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, PMCNULL);
     else {
-        const INTVAL type = pmc_type(interp, name);
+        const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new(interp, type);
+        PREG(1) = Parrot_pmc_new(interp, type);
     }
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26710,14 +25482,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, PMCNULL);
     else {
-        const INTVAL type = pmc_type(interp, name);
+        const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new(interp, type);
+        PREG(1) = Parrot_pmc_new(interp, type);
     }
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26734,14 +25506,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, PREG(3));
     else {
-        const INTVAL type = pmc_type(interp, name);
+        const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new_init(interp, type, PREG(3));
+        PREG(1) = Parrot_pmc_new_init(interp, type, PREG(3));
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26758,14 +25530,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, PREG(3));
     else {
-        const INTVAL type = pmc_type(interp, name);
+        const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new_init(interp, type, PREG(3));
+        PREG(1) = Parrot_pmc_new_init(interp, type, PREG(3));
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26782,14 +25554,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, CONST(3)->u.key);
     else {
-        const INTVAL type = pmc_type(interp, name);
+        const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new_init(interp, type, CONST(3)->u.key);
+        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3)->u.key);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26806,14 +25578,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, CONST(3)->u.key);
     else {
-        const INTVAL type = pmc_type(interp, name);
+        const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new_init(interp, type, CONST(3)->u.key);
+        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3)->u.key);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26828,14 +25600,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, PMCNULL);
     else {
-        const INTVAL type = pmc_type_p(interp, name_key);
+        const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new(interp, type);
+        PREG(1) = Parrot_pmc_new(interp, type);
     }
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26850,14 +25622,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, PMCNULL);
     else {
-        const INTVAL type = pmc_type_p(interp, name_key);
+        const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new(interp, type);
+        PREG(1) = Parrot_pmc_new(interp, type);
     }
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26872,14 +25644,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, PREG(3));
     else {
-        const INTVAL type = pmc_type_p(interp, name_key);
+        const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new_init(interp, type, PREG(3));
+        PREG(1) = Parrot_pmc_new_init(interp, type, PREG(3));
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26894,14 +25666,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, PREG(3));
     else {
-        const INTVAL type = pmc_type_p(interp, name_key);
+        const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new_init(interp, type, PREG(3));
+        PREG(1) = Parrot_pmc_new_init(interp, type, PREG(3));
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26916,14 +25688,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, CONST(3)->u.key);
     else {
-        const INTVAL type = pmc_type_p(interp, name_key);
+        const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new_init(interp, type, CONST(3)->u.key);
+        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3)->u.key);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26938,14 +25710,14 @@
     if (!PMC_IS_NULL(_class))
         PREG(1) = VTABLE_instantiate(interp, _class, CONST(3)->u.key);
     else {
-        const INTVAL type = pmc_type_p(interp, name_key);
+        const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
             return (opcode_t *)dest;
         }
-        PREG(1) = pmc_new_init(interp, type, CONST(3)->u.key);
+        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3)->u.key);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27606,7 +26378,7 @@
 Parrot_register_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 630 "src/ops/pmc.ops"
-    gc_register_pmc(interp, PREG(1));
+    Parrot_pmc_gc_register(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
 
@@ -27614,7 +26386,7 @@
 Parrot_unregister_p (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 634 "src/ops/pmc.ops"
-    gc_unregister_pmc(interp, PREG(1));
+    Parrot_pmc_gc_unregister(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
 
@@ -27622,7 +26394,7 @@
 Parrot_box_p_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 651 "src/ops/pmc.ops"
-    PREG(1) = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
+    PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
     VTABLE_set_integer_native(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27631,7 +26403,7 @@
 Parrot_box_p_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 651 "src/ops/pmc.ops"
-    PREG(1) = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
+    PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
     VTABLE_set_integer_native(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27640,7 +26412,7 @@
 Parrot_box_p_n (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 656 "src/ops/pmc.ops"
-    PREG(1) = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
     VTABLE_set_number_native(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27649,7 +26421,7 @@
 Parrot_box_p_nc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 656 "src/ops/pmc.ops"
-    PREG(1) = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
     VTABLE_set_number_native(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27658,7 +26430,7 @@
 Parrot_box_p_s (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 661 "src/ops/pmc.ops"
-    PREG(1) = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
+    PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
     VTABLE_set_string_native(interp, PREG(1), SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27667,7 +26439,7 @@
 Parrot_box_p_sc (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 661 "src/ops/pmc.ops"
-    PREG(1) = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
+    PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
     VTABLE_set_string_native(interp, PREG(1), CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -28618,7 +27390,7 @@
         memmove(PREG(1), clone, sizeof (PMC));
 
         /* don't let the clone's destruction destroy the destination's data */
-        PObj_active_destroy_CLEAR(clone);
+        PObj_custom_destroy_CLEAR(clone);
         PMC_data(clone)        = NULL;
         PMC_sync(clone)        = NULL;
         PMC_metadata(clone)    = NULL;
@@ -30608,6 +29380,8 @@
 Parrot_sizeof_i_i (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 317 "src/ops/sys.ops"
+INTVAL unused = PARROT_WARNINGS_test(interp,PARROT_WARNINGS_DEPRECATED_FLAG) &&
+  fprintf(stderr,"Warning: instruction 'sizeof' is deprecated\n");
     if (IREG(2) < enum_first_type || IREG(2) >= enum_last_type)
         IREG(1) = -1;
     else
@@ -30619,6 +29393,8 @@
 Parrot_sizeof_i_ic (opcode_t *cur_opcode, PARROT_INTERP)  {
     Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #line 317 "src/ops/sys.ops"
+INTVAL unused = PARROT_WARNINGS_test(interp,PARROT_WARNINGS_DEPRECATED_FLAG) &&
+  fprintf(stderr,"Warning: instruction 'sizeof' is deprecated\n");
     if (cur_opcode[2] < enum_first_type || cur_opcode[2] >= enum_last_type)
         IREG(1) = -1;
     else
@@ -31480,7 +30256,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31488,7 +30264,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31504,7 +30280,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31512,7 +30288,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31528,7 +30304,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31536,7 +30312,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31552,7 +30328,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31560,7 +30336,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31576,7 +30352,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -31584,7 +30360,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31600,7 +30376,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -31608,7 +30384,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31624,7 +30400,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -31632,7 +30408,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31648,7 +30424,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -31656,7 +30432,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31672,7 +30448,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31680,7 +30456,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31696,7 +30472,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31704,7 +30480,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31720,7 +30496,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31728,7 +30504,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31744,7 +30520,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31752,7 +30528,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31768,7 +30544,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -31776,7 +30552,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31792,7 +30568,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -31800,7 +30576,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31816,7 +30592,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -31824,7 +30600,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31840,7 +30616,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -31848,7 +30624,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31864,7 +30640,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31872,7 +30648,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31888,7 +30664,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31896,7 +30672,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31912,7 +30688,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31920,7 +30696,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31936,7 +30712,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -31944,7 +30720,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31960,7 +30736,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -31968,7 +30744,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -31984,7 +30760,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -31992,7 +30768,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -32008,7 +30784,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32016,7 +30792,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -32032,7 +30808,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32040,7 +30816,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
     }
 
@@ -32058,7 +30834,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32066,7 +30842,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
         VTABLE_set_pmc_keyed(interp, PREG(2), PREG(3), PREG(1));
     }
@@ -32085,7 +30861,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32093,7 +30869,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
         VTABLE_set_pmc_keyed(interp, CONST(2)->u.key, PREG(3), PREG(1));
     }
@@ -32112,7 +30888,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32120,7 +30896,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
         VTABLE_set_pmc_keyed(interp, PREG(2), CONST(3)->u.key, PREG(1));
     }
@@ -32139,7 +30915,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32147,7 +30923,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
         VTABLE_set_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key, PREG(1));
     }
@@ -32166,7 +30942,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32174,7 +30950,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
         VTABLE_set_pmc_keyed(interp, PREG(2), PREG(3), PREG(1));
     }
@@ -32193,7 +30969,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32201,7 +30977,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
         VTABLE_set_pmc_keyed(interp, CONST(2)->u.key, PREG(3), PREG(1));
     }
@@ -32220,7 +30996,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32228,7 +31004,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
         VTABLE_set_pmc_keyed(interp, PREG(2), CONST(3)->u.key, PREG(1));
     }
@@ -32247,7 +31023,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32255,7 +31031,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
         VTABLE_set_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key, PREG(1));
     }
@@ -32273,7 +31049,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32281,7 +31057,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_int(interp, PREG(2), IREG(3), PREG(1));
@@ -32300,7 +31076,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32308,7 +31084,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3), PREG(1));
@@ -32327,7 +31103,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32335,7 +31111,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_int(interp, PREG(2), cur_opcode[3], PREG(1));
@@ -32354,7 +31130,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32362,7 +31138,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3], PREG(1));
@@ -32381,7 +31157,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32389,7 +31165,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_int(interp, PREG(2), IREG(3), PREG(1));
@@ -32408,7 +31184,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32416,7 +31192,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3), PREG(1));
@@ -32435,7 +31211,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32443,7 +31219,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_int(interp, PREG(2), cur_opcode[3], PREG(1));
@@ -32462,7 +31238,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32470,7 +31246,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3], PREG(1));
@@ -32489,7 +31265,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32497,7 +31273,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_str(interp, PREG(2), SREG(3), PREG(1));
@@ -32516,7 +31292,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32524,7 +31300,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3), PREG(1));
@@ -32543,7 +31319,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32551,7 +31327,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string, PREG(1));
@@ -32570,7 +31346,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, PREG(4));
+            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,
@@ -32578,7 +31354,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string, PREG(1));
@@ -32597,7 +31373,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32605,7 +31381,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_str(interp, PREG(2), SREG(3), PREG(1));
@@ -32624,7 +31400,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32632,7 +31408,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3), PREG(1));
@@ -32651,7 +31427,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32659,7 +31435,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string, PREG(1));
@@ -32678,7 +31454,7 @@
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, CONST(4)->u.key);
+            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,
@@ -32686,7 +31462,7 @@
                 return (opcode_t *)dest;
             }
 
-            PREG(1) = pmc_new(interp, type);
+            PREG(1) = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string, PREG(1));
@@ -32694,13 +31470,13 @@
 
 return (opcode_t *)cur_opcode + 5;}
 
-#line 32648 "src/ops/core_ops.c"
+#line 31379 "src/ops/core_ops.c"
 
 /*
 ** Op lookup function:
 */
 
-#define NUM_OPS 1302
+#define NUM_OPS 1300
 
 #define OP_HASH_SIZE 3041
 
@@ -32720,14 +31496,14 @@
 } HOP;
 static HOP **hop;
 
-static void hop_init(void);
+static void hop_init(PARROT_INTERP);
 static size_t hash_str(const char *str);
-static void store_op(op_info_t *info, int full);
+static void store_op(PARROT_INTERP, op_info_t *info, int full);
 
 /* XXX on changing interpreters, this should be called,
    through a hook */
 
-static void hop_deinit(void);
+static void hop_deinit(PARROT_INTERP);
 
 /*
  * find a short or full opcode
@@ -32751,8 +31527,8 @@
     return key;
 }
 
-static void store_op(op_info_t *info, int full) {
-    HOP * const p     = mem_allocate_typed(HOP);
+static void store_op(PARROT_INTERP, op_info_t *info, int full) {
+    HOP * const p     = mem_gc_allocate_zeroed_typed(interp, HOP);
     const size_t hidx =
         hash_str(full ? info->full_name : info->name) % OP_HASH_SIZE;
 
@@ -32760,12 +31536,12 @@
     p->next   = hop[hidx];
     hop[hidx] = p;
 }
-static int get_op(const char * name, int full) {
+static int get_op(PARROT_INTERP, const char * name, int full) {
     const HOP * p;
     const size_t hidx = hash_str(name) % OP_HASH_SIZE;
     if (!hop) {
-        hop = mem_allocate_n_zeroed_typed(OP_HASH_SIZE,HOP *);
-        hop_init();
+        hop = mem_gc_allocate_n_zeroed_typed(interp, OP_HASH_SIZE,HOP *);
+        hop_init(interp);
     }
     for (p = hop[hidx]; p; p = p->next) {
         if(STREQ(name, full ? p->info->full_name : p->info->name))
@@ -32773,18 +31549,18 @@
     }
     return -1;
 }
-static void hop_init(void) {
+static void hop_init(PARROT_INTERP) {
     size_t i;
     op_info_t * const info = core_op_lib.op_info_table;
     /* store full names */
     for (i = 0; i < core_op_lib.op_count; i++)
-        store_op(info + i, 1);
+        store_op(interp, info + i, 1);
     /* plus one short name */
     for (i = 0; i < core_op_lib.op_count; i++)
-        if (get_op(info[i].name, 0) == -1)
-            store_op(info + i, 0);
+        if (get_op(interp, info[i].name, 0) == -1)
+            store_op(interp, info + i, 0);
 }
-static void hop_deinit(void)
+static void hop_deinit(PARROT_INTERP)
 {
     if (hop) {
         size_t i;
@@ -32792,7 +31568,7 @@
             HOP *p = hop[i];
             while (p) {
                 HOP * const next = p->next;
-                mem_sys_free(p);
+                mem_gc_free(interp, p);
                 p = next;
             }
         }
@@ -32802,11 +31578,11 @@
 }
 
 op_lib_t *
-Parrot_DynOp_core_2_0_0(long init) {
+Parrot_DynOp_core_2_1_0(PARROT_INTERP, long init) {
     /* initialize and return op_lib ptr */
     if (init == 1) {
 
-    return &core_op_lib;
+        return &core_op_lib;
     }
     /* set op_lib to the passed ptr (in init) */
     else if (init) {
@@ -32814,7 +31590,7 @@
     }
     /* deinit - free resources */
     else {
-    hop_deinit();
+        hop_deinit(interp);
     }
     return NULL;
 }

Modified: branches/ops_pct/src/ops/experimental.ops
==============================================================================
--- branches/ops_pct/src/ops/experimental.ops	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/ops/experimental.ops	Sun Mar  7 19:33:20 2010	(r44743)
@@ -98,7 +98,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -106,7 +106,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
     }
 }
@@ -118,7 +118,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -126,7 +126,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
     }
 }
@@ -138,7 +138,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -146,7 +146,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
     }
 }
@@ -175,7 +175,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -183,7 +183,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
         VTABLE_set_pmc_keyed(interp, $2, $3, $1);
     }
@@ -197,7 +197,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -205,7 +205,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_int(interp, $2, $3, $1);
@@ -220,7 +220,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -228,7 +228,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_str(interp, $2, $3, $1);

Modified: branches/ops_pct/src/ops/io.ops
==============================================================================
--- branches/ops_pct/src/ops/io.ops	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/ops/io.ops	Sun Mar  7 19:33:20 2010	(r44743)
@@ -54,7 +54,7 @@
 inline op fdopen(out PMC, in INT, in STR) :filesys_open {
     $1 = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)$2, $3);
     if (!$1)
-        $1 = pmc_new(interp, enum_class_Undef);
+        $1 = Parrot_pmc_new(interp, enum_class_Undef);
 }
 
 =item B<getstdin>(out PMC)

Modified: branches/ops_pct/src/ops/math.ops
==============================================================================
--- branches/ops_pct/src/ops/math.ops	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/ops/math.ops	Sun Mar  7 19:33:20 2010	(r44743)
@@ -205,7 +205,7 @@
 
     result = VTABLE_get_integer(interp, $2) % $3;
 
-    $1 = pmc_new(interp, VTABLE_type(interp, $2));
+    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
     VTABLE_set_integer_native(interp, $1, result);
 }
 
@@ -222,7 +222,7 @@
 
     result = VTABLE_get_integer(interp, $2) % value;
 
-    $1 = pmc_new(interp, VTABLE_type(interp, $2));
+    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
     VTABLE_set_integer_native(interp, $1, result);
 }
 
@@ -283,7 +283,7 @@
 
     result = fmod(VTABLE_get_integer(interp, $2), value);
 
-    $1 = pmc_new(interp, VTABLE_type(interp, $2));
+    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
     VTABLE_set_integer_native(interp, $1, (INTVAL) result);
 }
 
@@ -812,15 +812,35 @@
 }
 
 inline op pow(invar PMC, invar PMC, invar PMC) :base_core {
-    $1 = VTABLE_pow(interp, $2, $3, $1);
+    const FLOATVAL a = VTABLE_get_number(interp, $2);
+    const FLOATVAL b = VTABLE_get_number(interp, $3);
+    const FLOATVAL c = pow(a, b);
+    if (PMC_IS_NULL($1))
+        $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    else
+        $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
+    VTABLE_set_number_native(interp, $1, c);
 }
 
 inline op pow(invar PMC, invar PMC, in INT) :base_core {
-    $1 = VTABLE_pow_int(interp, $2, $3, $1);
+    const FLOATVAL a = VTABLE_get_number(interp, $2);
+    const FLOATVAL b = (FLOATVAL)$3;
+    const FLOATVAL c = pow(a, b);
+    if (PMC_IS_NULL($1))
+        $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    else
+        $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
+    VTABLE_set_number_native(interp, $1, c);
 }
 
 inline op pow(invar PMC, invar PMC, in NUM) :base_core {
-    $1 = VTABLE_pow_float(interp, $2, $3, $1);
+    const FLOATVAL a = VTABLE_get_number(interp, $2);
+    const FLOATVAL c = pow(a, $3);
+    if (PMC_IS_NULL($1))
+        $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    else
+        $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
+    VTABLE_set_number_native(interp, $1, c);
 }
 
 inline op pow(out NUM, in NUM, in INT) :base_core {

Modified: branches/ops_pct/src/ops/object.ops
==============================================================================
--- branches/ops_pct/src/ops/object.ops	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/ops/object.ops	Sun Mar  7 19:33:20 2010	(r44743)
@@ -138,15 +138,6 @@
     else {
         interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
         PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
-        /* Detach continuation from current CallContext to avoid marking dead object. */
-        /* RetContinuation will kill itself after invoke */
-        if (interp->current_cont->vtable->base_type == enum_class_RetContinuation
-            && Parrot_pcc_do_run_ops(interp, method_pmc)) {
-            PMC * const ctx             = CURRENT_CONTEXT(interp);
-            PMC * const parent_ctx      = Parrot_pcc_get_caller_ctx(interp, ctx);
-            PMC_cont(interp->current_cont)->from_ctx = parent_ctx;
-            Parrot_pcc_set_continuation(interp, ctx, PMCNULL);
-        }
         interp->current_object = object;
         dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
     }
@@ -162,15 +153,6 @@
 
     interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
     PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
-    /* Detach continuation from current CallContext to avoid marking dead object. */
-    /* RetContinuation will kill itself after invoke */
-    if (interp->current_cont->vtable->base_type == enum_class_RetContinuation
-        && Parrot_pcc_do_run_ops(interp, method_pmc)) {
-        PMC * const ctx             = CURRENT_CONTEXT(interp);
-        PMC * const parent_ctx      = Parrot_pcc_get_caller_ctx(interp, ctx);
-        PMC_cont(interp->current_cont)->from_ctx = parent_ctx;
-        Parrot_pcc_set_continuation(interp, ctx, PMCNULL);
-    }
 
     interp->current_object = object;
     dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
@@ -254,13 +236,13 @@
 =cut
 
 inline op newclass(out PMC, in STR) :object_classes {
-    PMC * const name = pmc_new(interp, enum_class_String);
+    PMC * const name = Parrot_pmc_new(interp, enum_class_String);
     VTABLE_set_string_native(interp, name, $2);
-    $1 = pmc_new_init(interp, enum_class_Class, name);
+    $1 = Parrot_pmc_new_init(interp, enum_class_Class, name);
 }
 
 inline op newclass(out PMC, in PMC) :object_classes {
-    $1 = pmc_new_init(interp, enum_class_Class, $2);
+    $1 = Parrot_pmc_new_init(interp, enum_class_Class, $2);
 }
 
 =item B<subclass>(out PMC, in PMC)
@@ -285,7 +267,7 @@
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, $2));
         goto ADDRESS(handler);
     }
-    $1 = pmc_new(interp, enum_class_Class);
+    $1 = Parrot_pmc_new(interp, enum_class_Class);
     VTABLE_add_parent(interp, $1, parent_class);
     goto ADDRESS(next);
 }
@@ -315,7 +297,7 @@
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, $2));
         goto ADDRESS(handler);
     }
-    $1 = pmc_new_init(interp, enum_class_Class, $3);
+    $1 = Parrot_pmc_new_init(interp, enum_class_Class, $3);
     VTABLE_add_parent(interp, $1, parent_class);
     goto ADDRESS(next);
 }
@@ -344,7 +326,7 @@
         goto ADDRESS(handler);
     }
 
-    $1 = pmc_new(interp, enum_class_Class);
+    $1 = Parrot_pmc_new(interp, enum_class_Class);
     VTABLE_add_parent(interp, $1, parent_class);
     goto ADDRESS(next);
 }
@@ -376,7 +358,7 @@
         goto ADDRESS(handler);
     }
 
-    $1 = pmc_new_init(interp, enum_class_Class, $3);
+    $1 = Parrot_pmc_new_init(interp, enum_class_Class, $3);
     VTABLE_add_parent(interp, $1, parent_class);
     goto ADDRESS(next);
 }

Modified: branches/ops_pct/src/ops/ops.num
==============================================================================
--- branches/ops_pct/src/ops/ops.num	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/ops/ops.num	Sun Mar  7 19:33:20 2010	(r44743)
@@ -26,1251 +26,1249 @@
 check_events                      3
 check_events__                    4
 wrapper__                         5
-prederef__                        6
-reserved_ic                       7
 ###DYNAMIC### other ops
-load_bytecode_s                   8
-load_bytecode_sc                  9
-load_language_s                  10
-load_language_sc                 11
-branch_i                         12
-branch_ic                        13
-local_branch_p_i                 14
-local_branch_p_ic                15
-local_return_p                   16
-jump_i                           17
-jump_ic                          18
-enternative                      19
-if_i_ic                          20
-if_n_ic                          21
-if_s_ic                          22
-if_p_ic                          23
-unless_i_ic                      24
-unless_n_ic                      25
-unless_s_ic                      26
-unless_p_ic                      27
-invokecc_p                       28
-invoke_p_p                       29
-yield                            30
-tailcall_p                       31
-returncc                         32
-capture_lex_p                    33
-newclosure_p_p                   34
-set_args_pc                      35
-get_results_pc                   36
-get_params_pc                    37
-set_returns_pc                   38
-result_info_p                    39
-set_addr_i_ic                    40
-set_addr_p_ic                    41
-set_addr_p_i                     42
-get_addr_i_p                     43
-schedule_p                       44
-addhandler_p                     45
-push_eh_ic                       46
-push_eh_p                        47
-pop_eh                           48
-throw_p                          49
-throw_p_p                        50
-rethrow_p                        51
-count_eh_i                       52
-die_s                            53
-die_sc                           54
-die_p                            55
-die_pc                           56
-die_i_i                          57
-die_ic_i                         58
-die_i_ic                         59
-die_ic_ic                        60
-exit_i                           61
-exit_ic                          62
-pushmark_i                       63
-pushmark_ic                      64
-popmark_i                        65
-popmark_ic                       66
-pushaction_p                     67
-debug_i                          68
-debug_ic                         69
-bounds_i                         70
-bounds_ic                        71
-profile_i                        72
-profile_ic                       73
-trace_i                          74
-trace_ic                         75
-gc_debug_i                       76
-gc_debug_ic                      77
-interpinfo_i_i                   78
-interpinfo_i_ic                  79
-interpinfo_p_i                   80
-interpinfo_p_ic                  81
-interpinfo_s_i                   82
-interpinfo_s_ic                  83
-warningson_i                     84
-warningson_ic                    85
-warningsoff_i                    86
-warningsoff_ic                   87
-errorson_i                       88
-errorson_ic                      89
-errorsoff_i                      90
-errorsoff_ic                     91
-runinterp_p_i                    92
-runinterp_p_ic                   93
-getinterp_p                      94
-sweep_ic                         95
-collect                          96
-sweepoff                         97
-sweepon                          98
-collectoff                       99
-collecton                       100
-needs_destroy_p                 101
-loadlib_p_s                     102
-loadlib_p_sc                    103
-dlfunc_p_p_s_s                  104
-dlfunc_p_p_sc_s                 105
-dlfunc_p_p_s_sc                 106
-dlfunc_p_p_sc_sc                107
-dlvar_p_p_s                     108
-dlvar_p_p_sc                    109
-compreg_s_p                     110
-compreg_sc_p                    111
-compreg_p_s                     112
-compreg_p_sc                    113
-new_callback_p_p_p_s            114
-new_callback_p_p_p_sc           115
-annotations_p                   116
-annotations_p_s                 117
-annotations_p_sc                118
-band_i_i                        119
-band_i_ic                       120
-band_p_i                        121
-band_p_ic                       122
-band_p_p                        123
-band_i_i_i                      124
-band_i_ic_i                     125
-band_i_i_ic                     126
-band_p_p_i                      127
-band_p_p_ic                     128
-band_p_p_p                      129
-bands_s_s                       130
-bands_s_sc                      131
-bands_p_s                       132
-bands_p_sc                      133
-bands_p_p                       134
-bands_s_s_s                     135
-bands_s_sc_s                    136
-bands_s_s_sc                    137
-bands_p_p_s                     138
-bands_p_p_sc                    139
-bands_p_p_p                     140
-bnot_i                          141
-bnot_i_i                        142
-bnot_p                          143
-bnot_p_p                        144
-bnots_s                         145
-bnots_s_s                       146
-bnots_s_sc                      147
-bnots_p                         148
-bnots_p_p                       149
-bor_i_i                         150
-bor_i_ic                        151
-bor_p_i                         152
-bor_p_ic                        153
-bor_p_p                         154
-bor_i_i_i                       155
-bor_i_ic_i                      156
-bor_i_i_ic                      157
-bor_p_p_i                       158
-bor_p_p_ic                      159
-bor_p_p_p                       160
-bors_s_s                        161
-bors_s_sc                       162
-bors_p_s                        163
-bors_p_sc                       164
-bors_p_p                        165
-bors_s_s_s                      166
-bors_s_sc_s                     167
-bors_s_s_sc                     168
-bors_p_p_s                      169
-bors_p_p_sc                     170
-bors_p_p_p                      171
-shl_i_i                         172
-shl_i_ic                        173
-shl_p_i                         174
-shl_p_ic                        175
-shl_p_p                         176
-shl_i_i_i                       177
-shl_i_ic_i                      178
-shl_i_i_ic                      179
-shl_p_p_i                       180
-shl_p_p_ic                      181
-shl_p_p_p                       182
-shr_i_i                         183
-shr_i_ic                        184
-shr_p_i                         185
-shr_p_ic                        186
-shr_p_p                         187
-shr_i_i_i                       188
-shr_i_ic_i                      189
-shr_i_i_ic                      190
-shr_p_p_i                       191
-shr_p_p_ic                      192
-shr_p_p_p                       193
-lsr_i_i                         194
-lsr_i_ic                        195
-lsr_p_i                         196
-lsr_p_ic                        197
-lsr_p_p                         198
-lsr_i_i_i                       199
-lsr_i_ic_i                      200
-lsr_i_i_ic                      201
-lsr_p_p_i                       202
-lsr_p_p_ic                      203
-lsr_p_p_p                       204
-rot_i_i_i_ic                    205
-rot_i_ic_i_ic                   206
-rot_i_i_ic_ic                   207
-bxor_i_i                        208
-bxor_i_ic                       209
-bxor_p_i                        210
-bxor_p_ic                       211
-bxor_p_p                        212
-bxor_i_i_i                      213
-bxor_i_ic_i                     214
-bxor_i_i_ic                     215
-bxor_p_p_i                      216
-bxor_p_p_ic                     217
-bxor_p_p_p                      218
-bxors_s_s                       219
-bxors_s_sc                      220
-bxors_p_s                       221
-bxors_p_sc                      222
-bxors_p_p                       223
-bxors_s_s_s                     224
-bxors_s_sc_s                    225
-bxors_s_s_sc                    226
-bxors_p_p_s                     227
-bxors_p_p_sc                    228
-bxors_p_p_p                     229
-eq_i_i_ic                       230
-eq_ic_i_ic                      231
-eq_i_ic_ic                      232
-eq_n_n_ic                       233
-eq_nc_n_ic                      234
-eq_n_nc_ic                      235
-eq_s_s_ic                       236
-eq_sc_s_ic                      237
-eq_s_sc_ic                      238
-eq_p_p_ic                       239
-eq_p_i_ic                       240
-eq_p_ic_ic                      241
-eq_p_n_ic                       242
-eq_p_nc_ic                      243
-eq_p_s_ic                       244
-eq_p_sc_ic                      245
-eq_str_p_p_ic                   246
-eq_num_p_p_ic                   247
-eq_addr_s_s_ic                  248
-eq_addr_sc_s_ic                 249
-eq_addr_s_sc_ic                 250
-eq_addr_sc_sc_ic                251
-eq_addr_p_p_ic                  252
-ne_i_i_ic                       253
-ne_ic_i_ic                      254
-ne_i_ic_ic                      255
-ne_n_n_ic                       256
-ne_nc_n_ic                      257
-ne_n_nc_ic                      258
-ne_s_s_ic                       259
-ne_sc_s_ic                      260
-ne_s_sc_ic                      261
-ne_p_p_ic                       262
-ne_p_i_ic                       263
-ne_p_ic_ic                      264
-ne_p_n_ic                       265
-ne_p_nc_ic                      266
-ne_p_s_ic                       267
-ne_p_sc_ic                      268
-ne_str_p_p_ic                   269
-ne_num_p_p_ic                   270
-ne_addr_s_s_ic                  271
-ne_addr_sc_s_ic                 272
-ne_addr_s_sc_ic                 273
-ne_addr_sc_sc_ic                274
-ne_addr_p_p_ic                  275
-lt_i_i_ic                       276
-lt_ic_i_ic                      277
-lt_i_ic_ic                      278
-lt_n_n_ic                       279
-lt_nc_n_ic                      280
-lt_n_nc_ic                      281
-lt_s_s_ic                       282
-lt_sc_s_ic                      283
-lt_s_sc_ic                      284
-lt_p_p_ic                       285
-lt_p_i_ic                       286
-lt_p_ic_ic                      287
-lt_p_n_ic                       288
-lt_p_nc_ic                      289
-lt_p_s_ic                       290
-lt_p_sc_ic                      291
-lt_str_p_p_ic                   292
-lt_num_p_p_ic                   293
-le_i_i_ic                       294
-le_ic_i_ic                      295
-le_i_ic_ic                      296
-le_n_n_ic                       297
-le_nc_n_ic                      298
-le_n_nc_ic                      299
-le_s_s_ic                       300
-le_sc_s_ic                      301
-le_s_sc_ic                      302
-le_p_p_ic                       303
-le_p_i_ic                       304
-le_p_ic_ic                      305
-le_p_n_ic                       306
-le_p_nc_ic                      307
-le_p_s_ic                       308
-le_p_sc_ic                      309
-le_str_p_p_ic                   310
-le_num_p_p_ic                   311
-gt_p_p_ic                       312
-gt_p_i_ic                       313
-gt_p_ic_ic                      314
-gt_p_n_ic                       315
-gt_p_nc_ic                      316
-gt_p_s_ic                       317
-gt_p_sc_ic                      318
-gt_str_p_p_ic                   319
-gt_num_p_p_ic                   320
-ge_p_p_ic                       321
-ge_p_i_ic                       322
-ge_p_ic_ic                      323
-ge_p_n_ic                       324
-ge_p_nc_ic                      325
-ge_p_s_ic                       326
-ge_p_sc_ic                      327
-ge_str_p_p_ic                   328
-ge_num_p_p_ic                   329
-if_null_p_ic                    330
-if_null_s_ic                    331
-unless_null_p_ic                332
-unless_null_s_ic                333
-cmp_i_i_i                       334
-cmp_i_ic_i                      335
-cmp_i_i_ic                      336
-cmp_i_n_n                       337
-cmp_i_nc_n                      338
-cmp_i_n_nc                      339
-cmp_i_s_s                       340
-cmp_i_sc_s                      341
-cmp_i_s_sc                      342
-cmp_i_p_p                       343
-cmp_i_p_i                       344
-cmp_i_p_ic                      345
-cmp_i_p_n                       346
-cmp_i_p_nc                      347
-cmp_i_p_s                       348
-cmp_i_p_sc                      349
-cmp_str_i_p_p                   350
-cmp_num_i_p_p                   351
-cmp_pmc_p_p_p                   352
-issame_i_p_p                    353
-issame_i_s_s                    354
-issame_i_sc_s                   355
-issame_i_s_sc                   356
-issame_i_sc_sc                  357
-isntsame_i_p_p                  358
-isntsame_i_s_s                  359
-isntsame_i_sc_s                 360
-isntsame_i_s_sc                 361
-isntsame_i_sc_sc                362
-istrue_i_p                      363
-isfalse_i_p                     364
-isnull_i_p                      365
-isnull_i_pc                     366
-isnull_i_s                      367
-isnull_i_sc                     368
-isgt_i_p_p                      369
-isge_i_p_p                      370
-isle_i_i_i                      371
-isle_i_ic_i                     372
-isle_i_i_ic                     373
-isle_i_n_n                      374
-isle_i_nc_n                     375
-isle_i_n_nc                     376
-isle_i_s_s                      377
-isle_i_sc_s                     378
-isle_i_s_sc                     379
-isle_i_p_p                      380
-islt_i_i_i                      381
-islt_i_ic_i                     382
-islt_i_i_ic                     383
-islt_i_n_n                      384
-islt_i_nc_n                     385
-islt_i_n_nc                     386
-islt_i_s_s                      387
-islt_i_sc_s                     388
-islt_i_s_sc                     389
-islt_i_p_p                      390
-iseq_i_i_i                      391
-iseq_i_ic_i                     392
-iseq_i_i_ic                     393
-iseq_i_n_n                      394
-iseq_i_nc_n                     395
-iseq_i_n_nc                     396
-iseq_i_s_s                      397
-iseq_i_sc_s                     398
-iseq_i_s_sc                     399
-iseq_i_p_p                      400
-isne_i_i_i                      401
-isne_i_ic_i                     402
-isne_i_i_ic                     403
-isne_i_n_n                      404
-isne_i_nc_n                     405
-isne_i_n_nc                     406
-isne_i_s_s                      407
-isne_i_sc_s                     408
-isne_i_s_sc                     409
-isne_i_p_p                      410
-and_i_i_i                       411
-and_i_ic_i                      412
-and_i_i_ic                      413
-and_p_p_p                       414
-not_i                           415
-not_i_i                         416
-not_p                           417
-not_p_p                         418
-or_i_i_i                        419
-or_i_ic_i                       420
-or_i_i_ic                       421
-or_p_p_p                        422
-xor_i_i_i                       423
-xor_i_ic_i                      424
-xor_i_i_ic                      425
-xor_p_p_p                       426
-debug_init                      427
-debug_load_sc                   428
-debug_break                     429
-debug_print                     430
-backtrace                       431
-getline_i                       432
-getfile_s                       433
-set_label_p_ic                  434
-get_label_i_p                   435
-close_p                         436
-fdopen_p_i_s                    437
-fdopen_p_ic_s                   438
-fdopen_p_i_sc                   439
-fdopen_p_ic_sc                  440
-getstdin_p                      441
-getstdout_p                     442
-getstderr_p                     443
-setstdin_p                      444
-setstdout_p                     445
-setstderr_p                     446
-open_p_s_s                      447
-open_p_sc_s                     448
-open_p_s_sc                     449
-open_p_sc_sc                    450
-open_p_s                        451
-open_p_sc                       452
-print_i                         453
-print_ic                        454
-print_n                         455
-print_nc                        456
-print_s                         457
-print_sc                        458
-print_p                         459
-say_i                           460
-say_ic                          461
-say_n                           462
-say_nc                          463
-say_s                           464
-say_sc                          465
-say_p                           466
-printerr_i                      467
-printerr_ic                     468
-printerr_n                      469
-printerr_nc                     470
-printerr_s                      471
-printerr_sc                     472
-printerr_p                      473
-print_p_i                       474
-print_p_ic                      475
-print_p_n                       476
-print_p_nc                      477
-print_p_s                       478
-print_p_sc                      479
-print_p_p                       480
-read_s_i                        481
-read_s_ic                       482
-read_s_p_i                      483
-read_s_p_ic                     484
-readline_s_p                    485
-peek_s                          486
-peek_s_p                        487
-stat_i_s_i                      488
-stat_i_sc_i                     489
-stat_i_s_ic                     490
-stat_i_sc_ic                    491
-stat_i_i_i                      492
-stat_i_ic_i                     493
-stat_i_i_ic                     494
-stat_i_ic_ic                    495
-seek_p_i_i                      496
-seek_p_ic_i                     497
-seek_p_i_ic                     498
-seek_p_ic_ic                    499
-seek_p_i_i_i                    500
-seek_p_ic_i_i                   501
-seek_p_i_ic_i                   502
-seek_p_ic_ic_i                  503
-seek_p_i_i_ic                   504
-seek_p_ic_i_ic                  505
-seek_p_i_ic_ic                  506
-seek_p_ic_ic_ic                 507
-tell_i_p                        508
-tell_i_i_p                      509
-abs_i                           510
-abs_n                           511
-abs_i_i                         512
-abs_n_n                         513
-abs_p                           514
-abs_p_p                         515
-add_i_i                         516
-add_i_ic                        517
-add_n_n                         518
-add_n_nc                        519
-add_p_p                         520
-add_p_i                         521
-add_p_ic                        522
-add_p_n                         523
-add_p_nc                        524
-add_i_i_i                       525
-add_i_ic_i                      526
-add_i_i_ic                      527
-add_n_n_n                       528
-add_n_nc_n                      529
-add_n_n_nc                      530
-add_p_p_p                       531
-add_p_p_i                       532
-add_p_p_ic                      533
-add_p_p_n                       534
-add_p_p_nc                      535
-cmod_i_i_i                      536
-cmod_i_ic_i                     537
-cmod_i_i_ic                     538
-cmod_p_p_i                      539
-cmod_p_p_ic                     540
-cmod_p_p_p                      541
-cmod_n_n_n                      542
-cmod_n_nc_n                     543
-cmod_n_n_nc                     544
-cmod_p_p_n                      545
-cmod_p_p_nc                     546
-dec_i                           547
-dec_n                           548
-dec_p                           549
-div_i_i                         550
-div_i_ic                        551
-div_n_n                         552
-div_n_nc                        553
-div_p_p                         554
-div_p_i                         555
-div_p_ic                        556
-div_p_n                         557
-div_p_nc                        558
-div_i_i_i                       559
-div_i_ic_i                      560
-div_i_i_ic                      561
-div_i_ic_ic                     562
-div_n_n_n                       563
-div_n_nc_n                      564
-div_n_n_nc                      565
-div_n_nc_nc                     566
-div_p_p_p                       567
-div_p_p_i                       568
-div_p_p_ic                      569
-div_p_p_n                       570
-div_p_p_nc                      571
-fdiv_i_i                        572
-fdiv_i_ic                       573
-fdiv_n_n                        574
-fdiv_n_nc                       575
-fdiv_p_p                        576
-fdiv_p_i                        577
-fdiv_p_ic                       578
-fdiv_p_n                        579
-fdiv_p_nc                       580
-fdiv_i_i_i                      581
-fdiv_i_ic_i                     582
-fdiv_i_i_ic                     583
-fdiv_n_n_n                      584
-fdiv_n_nc_n                     585
-fdiv_n_n_nc                     586
-fdiv_p_p_p                      587
-fdiv_p_p_i                      588
-fdiv_p_p_ic                     589
-fdiv_p_p_n                      590
-fdiv_p_p_nc                     591
-ceil_n                          592
-ceil_i_n                        593
-ceil_n_n                        594
-floor_n                         595
-floor_i_n                       596
-floor_n_n                       597
-inc_i                           598
-inc_n                           599
-inc_p                           600
-mod_i_i                         601
-mod_i_ic                        602
-mod_n_n                         603
-mod_n_nc                        604
-mod_p_p                         605
-mod_p_i                         606
-mod_p_ic                        607
-mod_p_n                         608
-mod_p_nc                        609
-mod_i_i_i                       610
-mod_i_ic_i                      611
-mod_i_i_ic                      612
-mod_n_n_n                       613
-mod_n_nc_n                      614
-mod_n_n_nc                      615
-mod_p_p_p                       616
-mod_p_p_i                       617
-mod_p_p_ic                      618
-mod_p_p_n                       619
-mod_p_p_nc                      620
-mul_i_i                         621
-mul_i_ic                        622
-mul_n_n                         623
-mul_n_nc                        624
-mul_p_p                         625
-mul_p_i                         626
-mul_p_ic                        627
-mul_p_n                         628
-mul_p_nc                        629
-mul_i_i_i                       630
-mul_i_ic_i                      631
-mul_i_i_ic                      632
-mul_n_n_n                       633
-mul_n_nc_n                      634
-mul_n_n_nc                      635
-mul_p_p_p                       636
-mul_p_p_i                       637
-mul_p_p_ic                      638
-mul_p_p_n                       639
-mul_p_p_nc                      640
-neg_i                           641
-neg_n                           642
-neg_p                           643
-neg_i_i                         644
-neg_n_n                         645
-neg_p_p                         646
-pow_n_n_n                       647
-pow_n_nc_n                      648
-pow_n_n_nc                      649
-pow_p_p_p                       650
-pow_p_p_i                       651
-pow_p_p_ic                      652
-pow_p_p_n                       653
-pow_p_p_nc                      654
-pow_n_n_i                       655
-pow_n_nc_i                      656
-pow_n_n_ic                      657
-pow_n_nc_ic                     658
-sub_i_i                         659
-sub_i_ic                        660
-sub_n_n                         661
-sub_n_nc                        662
-sub_p_p                         663
-sub_p_i                         664
-sub_p_ic                        665
-sub_p_n                         666
-sub_p_nc                        667
-sub_i_i_i                       668
-sub_i_ic_i                      669
-sub_i_i_ic                      670
-sub_n_n_n                       671
-sub_n_nc_n                      672
-sub_n_n_nc                      673
-sub_p_p_p                       674
-sub_p_p_i                       675
-sub_p_p_ic                      676
-sub_p_p_n                       677
-sub_p_p_nc                      678
-sqrt_n_n                        679
-acos_n_n                        680
-asec_n_n                        681
-asin_n_n                        682
-atan_n_n                        683
-atan_n_n_n                      684
-atan_n_nc_n                     685
-atan_n_n_nc                     686
-cos_n_n                         687
-cosh_n_n                        688
-exp_n_n                         689
-ln_n_n                          690
-log10_n_n                       691
-log2_n_n                        692
-sec_n_n                         693
-sech_n_n                        694
-sin_n_n                         695
-sinh_n_n                        696
-tan_n_n                         697
-tanh_n_n                        698
-gcd_i_i_i                       699
-gcd_i_ic_i                      700
-gcd_i_i_ic                      701
-lcm_i_i_i                       702
-lcm_i_ic_i                      703
-lcm_i_i_ic                      704
-fact_i_i                        705
-fact_n_i                        706
-callmethodcc_p_s                707
-callmethodcc_p_sc               708
-callmethodcc_p_p                709
-callmethod_p_s_p                710
-callmethod_p_sc_p               711
-callmethod_p_p_p                712
-tailcallmethod_p_s              713
-tailcallmethod_p_sc             714
-tailcallmethod_p_p              715
-addmethod_p_s_p                 716
-addmethod_p_sc_p                717
-can_i_p_s                       718
-can_i_p_sc                      719
-does_i_p_s                      720
-does_i_p_sc                     721
-does_i_p_p                      722
-does_i_p_pc                     723
-isa_i_p_s                       724
-isa_i_p_sc                      725
-isa_i_p_p                       726
-isa_i_p_pc                      727
-newclass_p_s                    728
-newclass_p_sc                   729
-newclass_p_p                    730
-newclass_p_pc                   731
-subclass_p_p                    732
-subclass_p_pc                   733
-subclass_p_p_s                  734
-subclass_p_pc_s                 735
-subclass_p_p_sc                 736
-subclass_p_pc_sc                737
-subclass_p_p_p                  738
-subclass_p_pc_p                 739
-subclass_p_p_pc                 740
-subclass_p_pc_pc                741
-subclass_p_s                    742
-subclass_p_sc                   743
-subclass_p_s_s                  744
-subclass_p_sc_s                 745
-subclass_p_s_sc                 746
-subclass_p_sc_sc                747
-subclass_p_s_p                  748
-subclass_p_sc_p                 749
-subclass_p_s_pc                 750
-subclass_p_sc_pc                751
-get_class_p_s                   752
-get_class_p_sc                  753
-get_class_p_p                   754
-get_class_p_pc                  755
-class_p_p                       756
-addparent_p_p                   757
-removeparent_p_p                758
-addrole_p_p                     759
-addattribute_p_s                760
-addattribute_p_sc               761
-removeattribute_p_s             762
-removeattribute_p_sc            763
-getattribute_p_p_s              764
-getattribute_p_p_sc             765
-getattribute_p_p_p_s            766
-getattribute_p_p_pc_s           767
-getattribute_p_p_p_sc           768
-getattribute_p_p_pc_sc          769
-setattribute_p_s_p              770
-setattribute_p_sc_p             771
-setattribute_p_p_s_p            772
-setattribute_p_pc_s_p           773
-setattribute_p_p_sc_p           774
-setattribute_p_pc_sc_p          775
-inspect_p_p                     776
-inspect_p_pc                    777
-inspect_p_p_s                   778
-inspect_p_pc_s                  779
-inspect_p_p_sc                  780
-inspect_p_pc_sc                 781
-new_p_s                         782
-new_p_sc                        783
-new_p_s_p                       784
-new_p_sc_p                      785
-new_p_s_pc                      786
-new_p_sc_pc                     787
-new_p_p                         788
-new_p_pc                        789
-new_p_p_p                       790
-new_p_pc_p                      791
-new_p_p_pc                      792
-new_p_pc_pc                     793
-root_new_p_p                    794
-root_new_p_pc                   795
-root_new_p_p_p                  796
-root_new_p_pc_p                 797
-root_new_p_p_pc                 798
-root_new_p_pc_pc                799
-typeof_s_p                      800
-typeof_p_p                      801
-get_repr_s_p                    802
-find_method_p_p_s               803
-find_method_p_p_sc              804
-defined_i_p                     805
-defined_i_p_ki                  806
-defined_i_p_kic                 807
-defined_i_p_k                   808
-defined_i_p_kc                  809
-exists_i_p_ki                   810
-exists_i_p_kic                  811
-exists_i_p_k                    812
-exists_i_p_kc                   813
-delete_p_k                      814
-delete_p_kc                     815
-delete_p_ki                     816
-delete_p_kic                    817
-elements_i_p                    818
-push_p_i                        819
-push_p_ic                       820
-push_p_n                        821
-push_p_nc                       822
-push_p_s                        823
-push_p_sc                       824
-push_p_p                        825
-pop_i_p                         826
-pop_n_p                         827
-pop_s_p                         828
-pop_p_p                         829
-unshift_p_i                     830
-unshift_p_ic                    831
-unshift_p_n                     832
-unshift_p_nc                    833
-unshift_p_s                     834
-unshift_p_sc                    835
-unshift_p_p                     836
-shift_i_p                       837
-shift_n_p                       838
-shift_s_p                       839
-shift_p_p                       840
-splice_p_p_i_i                  841
-splice_p_p_ic_i                 842
-splice_p_p_i_ic                 843
-splice_p_p_ic_ic                844
-setprop_p_s_p                   845
-setprop_p_sc_p                  846
-getprop_p_s_p                   847
-getprop_p_sc_p                  848
-delprop_p_s                     849
-delprop_p_sc                    850
-prophash_p_p                    851
-freeze_s_p                      852
-thaw_p_s                        853
-thaw_p_sc                       854
-add_multi_s_s_p                 855
-add_multi_sc_s_p                856
-add_multi_s_sc_p                857
-add_multi_sc_sc_p               858
-find_multi_p_s_s                859
-find_multi_p_sc_s               860
-find_multi_p_s_sc               861
-find_multi_p_sc_sc              862
-register_p                      863
-unregister_p                    864
-box_p_i                         865
-box_p_ic                        866
-box_p_n                         867
-box_p_nc                        868
-box_p_s                         869
-box_p_sc                        870
-iter_p_p                        871
-morph_p_p                       872
-morph_p_pc                      873
-clone_s_s                       874
-clone_s_sc                      875
-exchange_i_i                    876
-exchange_p_p                    877
-exchange_n_n                    878
-exchange_s_s                    879
-set_i_i                         880
-set_i_ic                        881
-set_i_n                         882
-set_i_nc                        883
-set_i_s                         884
-set_i_sc                        885
-set_n_n                         886
-set_n_nc                        887
-set_n_i                         888
-set_n_ic                        889
-set_n_s                         890
-set_n_sc                        891
-set_n_p                         892
-set_s_p                         893
-set_s_s                         894
-set_s_sc                        895
-set_s_i                         896
-set_s_ic                        897
-set_s_n                         898
-set_s_nc                        899
-set_p_pc                        900
-set_p_p                         901
-set_p_i                         902
-set_p_ic                        903
-set_p_n                         904
-set_p_nc                        905
-set_p_s                         906
-set_p_sc                        907
-set_i_p                         908
-assign_p_p                      909
-assign_p_i                      910
-assign_p_ic                     911
-assign_p_n                      912
-assign_p_nc                     913
-assign_p_s                      914
-assign_p_sc                     915
-assign_s_s                      916
-assign_s_sc                     917
-setref_p_p                      918
-deref_p_p                       919
-setp_ind_i_p                    920
-setp_ind_ic_p                   921
-setn_ind_i_n                    922
-setn_ind_ic_n                   923
-setn_ind_i_nc                   924
-setn_ind_ic_nc                  925
-sets_ind_i_s                    926
-sets_ind_ic_s                   927
-sets_ind_i_sc                   928
-sets_ind_ic_sc                  929
-seti_ind_i_i                    930
-seti_ind_ic_i                   931
-seti_ind_i_ic                   932
-seti_ind_ic_ic                  933
-set_p_ki_i                      934
-set_p_kic_i                     935
-set_p_ki_ic                     936
-set_p_kic_ic                    937
-set_p_ki_n                      938
-set_p_kic_n                     939
-set_p_ki_nc                     940
-set_p_kic_nc                    941
-set_p_ki_s                      942
-set_p_kic_s                     943
-set_p_ki_sc                     944
-set_p_kic_sc                    945
-set_p_ki_p                      946
-set_p_kic_p                     947
-set_i_p_ki                      948
-set_i_p_kic                     949
-set_n_p_ki                      950
-set_n_p_kic                     951
-set_s_p_ki                      952
-set_s_p_kic                     953
-set_p_p_ki                      954
-set_p_p_kic                     955
-set_p_k_i                       956
-set_p_kc_i                      957
-set_p_k_ic                      958
-set_p_kc_ic                     959
-set_p_k_n                       960
-set_p_kc_n                      961
-set_p_k_nc                      962
-set_p_kc_nc                     963
-set_p_k_s                       964
-set_p_kc_s                      965
-set_p_k_sc                      966
-set_p_kc_sc                     967
-set_p_k_p                       968
-set_p_kc_p                      969
-set_i_p_k                       970
-set_i_p_kc                      971
-set_n_p_k                       972
-set_n_p_kc                      973
-set_s_p_k                       974
-set_s_p_kc                      975
-set_p_p_k                       976
-set_p_p_kc                      977
-clone_p_p                       978
-clone_p_p_p                     979
-clone_p_p_pc                    980
-copy_p_p                        981
-null_s                          982
-null_i                          983
-null_p                          984
-null_n                          985
-cleari                          986
-clearn                          987
-clears                          988
-clearp                          989
-ord_i_s                         990
-ord_i_sc                        991
-ord_i_s_i                       992
-ord_i_sc_i                      993
-ord_i_s_ic                      994
-ord_i_sc_ic                     995
-chr_s_i                         996
-chr_s_ic                        997
-chopn_s_i                       998
-chopn_s_ic                      999
-chopn_s_s_i                    1000
-chopn_s_sc_i                   1001
-chopn_s_s_ic                   1002
-chopn_s_sc_ic                  1003
-concat_s_s                     1004
-concat_s_sc                    1005
-concat_p_p                     1006
-concat_p_s                     1007
-concat_p_sc                    1008
-concat_s_s_s                   1009
-concat_s_sc_s                  1010
-concat_s_s_sc                  1011
-concat_p_p_s                   1012
-concat_p_p_sc                  1013
-concat_p_p_p                   1014
-repeat_s_s_i                   1015
-repeat_s_sc_i                  1016
-repeat_s_s_ic                  1017
-repeat_s_sc_ic                 1018
-repeat_p_p_i                   1019
-repeat_p_p_ic                  1020
-repeat_p_p_p                   1021
-repeat_p_i                     1022
-repeat_p_ic                    1023
-repeat_p_p                     1024
-length_i_s                     1025
-length_i_sc                    1026
-bytelength_i_s                 1027
-bytelength_i_sc                1028
-pin_s                          1029
-unpin_s                        1030
-substr_s_s_i                   1031
-substr_s_sc_i                  1032
-substr_s_s_ic                  1033
-substr_s_sc_ic                 1034
-substr_s_s_i_i                 1035
-substr_s_sc_i_i                1036
-substr_s_s_ic_i                1037
-substr_s_sc_ic_i               1038
-substr_s_s_i_ic                1039
-substr_s_sc_i_ic               1040
-substr_s_s_ic_ic               1041
-substr_s_sc_ic_ic              1042
-substr_s_s_i_i_s               1043
-substr_s_s_ic_i_s              1044
-substr_s_s_i_ic_s              1045
-substr_s_s_ic_ic_s             1046
-substr_s_s_i_i_sc              1047
-substr_s_s_ic_i_sc             1048
-substr_s_s_i_ic_sc             1049
-substr_s_s_ic_ic_sc            1050
-substr_s_i_i_s                 1051
-substr_s_ic_i_s                1052
-substr_s_i_ic_s                1053
-substr_s_ic_ic_s               1054
-substr_s_i_i_sc                1055
-substr_s_ic_i_sc               1056
-substr_s_i_ic_sc               1057
-substr_s_ic_ic_sc              1058
-substr_s_p_i_i                 1059
-substr_s_p_ic_i                1060
-substr_s_p_i_ic                1061
-substr_s_p_ic_ic               1062
-index_i_s_s                    1063
-index_i_sc_s                   1064
-index_i_s_sc                   1065
-index_i_sc_sc                  1066
-index_i_s_s_i                  1067
-index_i_sc_s_i                 1068
-index_i_s_sc_i                 1069
-index_i_sc_sc_i                1070
-index_i_s_s_ic                 1071
-index_i_sc_s_ic                1072
-index_i_s_sc_ic                1073
-index_i_sc_sc_ic               1074
-sprintf_s_s_p                  1075
-sprintf_s_sc_p                 1076
-sprintf_p_p_p                  1077
-new_s                          1078
-new_s_i                        1079
-new_s_ic                       1080
-stringinfo_i_s_i               1081
-stringinfo_i_sc_i              1082
-stringinfo_i_s_ic              1083
-stringinfo_i_sc_ic             1084
-upcase_s_s                     1085
-upcase_s_sc                    1086
-upcase_s                       1087
-downcase_s_s                   1088
-downcase_s_sc                  1089
-downcase_s                     1090
-titlecase_s_s                  1091
-titlecase_s_sc                 1092
-titlecase_s                    1093
-join_s_s_p                     1094
-join_s_sc_p                    1095
-split_p_s_s                    1096
-split_p_sc_s                   1097
-split_p_s_sc                   1098
-split_p_sc_sc                  1099
-charset_i_s                    1100
-charset_i_sc                   1101
-charsetname_s_i                1102
-charsetname_s_ic               1103
-find_charset_i_s               1104
-find_charset_i_sc              1105
-trans_charset_s_i              1106
-trans_charset_s_ic             1107
-trans_charset_s_s_i            1108
-trans_charset_s_sc_i           1109
-trans_charset_s_s_ic           1110
-trans_charset_s_sc_ic          1111
-encoding_i_s                   1112
-encoding_i_sc                  1113
-encodingname_s_i               1114
-encodingname_s_ic              1115
-find_encoding_i_s              1116
-find_encoding_i_sc             1117
-trans_encoding_s_i             1118
-trans_encoding_s_ic            1119
-trans_encoding_s_s_i           1120
-trans_encoding_s_sc_i          1121
-trans_encoding_s_s_ic          1122
-trans_encoding_s_sc_ic         1123
-is_cclass_i_i_s_i              1124
-is_cclass_i_ic_s_i             1125
-is_cclass_i_i_sc_i             1126
-is_cclass_i_ic_sc_i            1127
-is_cclass_i_i_s_ic             1128
-is_cclass_i_ic_s_ic            1129
-is_cclass_i_i_sc_ic            1130
-is_cclass_i_ic_sc_ic           1131
-find_cclass_i_i_s_i_i          1132
-find_cclass_i_ic_s_i_i         1133
-find_cclass_i_i_sc_i_i         1134
-find_cclass_i_ic_sc_i_i        1135
-find_cclass_i_i_s_ic_i         1136
-find_cclass_i_ic_s_ic_i        1137
-find_cclass_i_i_sc_ic_i        1138
-find_cclass_i_ic_sc_ic_i       1139
-find_cclass_i_i_s_i_ic         1140
-find_cclass_i_ic_s_i_ic        1141
-find_cclass_i_i_sc_i_ic        1142
-find_cclass_i_ic_sc_i_ic       1143
-find_cclass_i_i_s_ic_ic        1144
-find_cclass_i_ic_s_ic_ic       1145
-find_cclass_i_i_sc_ic_ic       1146
-find_cclass_i_ic_sc_ic_ic      1147
-find_not_cclass_i_i_s_i_i      1148
-find_not_cclass_i_ic_s_i_i     1149
-find_not_cclass_i_i_sc_i_i     1150
-find_not_cclass_i_ic_sc_i_i    1151
-find_not_cclass_i_i_s_ic_i     1152
-find_not_cclass_i_ic_s_ic_i    1153
-find_not_cclass_i_i_sc_ic_i    1154
-find_not_cclass_i_ic_sc_ic_i   1155
-find_not_cclass_i_i_s_i_ic     1156
-find_not_cclass_i_ic_s_i_ic    1157
-find_not_cclass_i_i_sc_i_ic    1158
-find_not_cclass_i_ic_sc_i_ic   1159
-find_not_cclass_i_i_s_ic_ic    1160
-find_not_cclass_i_ic_s_ic_ic   1161
-find_not_cclass_i_i_sc_ic_ic   1162
-find_not_cclass_i_ic_sc_ic_ic  1163
-escape_s_s                     1164
-compose_s_s                    1165
-compose_s_sc                   1166
-spawnw_i_s                     1167
-spawnw_i_sc                    1168
-spawnw_i_p                     1169
-err_i                          1170
-err_s                          1171
-err_s_i                        1172
-err_s_ic                       1173
-time_i                         1174
-time_n                         1175
-gmtime_s_i                     1176
-gmtime_s_ic                    1177
-localtime_s_i                  1178
-localtime_s_ic                 1179
-decodetime_p_i                 1180
-decodetime_p_ic                1181
-decodelocaltime_p_i            1182
-decodelocaltime_p_ic           1183
-sysinfo_s_i                    1184
-sysinfo_s_ic                   1185
-sysinfo_i_i                    1186
-sysinfo_i_ic                   1187
-sleep_i                        1188
-sleep_ic                       1189
-sleep_n                        1190
-sleep_nc                       1191
-sizeof_i_i                     1192
-sizeof_i_ic                    1193
-store_lex_s_p                  1194
-store_lex_sc_p                 1195
-store_dynamic_lex_s_p          1196
-store_dynamic_lex_sc_p         1197
-find_lex_p_s                   1198
-find_lex_p_sc                  1199
-find_dynamic_lex_p_s           1200
-find_dynamic_lex_p_sc          1201
-find_caller_lex_p_s            1202
-find_caller_lex_p_sc           1203
-get_namespace_p                1204
-get_namespace_p_p              1205
-get_namespace_p_pc             1206
-get_hll_namespace_p            1207
-get_hll_namespace_p_p          1208
-get_hll_namespace_p_pc         1209
-get_root_namespace_p           1210
-get_root_namespace_p_p         1211
-get_root_namespace_p_pc        1212
-get_global_p_s                 1213
-get_global_p_sc                1214
-get_global_p_p_s               1215
-get_global_p_pc_s              1216
-get_global_p_p_sc              1217
-get_global_p_pc_sc             1218
-get_hll_global_p_s             1219
-get_hll_global_p_sc            1220
-get_hll_global_p_p_s           1221
-get_hll_global_p_pc_s          1222
-get_hll_global_p_p_sc          1223
-get_hll_global_p_pc_sc         1224
-get_root_global_p_s            1225
-get_root_global_p_sc           1226
-get_root_global_p_p_s          1227
-get_root_global_p_pc_s         1228
-get_root_global_p_p_sc         1229
-get_root_global_p_pc_sc        1230
-set_global_s_p                 1231
-set_global_sc_p                1232
-set_global_p_s_p               1233
-set_global_pc_s_p              1234
-set_global_p_sc_p              1235
-set_global_pc_sc_p             1236
-set_hll_global_s_p             1237
-set_hll_global_sc_p            1238
-set_hll_global_p_s_p           1239
-set_hll_global_pc_s_p          1240
-set_hll_global_p_sc_p          1241
-set_hll_global_pc_sc_p         1242
-set_root_global_s_p            1243
-set_root_global_sc_p           1244
-set_root_global_p_s_p          1245
-set_root_global_pc_s_p         1246
-set_root_global_p_sc_p         1247
-set_root_global_pc_sc_p        1248
-find_name_p_s                  1249
-find_name_p_sc                 1250
-find_sub_not_null_p_s          1251
-find_sub_not_null_p_sc         1252
+load_bytecode_s                   6
+load_bytecode_sc                  7
+load_language_s                   8
+load_language_sc                  9
+branch_i                         10
+branch_ic                        11
+local_branch_p_i                 12
+local_branch_p_ic                13
+local_return_p                   14
+jump_i                           15
+jump_ic                          16
+enternative                      17
+if_i_ic                          18
+if_n_ic                          19
+if_s_ic                          20
+if_p_ic                          21
+unless_i_ic                      22
+unless_n_ic                      23
+unless_s_ic                      24
+unless_p_ic                      25
+invokecc_p                       26
+invoke_p_p                       27
+yield                            28
+tailcall_p                       29
+returncc                         30
+capture_lex_p                    31
+newclosure_p_p                   32
+set_args_pc                      33
+get_results_pc                   34
+get_params_pc                    35
+set_returns_pc                   36
+result_info_p                    37
+set_addr_i_ic                    38
+set_addr_p_ic                    39
+set_addr_p_i                     40
+get_addr_i_p                     41
+schedule_p                       42
+addhandler_p                     43
+push_eh_ic                       44
+push_eh_p                        45
+pop_eh                           46
+throw_p                          47
+throw_p_p                        48
+rethrow_p                        49
+count_eh_i                       50
+die_s                            51
+die_sc                           52
+die_p                            53
+die_pc                           54
+die_i_i                          55
+die_ic_i                         56
+die_i_ic                         57
+die_ic_ic                        58
+exit_i                           59
+exit_ic                          60
+pushmark_i                       61
+pushmark_ic                      62
+popmark_i                        63
+popmark_ic                       64
+pushaction_p                     65
+debug_i                          66
+debug_ic                         67
+bounds_i                         68
+bounds_ic                        69
+profile_i                        70
+profile_ic                       71
+trace_i                          72
+trace_ic                         73
+gc_debug_i                       74
+gc_debug_ic                      75
+interpinfo_i_i                   76
+interpinfo_i_ic                  77
+interpinfo_p_i                   78
+interpinfo_p_ic                  79
+interpinfo_s_i                   80
+interpinfo_s_ic                  81
+warningson_i                     82
+warningson_ic                    83
+warningsoff_i                    84
+warningsoff_ic                   85
+errorson_i                       86
+errorson_ic                      87
+errorsoff_i                      88
+errorsoff_ic                     89
+runinterp_p_i                    90
+runinterp_p_ic                   91
+getinterp_p                      92
+sweep_ic                         93
+collect                          94
+sweepoff                         95
+sweepon                          96
+collectoff                       97
+collecton                        98
+needs_destroy_p                  99
+loadlib_p_s                     100
+loadlib_p_sc                    101
+dlfunc_p_p_s_s                  102
+dlfunc_p_p_sc_s                 103
+dlfunc_p_p_s_sc                 104
+dlfunc_p_p_sc_sc                105
+dlvar_p_p_s                     106
+dlvar_p_p_sc                    107
+compreg_s_p                     108
+compreg_sc_p                    109
+compreg_p_s                     110
+compreg_p_sc                    111
+new_callback_p_p_p_s            112
+new_callback_p_p_p_sc           113
+annotations_p                   114
+annotations_p_s                 115
+annotations_p_sc                116
+band_i_i                        117
+band_i_ic                       118
+band_p_i                        119
+band_p_ic                       120
+band_p_p                        121
+band_i_i_i                      122
+band_i_ic_i                     123
+band_i_i_ic                     124
+band_p_p_i                      125
+band_p_p_ic                     126
+band_p_p_p                      127
+bands_s_s                       128
+bands_s_sc                      129
+bands_p_s                       130
+bands_p_sc                      131
+bands_p_p                       132
+bands_s_s_s                     133
+bands_s_sc_s                    134
+bands_s_s_sc                    135
+bands_p_p_s                     136
+bands_p_p_sc                    137
+bands_p_p_p                     138
+bnot_i                          139
+bnot_i_i                        140
+bnot_p                          141
+bnot_p_p                        142
+bnots_s                         143
+bnots_s_s                       144
+bnots_s_sc                      145
+bnots_p                         146
+bnots_p_p                       147
+bor_i_i                         148
+bor_i_ic                        149
+bor_p_i                         150
+bor_p_ic                        151
+bor_p_p                         152
+bor_i_i_i                       153
+bor_i_ic_i                      154
+bor_i_i_ic                      155
+bor_p_p_i                       156
+bor_p_p_ic                      157
+bor_p_p_p                       158
+bors_s_s                        159
+bors_s_sc                       160
+bors_p_s                        161
+bors_p_sc                       162
+bors_p_p                        163
+bors_s_s_s                      164
+bors_s_sc_s                     165
+bors_s_s_sc                     166
+bors_p_p_s                      167
+bors_p_p_sc                     168
+bors_p_p_p                      169
+shl_i_i                         170
+shl_i_ic                        171
+shl_p_i                         172
+shl_p_ic                        173
+shl_p_p                         174
+shl_i_i_i                       175
+shl_i_ic_i                      176
+shl_i_i_ic                      177
+shl_p_p_i                       178
+shl_p_p_ic                      179
+shl_p_p_p                       180
+shr_i_i                         181
+shr_i_ic                        182
+shr_p_i                         183
+shr_p_ic                        184
+shr_p_p                         185
+shr_i_i_i                       186
+shr_i_ic_i                      187
+shr_i_i_ic                      188
+shr_p_p_i                       189
+shr_p_p_ic                      190
+shr_p_p_p                       191
+lsr_i_i                         192
+lsr_i_ic                        193
+lsr_p_i                         194
+lsr_p_ic                        195
+lsr_p_p                         196
+lsr_i_i_i                       197
+lsr_i_ic_i                      198
+lsr_i_i_ic                      199
+lsr_p_p_i                       200
+lsr_p_p_ic                      201
+lsr_p_p_p                       202
+rot_i_i_i_ic                    203
+rot_i_ic_i_ic                   204
+rot_i_i_ic_ic                   205
+bxor_i_i                        206
+bxor_i_ic                       207
+bxor_p_i                        208
+bxor_p_ic                       209
+bxor_p_p                        210
+bxor_i_i_i                      211
+bxor_i_ic_i                     212
+bxor_i_i_ic                     213
+bxor_p_p_i                      214
+bxor_p_p_ic                     215
+bxor_p_p_p                      216
+bxors_s_s                       217
+bxors_s_sc                      218
+bxors_p_s                       219
+bxors_p_sc                      220
+bxors_p_p                       221
+bxors_s_s_s                     222
+bxors_s_sc_s                    223
+bxors_s_s_sc                    224
+bxors_p_p_s                     225
+bxors_p_p_sc                    226
+bxors_p_p_p                     227
+eq_i_i_ic                       228
+eq_ic_i_ic                      229
+eq_i_ic_ic                      230
+eq_n_n_ic                       231
+eq_nc_n_ic                      232
+eq_n_nc_ic                      233
+eq_s_s_ic                       234
+eq_sc_s_ic                      235
+eq_s_sc_ic                      236
+eq_p_p_ic                       237
+eq_p_i_ic                       238
+eq_p_ic_ic                      239
+eq_p_n_ic                       240
+eq_p_nc_ic                      241
+eq_p_s_ic                       242
+eq_p_sc_ic                      243
+eq_str_p_p_ic                   244
+eq_num_p_p_ic                   245
+eq_addr_s_s_ic                  246
+eq_addr_sc_s_ic                 247
+eq_addr_s_sc_ic                 248
+eq_addr_sc_sc_ic                249
+eq_addr_p_p_ic                  250
+ne_i_i_ic                       251
+ne_ic_i_ic                      252
+ne_i_ic_ic                      253
+ne_n_n_ic                       254
+ne_nc_n_ic                      255
+ne_n_nc_ic                      256
+ne_s_s_ic                       257
+ne_sc_s_ic                      258
+ne_s_sc_ic                      259
+ne_p_p_ic                       260
+ne_p_i_ic                       261
+ne_p_ic_ic                      262
+ne_p_n_ic                       263
+ne_p_nc_ic                      264
+ne_p_s_ic                       265
+ne_p_sc_ic                      266
+ne_str_p_p_ic                   267
+ne_num_p_p_ic                   268
+ne_addr_s_s_ic                  269
+ne_addr_sc_s_ic                 270
+ne_addr_s_sc_ic                 271
+ne_addr_sc_sc_ic                272
+ne_addr_p_p_ic                  273
+lt_i_i_ic                       274
+lt_ic_i_ic                      275
+lt_i_ic_ic                      276
+lt_n_n_ic                       277
+lt_nc_n_ic                      278
+lt_n_nc_ic                      279
+lt_s_s_ic                       280
+lt_sc_s_ic                      281
+lt_s_sc_ic                      282
+lt_p_p_ic                       283
+lt_p_i_ic                       284
+lt_p_ic_ic                      285
+lt_p_n_ic                       286
+lt_p_nc_ic                      287
+lt_p_s_ic                       288
+lt_p_sc_ic                      289
+lt_str_p_p_ic                   290
+lt_num_p_p_ic                   291
+le_i_i_ic                       292
+le_ic_i_ic                      293
+le_i_ic_ic                      294
+le_n_n_ic                       295
+le_nc_n_ic                      296
+le_n_nc_ic                      297
+le_s_s_ic                       298
+le_sc_s_ic                      299
+le_s_sc_ic                      300
+le_p_p_ic                       301
+le_p_i_ic                       302
+le_p_ic_ic                      303
+le_p_n_ic                       304
+le_p_nc_ic                      305
+le_p_s_ic                       306
+le_p_sc_ic                      307
+le_str_p_p_ic                   308
+le_num_p_p_ic                   309
+gt_p_p_ic                       310
+gt_p_i_ic                       311
+gt_p_ic_ic                      312
+gt_p_n_ic                       313
+gt_p_nc_ic                      314
+gt_p_s_ic                       315
+gt_p_sc_ic                      316
+gt_str_p_p_ic                   317
+gt_num_p_p_ic                   318
+ge_p_p_ic                       319
+ge_p_i_ic                       320
+ge_p_ic_ic                      321
+ge_p_n_ic                       322
+ge_p_nc_ic                      323
+ge_p_s_ic                       324
+ge_p_sc_ic                      325
+ge_str_p_p_ic                   326
+ge_num_p_p_ic                   327
+if_null_p_ic                    328
+if_null_s_ic                    329
+unless_null_p_ic                330
+unless_null_s_ic                331
+cmp_i_i_i                       332
+cmp_i_ic_i                      333
+cmp_i_i_ic                      334
+cmp_i_n_n                       335
+cmp_i_nc_n                      336
+cmp_i_n_nc                      337
+cmp_i_s_s                       338
+cmp_i_sc_s                      339
+cmp_i_s_sc                      340
+cmp_i_p_p                       341
+cmp_i_p_i                       342
+cmp_i_p_ic                      343
+cmp_i_p_n                       344
+cmp_i_p_nc                      345
+cmp_i_p_s                       346
+cmp_i_p_sc                      347
+cmp_str_i_p_p                   348
+cmp_num_i_p_p                   349
+cmp_pmc_p_p_p                   350
+issame_i_p_p                    351
+issame_i_s_s                    352
+issame_i_sc_s                   353
+issame_i_s_sc                   354
+issame_i_sc_sc                  355
+isntsame_i_p_p                  356
+isntsame_i_s_s                  357
+isntsame_i_sc_s                 358
+isntsame_i_s_sc                 359
+isntsame_i_sc_sc                360
+istrue_i_p                      361
+isfalse_i_p                     362
+isnull_i_p                      363
+isnull_i_pc                     364
+isnull_i_s                      365
+isnull_i_sc                     366
+isgt_i_p_p                      367
+isge_i_p_p                      368
+isle_i_i_i                      369
+isle_i_ic_i                     370
+isle_i_i_ic                     371
+isle_i_n_n                      372
+isle_i_nc_n                     373
+isle_i_n_nc                     374
+isle_i_s_s                      375
+isle_i_sc_s                     376
+isle_i_s_sc                     377
+isle_i_p_p                      378
+islt_i_i_i                      379
+islt_i_ic_i                     380
+islt_i_i_ic                     381
+islt_i_n_n                      382
+islt_i_nc_n                     383
+islt_i_n_nc                     384
+islt_i_s_s                      385
+islt_i_sc_s                     386
+islt_i_s_sc                     387
+islt_i_p_p                      388
+iseq_i_i_i                      389
+iseq_i_ic_i                     390
+iseq_i_i_ic                     391
+iseq_i_n_n                      392
+iseq_i_nc_n                     393
+iseq_i_n_nc                     394
+iseq_i_s_s                      395
+iseq_i_sc_s                     396
+iseq_i_s_sc                     397
+iseq_i_p_p                      398
+isne_i_i_i                      399
+isne_i_ic_i                     400
+isne_i_i_ic                     401
+isne_i_n_n                      402
+isne_i_nc_n                     403
+isne_i_n_nc                     404
+isne_i_s_s                      405
+isne_i_sc_s                     406
+isne_i_s_sc                     407
+isne_i_p_p                      408
+and_i_i_i                       409
+and_i_ic_i                      410
+and_i_i_ic                      411
+and_p_p_p                       412
+not_i                           413
+not_i_i                         414
+not_p                           415
+not_p_p                         416
+or_i_i_i                        417
+or_i_ic_i                       418
+or_i_i_ic                       419
+or_p_p_p                        420
+xor_i_i_i                       421
+xor_i_ic_i                      422
+xor_i_i_ic                      423
+xor_p_p_p                       424
+debug_init                      425
+debug_load_sc                   426
+debug_break                     427
+debug_print                     428
+backtrace                       429
+getline_i                       430
+getfile_s                       431
+set_label_p_ic                  432
+get_label_i_p                   433
+close_p                         434
+fdopen_p_i_s                    435
+fdopen_p_ic_s                   436
+fdopen_p_i_sc                   437
+fdopen_p_ic_sc                  438
+getstdin_p                      439
+getstdout_p                     440
+getstderr_p                     441
+setstdin_p                      442
+setstdout_p                     443
+setstderr_p                     444
+open_p_s_s                      445
+open_p_sc_s                     446
+open_p_s_sc                     447
+open_p_sc_sc                    448
+open_p_s                        449
+open_p_sc                       450
+print_i                         451
+print_ic                        452
+print_n                         453
+print_nc                        454
+print_s                         455
+print_sc                        456
+print_p                         457
+say_i                           458
+say_ic                          459
+say_n                           460
+say_nc                          461
+say_s                           462
+say_sc                          463
+say_p                           464
+printerr_i                      465
+printerr_ic                     466
+printerr_n                      467
+printerr_nc                     468
+printerr_s                      469
+printerr_sc                     470
+printerr_p                      471
+print_p_i                       472
+print_p_ic                      473
+print_p_n                       474
+print_p_nc                      475
+print_p_s                       476
+print_p_sc                      477
+print_p_p                       478
+read_s_i                        479
+read_s_ic                       480
+read_s_p_i                      481
+read_s_p_ic                     482
+readline_s_p                    483
+peek_s                          484
+peek_s_p                        485
+stat_i_s_i                      486
+stat_i_sc_i                     487
+stat_i_s_ic                     488
+stat_i_sc_ic                    489
+stat_i_i_i                      490
+stat_i_ic_i                     491
+stat_i_i_ic                     492
+stat_i_ic_ic                    493
+seek_p_i_i                      494
+seek_p_ic_i                     495
+seek_p_i_ic                     496
+seek_p_ic_ic                    497
+seek_p_i_i_i                    498
+seek_p_ic_i_i                   499
+seek_p_i_ic_i                   500
+seek_p_ic_ic_i                  501
+seek_p_i_i_ic                   502
+seek_p_ic_i_ic                  503
+seek_p_i_ic_ic                  504
+seek_p_ic_ic_ic                 505
+tell_i_p                        506
+tell_i_i_p                      507
+abs_i                           508
+abs_n                           509
+abs_i_i                         510
+abs_n_n                         511
+abs_p                           512
+abs_p_p                         513
+add_i_i                         514
+add_i_ic                        515
+add_n_n                         516
+add_n_nc                        517
+add_p_p                         518
+add_p_i                         519
+add_p_ic                        520
+add_p_n                         521
+add_p_nc                        522
+add_i_i_i                       523
+add_i_ic_i                      524
+add_i_i_ic                      525
+add_n_n_n                       526
+add_n_nc_n                      527
+add_n_n_nc                      528
+add_p_p_p                       529
+add_p_p_i                       530
+add_p_p_ic                      531
+add_p_p_n                       532
+add_p_p_nc                      533
+cmod_i_i_i                      534
+cmod_i_ic_i                     535
+cmod_i_i_ic                     536
+cmod_p_p_i                      537
+cmod_p_p_ic                     538
+cmod_p_p_p                      539
+cmod_n_n_n                      540
+cmod_n_nc_n                     541
+cmod_n_n_nc                     542
+cmod_p_p_n                      543
+cmod_p_p_nc                     544
+dec_i                           545
+dec_n                           546
+dec_p                           547
+div_i_i                         548
+div_i_ic                        549
+div_n_n                         550
+div_n_nc                        551
+div_p_p                         552
+div_p_i                         553
+div_p_ic                        554
+div_p_n                         555
+div_p_nc                        556
+div_i_i_i                       557
+div_i_ic_i                      558
+div_i_i_ic                      559
+div_i_ic_ic                     560
+div_n_n_n                       561
+div_n_nc_n                      562
+div_n_n_nc                      563
+div_n_nc_nc                     564
+div_p_p_p                       565
+div_p_p_i                       566
+div_p_p_ic                      567
+div_p_p_n                       568
+div_p_p_nc                      569
+fdiv_i_i                        570
+fdiv_i_ic                       571
+fdiv_n_n                        572
+fdiv_n_nc                       573
+fdiv_p_p                        574
+fdiv_p_i                        575
+fdiv_p_ic                       576
+fdiv_p_n                        577
+fdiv_p_nc                       578
+fdiv_i_i_i                      579
+fdiv_i_ic_i                     580
+fdiv_i_i_ic                     581
+fdiv_n_n_n                      582
+fdiv_n_nc_n                     583
+fdiv_n_n_nc                     584
+fdiv_p_p_p                      585
+fdiv_p_p_i                      586
+fdiv_p_p_ic                     587
+fdiv_p_p_n                      588
+fdiv_p_p_nc                     589
+ceil_n                          590
+ceil_i_n                        591
+ceil_n_n                        592
+floor_n                         593
+floor_i_n                       594
+floor_n_n                       595
+inc_i                           596
+inc_n                           597
+inc_p                           598
+mod_i_i                         599
+mod_i_ic                        600
+mod_n_n                         601
+mod_n_nc                        602
+mod_p_p                         603
+mod_p_i                         604
+mod_p_ic                        605
+mod_p_n                         606
+mod_p_nc                        607
+mod_i_i_i                       608
+mod_i_ic_i                      609
+mod_i_i_ic                      610
+mod_n_n_n                       611
+mod_n_nc_n                      612
+mod_n_n_nc                      613
+mod_p_p_p                       614
+mod_p_p_i                       615
+mod_p_p_ic                      616
+mod_p_p_n                       617
+mod_p_p_nc                      618
+mul_i_i                         619
+mul_i_ic                        620
+mul_n_n                         621
+mul_n_nc                        622
+mul_p_p                         623
+mul_p_i                         624
+mul_p_ic                        625
+mul_p_n                         626
+mul_p_nc                        627
+mul_i_i_i                       628
+mul_i_ic_i                      629
+mul_i_i_ic                      630
+mul_n_n_n                       631
+mul_n_nc_n                      632
+mul_n_n_nc                      633
+mul_p_p_p                       634
+mul_p_p_i                       635
+mul_p_p_ic                      636
+mul_p_p_n                       637
+mul_p_p_nc                      638
+neg_i                           639
+neg_n                           640
+neg_p                           641
+neg_i_i                         642
+neg_n_n                         643
+neg_p_p                         644
+pow_n_n_n                       645
+pow_n_nc_n                      646
+pow_n_n_nc                      647
+pow_p_p_p                       648
+pow_p_p_i                       649
+pow_p_p_ic                      650
+pow_p_p_n                       651
+pow_p_p_nc                      652
+pow_n_n_i                       653
+pow_n_nc_i                      654
+pow_n_n_ic                      655
+pow_n_nc_ic                     656
+sub_i_i                         657
+sub_i_ic                        658
+sub_n_n                         659
+sub_n_nc                        660
+sub_p_p                         661
+sub_p_i                         662
+sub_p_ic                        663
+sub_p_n                         664
+sub_p_nc                        665
+sub_i_i_i                       666
+sub_i_ic_i                      667
+sub_i_i_ic                      668
+sub_n_n_n                       669
+sub_n_nc_n                      670
+sub_n_n_nc                      671
+sub_p_p_p                       672
+sub_p_p_i                       673
+sub_p_p_ic                      674
+sub_p_p_n                       675
+sub_p_p_nc                      676
+sqrt_n_n                        677
+acos_n_n                        678
+asec_n_n                        679
+asin_n_n                        680
+atan_n_n                        681
+atan_n_n_n                      682
+atan_n_nc_n                     683
+atan_n_n_nc                     684
+cos_n_n                         685
+cosh_n_n                        686
+exp_n_n                         687
+ln_n_n                          688
+log10_n_n                       689
+log2_n_n                        690
+sec_n_n                         691
+sech_n_n                        692
+sin_n_n                         693
+sinh_n_n                        694
+tan_n_n                         695
+tanh_n_n                        696
+gcd_i_i_i                       697
+gcd_i_ic_i                      698
+gcd_i_i_ic                      699
+lcm_i_i_i                       700
+lcm_i_ic_i                      701
+lcm_i_i_ic                      702
+fact_i_i                        703
+fact_n_i                        704
+callmethodcc_p_s                705
+callmethodcc_p_sc               706
+callmethodcc_p_p                707
+callmethod_p_s_p                708
+callmethod_p_sc_p               709
+callmethod_p_p_p                710
+tailcallmethod_p_s              711
+tailcallmethod_p_sc             712
+tailcallmethod_p_p              713
+addmethod_p_s_p                 714
+addmethod_p_sc_p                715
+can_i_p_s                       716
+can_i_p_sc                      717
+does_i_p_s                      718
+does_i_p_sc                     719
+does_i_p_p                      720
+does_i_p_pc                     721
+isa_i_p_s                       722
+isa_i_p_sc                      723
+isa_i_p_p                       724
+isa_i_p_pc                      725
+newclass_p_s                    726
+newclass_p_sc                   727
+newclass_p_p                    728
+newclass_p_pc                   729
+subclass_p_p                    730
+subclass_p_pc                   731
+subclass_p_p_s                  732
+subclass_p_pc_s                 733
+subclass_p_p_sc                 734
+subclass_p_pc_sc                735
+subclass_p_p_p                  736
+subclass_p_pc_p                 737
+subclass_p_p_pc                 738
+subclass_p_pc_pc                739
+subclass_p_s                    740
+subclass_p_sc                   741
+subclass_p_s_s                  742
+subclass_p_sc_s                 743
+subclass_p_s_sc                 744
+subclass_p_sc_sc                745
+subclass_p_s_p                  746
+subclass_p_sc_p                 747
+subclass_p_s_pc                 748
+subclass_p_sc_pc                749
+get_class_p_s                   750
+get_class_p_sc                  751
+get_class_p_p                   752
+get_class_p_pc                  753
+class_p_p                       754
+addparent_p_p                   755
+removeparent_p_p                756
+addrole_p_p                     757
+addattribute_p_s                758
+addattribute_p_sc               759
+removeattribute_p_s             760
+removeattribute_p_sc            761
+getattribute_p_p_s              762
+getattribute_p_p_sc             763
+getattribute_p_p_p_s            764
+getattribute_p_p_pc_s           765
+getattribute_p_p_p_sc           766
+getattribute_p_p_pc_sc          767
+setattribute_p_s_p              768
+setattribute_p_sc_p             769
+setattribute_p_p_s_p            770
+setattribute_p_pc_s_p           771
+setattribute_p_p_sc_p           772
+setattribute_p_pc_sc_p          773
+inspect_p_p                     774
+inspect_p_pc                    775
+inspect_p_p_s                   776
+inspect_p_pc_s                  777
+inspect_p_p_sc                  778
+inspect_p_pc_sc                 779
+new_p_s                         780
+new_p_sc                        781
+new_p_s_p                       782
+new_p_sc_p                      783
+new_p_s_pc                      784
+new_p_sc_pc                     785
+new_p_p                         786
+new_p_pc                        787
+new_p_p_p                       788
+new_p_pc_p                      789
+new_p_p_pc                      790
+new_p_pc_pc                     791
+root_new_p_p                    792
+root_new_p_pc                   793
+root_new_p_p_p                  794
+root_new_p_pc_p                 795
+root_new_p_p_pc                 796
+root_new_p_pc_pc                797
+typeof_s_p                      798
+typeof_p_p                      799
+get_repr_s_p                    800
+find_method_p_p_s               801
+find_method_p_p_sc              802
+defined_i_p                     803
+defined_i_p_ki                  804
+defined_i_p_kic                 805
+defined_i_p_k                   806
+defined_i_p_kc                  807
+exists_i_p_ki                   808
+exists_i_p_kic                  809
+exists_i_p_k                    810
+exists_i_p_kc                   811
+delete_p_k                      812
+delete_p_kc                     813
+delete_p_ki                     814
+delete_p_kic                    815
+elements_i_p                    816
+push_p_i                        817
+push_p_ic                       818
+push_p_n                        819
+push_p_nc                       820
+push_p_s                        821
+push_p_sc                       822
+push_p_p                        823
+pop_i_p                         824
+pop_n_p                         825
+pop_s_p                         826
+pop_p_p                         827
+unshift_p_i                     828
+unshift_p_ic                    829
+unshift_p_n                     830
+unshift_p_nc                    831
+unshift_p_s                     832
+unshift_p_sc                    833
+unshift_p_p                     834
+shift_i_p                       835
+shift_n_p                       836
+shift_s_p                       837
+shift_p_p                       838
+splice_p_p_i_i                  839
+splice_p_p_ic_i                 840
+splice_p_p_i_ic                 841
+splice_p_p_ic_ic                842
+setprop_p_s_p                   843
+setprop_p_sc_p                  844
+getprop_p_s_p                   845
+getprop_p_sc_p                  846
+delprop_p_s                     847
+delprop_p_sc                    848
+prophash_p_p                    849
+freeze_s_p                      850
+thaw_p_s                        851
+thaw_p_sc                       852
+add_multi_s_s_p                 853
+add_multi_sc_s_p                854
+add_multi_s_sc_p                855
+add_multi_sc_sc_p               856
+find_multi_p_s_s                857
+find_multi_p_sc_s               858
+find_multi_p_s_sc               859
+find_multi_p_sc_sc              860
+register_p                      861
+unregister_p                    862
+box_p_i                         863
+box_p_ic                        864
+box_p_n                         865
+box_p_nc                        866
+box_p_s                         867
+box_p_sc                        868
+iter_p_p                        869
+morph_p_p                       870
+morph_p_pc                      871
+clone_s_s                       872
+clone_s_sc                      873
+exchange_i_i                    874
+exchange_p_p                    875
+exchange_n_n                    876
+exchange_s_s                    877
+set_i_i                         878
+set_i_ic                        879
+set_i_n                         880
+set_i_nc                        881
+set_i_s                         882
+set_i_sc                        883
+set_n_n                         884
+set_n_nc                        885
+set_n_i                         886
+set_n_ic                        887
+set_n_s                         888
+set_n_sc                        889
+set_n_p                         890
+set_s_p                         891
+set_s_s                         892
+set_s_sc                        893
+set_s_i                         894
+set_s_ic                        895
+set_s_n                         896
+set_s_nc                        897
+set_p_pc                        898
+set_p_p                         899
+set_p_i                         900
+set_p_ic                        901
+set_p_n                         902
+set_p_nc                        903
+set_p_s                         904
+set_p_sc                        905
+set_i_p                         906
+assign_p_p                      907
+assign_p_i                      908
+assign_p_ic                     909
+assign_p_n                      910
+assign_p_nc                     911
+assign_p_s                      912
+assign_p_sc                     913
+assign_s_s                      914
+assign_s_sc                     915
+setref_p_p                      916
+deref_p_p                       917
+setp_ind_i_p                    918
+setp_ind_ic_p                   919
+setn_ind_i_n                    920
+setn_ind_ic_n                   921
+setn_ind_i_nc                   922
+setn_ind_ic_nc                  923
+sets_ind_i_s                    924
+sets_ind_ic_s                   925
+sets_ind_i_sc                   926
+sets_ind_ic_sc                  927
+seti_ind_i_i                    928
+seti_ind_ic_i                   929
+seti_ind_i_ic                   930
+seti_ind_ic_ic                  931
+set_p_ki_i                      932
+set_p_kic_i                     933
+set_p_ki_ic                     934
+set_p_kic_ic                    935
+set_p_ki_n                      936
+set_p_kic_n                     937
+set_p_ki_nc                     938
+set_p_kic_nc                    939
+set_p_ki_s                      940
+set_p_kic_s                     941
+set_p_ki_sc                     942
+set_p_kic_sc                    943
+set_p_ki_p                      944
+set_p_kic_p                     945
+set_i_p_ki                      946
+set_i_p_kic                     947
+set_n_p_ki                      948
+set_n_p_kic                     949
+set_s_p_ki                      950
+set_s_p_kic                     951
+set_p_p_ki                      952
+set_p_p_kic                     953
+set_p_k_i                       954
+set_p_kc_i                      955
+set_p_k_ic                      956
+set_p_kc_ic                     957
+set_p_k_n                       958
+set_p_kc_n                      959
+set_p_k_nc                      960
+set_p_kc_nc                     961
+set_p_k_s                       962
+set_p_kc_s                      963
+set_p_k_sc                      964
+set_p_kc_sc                     965
+set_p_k_p                       966
+set_p_kc_p                      967
+set_i_p_k                       968
+set_i_p_kc                      969
+set_n_p_k                       970
+set_n_p_kc                      971
+set_s_p_k                       972
+set_s_p_kc                      973
+set_p_p_k                       974
+set_p_p_kc                      975
+clone_p_p                       976
+clone_p_p_p                     977
+clone_p_p_pc                    978
+copy_p_p                        979
+null_s                          980
+null_i                          981
+null_p                          982
+null_n                          983
+cleari                          984
+clearn                          985
+clears                          986
+clearp                          987
+ord_i_s                         988
+ord_i_sc                        989
+ord_i_s_i                       990
+ord_i_sc_i                      991
+ord_i_s_ic                      992
+ord_i_sc_ic                     993
+chr_s_i                         994
+chr_s_ic                        995
+chopn_s_i                       996
+chopn_s_ic                      997
+chopn_s_s_i                     998
+chopn_s_sc_i                    999
+chopn_s_s_ic                   1000
+chopn_s_sc_ic                  1001
+concat_s_s                     1002
+concat_s_sc                    1003
+concat_p_p                     1004
+concat_p_s                     1005
+concat_p_sc                    1006
+concat_s_s_s                   1007
+concat_s_sc_s                  1008
+concat_s_s_sc                  1009
+concat_p_p_s                   1010
+concat_p_p_sc                  1011
+concat_p_p_p                   1012
+repeat_s_s_i                   1013
+repeat_s_sc_i                  1014
+repeat_s_s_ic                  1015
+repeat_s_sc_ic                 1016
+repeat_p_p_i                   1017
+repeat_p_p_ic                  1018
+repeat_p_p_p                   1019
+repeat_p_i                     1020
+repeat_p_ic                    1021
+repeat_p_p                     1022
+length_i_s                     1023
+length_i_sc                    1024
+bytelength_i_s                 1025
+bytelength_i_sc                1026
+pin_s                          1027
+unpin_s                        1028
+substr_s_s_i                   1029
+substr_s_sc_i                  1030
+substr_s_s_ic                  1031
+substr_s_sc_ic                 1032
+substr_s_s_i_i                 1033
+substr_s_sc_i_i                1034
+substr_s_s_ic_i                1035
+substr_s_sc_ic_i               1036
+substr_s_s_i_ic                1037
+substr_s_sc_i_ic               1038
+substr_s_s_ic_ic               1039
+substr_s_sc_ic_ic              1040
+substr_s_s_i_i_s               1041
+substr_s_s_ic_i_s              1042
+substr_s_s_i_ic_s              1043
+substr_s_s_ic_ic_s             1044
+substr_s_s_i_i_sc              1045
+substr_s_s_ic_i_sc             1046
+substr_s_s_i_ic_sc             1047
+substr_s_s_ic_ic_sc            1048
+substr_s_i_i_s                 1049
+substr_s_ic_i_s                1050
+substr_s_i_ic_s                1051
+substr_s_ic_ic_s               1052
+substr_s_i_i_sc                1053
+substr_s_ic_i_sc               1054
+substr_s_i_ic_sc               1055
+substr_s_ic_ic_sc              1056
+substr_s_p_i_i                 1057
+substr_s_p_ic_i                1058
+substr_s_p_i_ic                1059
+substr_s_p_ic_ic               1060
+index_i_s_s                    1061
+index_i_sc_s                   1062
+index_i_s_sc                   1063
+index_i_sc_sc                  1064
+index_i_s_s_i                  1065
+index_i_sc_s_i                 1066
+index_i_s_sc_i                 1067
+index_i_sc_sc_i                1068
+index_i_s_s_ic                 1069
+index_i_sc_s_ic                1070
+index_i_s_sc_ic                1071
+index_i_sc_sc_ic               1072
+sprintf_s_s_p                  1073
+sprintf_s_sc_p                 1074
+sprintf_p_p_p                  1075
+new_s                          1076
+new_s_i                        1077
+new_s_ic                       1078
+stringinfo_i_s_i               1079
+stringinfo_i_sc_i              1080
+stringinfo_i_s_ic              1081
+stringinfo_i_sc_ic             1082
+upcase_s_s                     1083
+upcase_s_sc                    1084
+upcase_s                       1085
+downcase_s_s                   1086
+downcase_s_sc                  1087
+downcase_s                     1088
+titlecase_s_s                  1089
+titlecase_s_sc                 1090
+titlecase_s                    1091
+join_s_s_p                     1092
+join_s_sc_p                    1093
+split_p_s_s                    1094
+split_p_sc_s                   1095
+split_p_s_sc                   1096
+split_p_sc_sc                  1097
+charset_i_s                    1098
+charset_i_sc                   1099
+charsetname_s_i                1100
+charsetname_s_ic               1101
+find_charset_i_s               1102
+find_charset_i_sc              1103
+trans_charset_s_i              1104
+trans_charset_s_ic             1105
+trans_charset_s_s_i            1106
+trans_charset_s_sc_i           1107
+trans_charset_s_s_ic           1108
+trans_charset_s_sc_ic          1109
+encoding_i_s                   1110
+encoding_i_sc                  1111
+encodingname_s_i               1112
+encodingname_s_ic              1113
+find_encoding_i_s              1114
+find_encoding_i_sc             1115
+trans_encoding_s_i             1116
+trans_encoding_s_ic            1117
+trans_encoding_s_s_i           1118
+trans_encoding_s_sc_i          1119
+trans_encoding_s_s_ic          1120
+trans_encoding_s_sc_ic         1121
+is_cclass_i_i_s_i              1122
+is_cclass_i_ic_s_i             1123
+is_cclass_i_i_sc_i             1124
+is_cclass_i_ic_sc_i            1125
+is_cclass_i_i_s_ic             1126
+is_cclass_i_ic_s_ic            1127
+is_cclass_i_i_sc_ic            1128
+is_cclass_i_ic_sc_ic           1129
+find_cclass_i_i_s_i_i          1130
+find_cclass_i_ic_s_i_i         1131
+find_cclass_i_i_sc_i_i         1132
+find_cclass_i_ic_sc_i_i        1133
+find_cclass_i_i_s_ic_i         1134
+find_cclass_i_ic_s_ic_i        1135
+find_cclass_i_i_sc_ic_i        1136
+find_cclass_i_ic_sc_ic_i       1137
+find_cclass_i_i_s_i_ic         1138
+find_cclass_i_ic_s_i_ic        1139
+find_cclass_i_i_sc_i_ic        1140
+find_cclass_i_ic_sc_i_ic       1141
+find_cclass_i_i_s_ic_ic        1142
+find_cclass_i_ic_s_ic_ic       1143
+find_cclass_i_i_sc_ic_ic       1144
+find_cclass_i_ic_sc_ic_ic      1145
+find_not_cclass_i_i_s_i_i      1146
+find_not_cclass_i_ic_s_i_i     1147
+find_not_cclass_i_i_sc_i_i     1148
+find_not_cclass_i_ic_sc_i_i    1149
+find_not_cclass_i_i_s_ic_i     1150
+find_not_cclass_i_ic_s_ic_i    1151
+find_not_cclass_i_i_sc_ic_i    1152
+find_not_cclass_i_ic_sc_ic_i   1153
+find_not_cclass_i_i_s_i_ic     1154
+find_not_cclass_i_ic_s_i_ic    1155
+find_not_cclass_i_i_sc_i_ic    1156
+find_not_cclass_i_ic_sc_i_ic   1157
+find_not_cclass_i_i_s_ic_ic    1158
+find_not_cclass_i_ic_s_ic_ic   1159
+find_not_cclass_i_i_sc_ic_ic   1160
+find_not_cclass_i_ic_sc_ic_ic  1161
+escape_s_s                     1162
+compose_s_s                    1163
+compose_s_sc                   1164
+spawnw_i_s                     1165
+spawnw_i_sc                    1166
+spawnw_i_p                     1167
+err_i                          1168
+err_s                          1169
+err_s_i                        1170
+err_s_ic                       1171
+time_i                         1172
+time_n                         1173
+gmtime_s_i                     1174
+gmtime_s_ic                    1175
+localtime_s_i                  1176
+localtime_s_ic                 1177
+decodetime_p_i                 1178
+decodetime_p_ic                1179
+decodelocaltime_p_i            1180
+decodelocaltime_p_ic           1181
+sysinfo_s_i                    1182
+sysinfo_s_ic                   1183
+sysinfo_i_i                    1184
+sysinfo_i_ic                   1185
+sleep_i                        1186
+sleep_ic                       1187
+sleep_n                        1188
+sleep_nc                       1189
+sizeof_i_i                     1190
+sizeof_i_ic                    1191
+store_lex_s_p                  1192
+store_lex_sc_p                 1193
+store_dynamic_lex_s_p          1194
+store_dynamic_lex_sc_p         1195
+find_lex_p_s                   1196
+find_lex_p_sc                  1197
+find_dynamic_lex_p_s           1198
+find_dynamic_lex_p_sc          1199
+find_caller_lex_p_s            1200
+find_caller_lex_p_sc           1201
+get_namespace_p                1202
+get_namespace_p_p              1203
+get_namespace_p_pc             1204
+get_hll_namespace_p            1205
+get_hll_namespace_p_p          1206
+get_hll_namespace_p_pc         1207
+get_root_namespace_p           1208
+get_root_namespace_p_p         1209
+get_root_namespace_p_pc        1210
+get_global_p_s                 1211
+get_global_p_sc                1212
+get_global_p_p_s               1213
+get_global_p_pc_s              1214
+get_global_p_p_sc              1215
+get_global_p_pc_sc             1216
+get_hll_global_p_s             1217
+get_hll_global_p_sc            1218
+get_hll_global_p_p_s           1219
+get_hll_global_p_pc_s          1220
+get_hll_global_p_p_sc          1221
+get_hll_global_p_pc_sc         1222
+get_root_global_p_s            1223
+get_root_global_p_sc           1224
+get_root_global_p_p_s          1225
+get_root_global_p_pc_s         1226
+get_root_global_p_p_sc         1227
+get_root_global_p_pc_sc        1228
+set_global_s_p                 1229
+set_global_sc_p                1230
+set_global_p_s_p               1231
+set_global_pc_s_p              1232
+set_global_p_sc_p              1233
+set_global_pc_sc_p             1234
+set_hll_global_s_p             1235
+set_hll_global_sc_p            1236
+set_hll_global_p_s_p           1237
+set_hll_global_pc_s_p          1238
+set_hll_global_p_sc_p          1239
+set_hll_global_pc_sc_p         1240
+set_root_global_s_p            1241
+set_root_global_sc_p           1242
+set_root_global_p_s_p          1243
+set_root_global_pc_s_p         1244
+set_root_global_p_sc_p         1245
+set_root_global_pc_sc_p        1246
+find_name_p_s                  1247
+find_name_p_sc                 1248
+find_sub_not_null_p_s          1249
+find_sub_not_null_p_sc         1250

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

Modified: branches/ops_pct/src/ops/set.ops
==============================================================================
--- branches/ops_pct/src/ops/set.ops	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/ops/set.ops	Sun Mar  7 19:33:20 2010	(r44743)
@@ -510,7 +510,7 @@
         memmove($1, clone, sizeof (PMC));
 
         /* don't let the clone's destruction destroy the destination's data */
-        PObj_active_destroy_CLEAR(clone);
+        PObj_custom_destroy_CLEAR(clone);
         PMC_data(clone)        = NULL;
         PMC_sync(clone)        = NULL;
         PMC_metadata(clone)    = NULL;

Modified: branches/ops_pct/src/ops/sys.ops
==============================================================================
--- branches/ops_pct/src/ops/sys.ops	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/ops/sys.ops	Sun Mar  7 19:33:20 2010	(r44743)
@@ -313,7 +313,7 @@
 
 =cut
 
-inline op sizeof (out INT, in INT) {
+inline op sizeof (out INT, in INT) :deprecated {
     if ($2 < enum_first_type || $2 >= enum_last_type)
         $1 = -1;
     else

Modified: branches/ops_pct/src/packfile.c
==============================================================================
--- branches/ops_pct/src/packfile.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/packfile.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -47,10 +47,11 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-static PackFile_Segment * byte_code_new(SHIM_INTERP,
+static PackFile_Segment * byte_code_new(PARROT_INTERP,
     SHIM(PackFile *pf),
     SHIM(STRING *name),
-    SHIM(int add));
+    SHIM(int add))
+        __attribute__nonnull__(1);
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
@@ -72,10 +73,11 @@
 
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
-static PackFile_Segment * const_new(SHIM_INTERP,
+static PackFile_Segment * const_new(PARROT_INTERP,
     SHIM(PackFile *pf),
     SHIM(STRING *name),
-    SHIM(int add));
+    SHIM(int add))
+        __attribute__nonnull__(1);
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
@@ -91,8 +93,9 @@
         __attribute__nonnull__(5)
         FUNC_MODIFIES(*dir);
 
-static void default_destroy(ARGMOD(PackFile_Segment *self))
+static void default_destroy(PARROT_INTERP, ARGMOD(PackFile_Segment *self))
         __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
         FUNC_MODIFIES(*self);
 
 static void default_dump(PARROT_INTERP, ARGIN(const PackFile_Segment *self))
@@ -113,11 +116,12 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
-static const opcode_t * default_unpack(
+static const opcode_t * default_unpack(PARROT_INTERP,
     ARGMOD(PackFile_Segment *self),
     ARGIN(const opcode_t *cursor))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
         FUNC_MODIFIES(*self);
 
 static void directory_destroy(PARROT_INTERP, ARGMOD(PackFile_Segment *self))
@@ -132,10 +136,11 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-static PackFile_Segment * directory_new(SHIM_INTERP,
+static PackFile_Segment * directory_new(PARROT_INTERP,
     SHIM(PackFile *pf),
     SHIM(STRING *name),
-    SHIM(int add));
+    SHIM(int add))
+        __attribute__nonnull__(1);
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
@@ -210,10 +215,11 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-static PackFile_Segment * fixup_new(SHIM_INTERP,
+static PackFile_Segment * fixup_new(PARROT_INTERP,
     SHIM(PackFile *pf),
     SHIM(STRING *name),
-    SHIM(int add));
+    SHIM(int add))
+        __attribute__nonnull__(1);
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
@@ -267,7 +273,8 @@
         __attribute__nonnull__(1)
         FUNC_MODIFIES(*header);
 
-static void pf_debug_destroy(SHIM_INTERP, ARGMOD(PackFile_Segment *self))
+static void pf_debug_destroy(PARROT_INTERP, ARGMOD(PackFile_Segment *self))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*self);
 
@@ -278,10 +285,11 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-static PackFile_Segment * pf_debug_new(SHIM_INTERP,
+static PackFile_Segment * pf_debug_new(PARROT_INTERP,
     SHIM(PackFile *pf),
     SHIM(STRING *name),
-    SHIM(int add));
+    SHIM(int add))
+        __attribute__nonnull__(1);
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
@@ -341,7 +349,8 @@
 #define ASSERT_ARGS_byte_code_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_byte_code_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_byte_code_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_clone_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(old_const))
@@ -351,14 +360,16 @@
 #define ASSERT_ARGS_const_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_const_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_const_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_create_seg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(dir) \
     , PARROT_ASSERT_ARG(name) \
     , PARROT_ASSERT_ARG(file_name))
 #define ASSERT_ARGS_default_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(self))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(self))
 #define ASSERT_ARGS_default_dump __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self))
@@ -368,7 +379,8 @@
 #define ASSERT_ARGS_default_packed_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(self))
 #define ASSERT_ARGS_default_unpack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(self) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(self) \
     , PARROT_ASSERT_ARG(cursor))
 #define ASSERT_ARGS_directory_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -376,7 +388,8 @@
 #define ASSERT_ARGS_directory_dump __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_directory_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_directory_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_directory_pack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self) \
@@ -407,7 +420,8 @@
 #define ASSERT_ARGS_fixup_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_fixup_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_fixup_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_fixup_pack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self) \
@@ -432,11 +446,13 @@
 #define ASSERT_ARGS_PackFile_set_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(header))
 #define ASSERT_ARGS_pf_debug_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(self))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(self))
 #define ASSERT_ARGS_pf_debug_dump __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_pf_debug_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_pf_debug_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_pf_debug_pack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(self) \
     , PARROT_ASSERT_ARG(cursor))
@@ -536,9 +552,9 @@
     }
 #endif
 
-    mem_sys_free(pf->header);
+    mem_gc_free(interp, pf->header);
     pf->header = NULL;
-    mem_sys_free(pf->dirp);
+    mem_gc_free(interp, pf->dirp);
     pf->dirp   = NULL;
     PackFile_Segment_destroy(interp, &pf->directory.base);
     return;
@@ -1062,8 +1078,8 @@
 
         /* Read in the UUID. We'll put it in a NULL-terminated string, just in
          * case people use it that way. */
-        header->uuid_data = (unsigned char *)
-            mem_sys_allocate(header->uuid_size + 1);
+        header->uuid_data = mem_gc_allocate_n_typed(interp,
+                header->uuid_size + 1, unsigned char);
 
         memcpy(header->uuid_data, packed + PACKFILE_HEADER_BYTES,
                 header->uuid_size);
@@ -1183,11 +1199,12 @@
 
 PARROT_EXPORT
 void
-PackFile_add_segment(SHIM_INTERP, ARGMOD(PackFile_Directory *dir),
+PackFile_add_segment(PARROT_INTERP, ARGMOD(PackFile_Directory *dir),
         ARGIN(PackFile_Segment *seg))
 {
     ASSERT_ARGS(PackFile_add_segment)
-    mem_realloc_n_typed(dir->segments, dir->num_segments+1, PackFile_Segment *);
+    dir->segments = mem_gc_realloc_n_typed_zeroed(interp, dir->segments,
+            dir->num_segments+1, dir->num_segments, PackFile_Segment *);
     dir->segments[dir->num_segments] = seg;
     dir->num_segments++;
     seg->dir = dir;
@@ -1384,8 +1401,8 @@
 PackFile_new(PARROT_INTERP, INTVAL is_mapped)
 {
     ASSERT_ARGS(PackFile_new)
-    PackFile * const pf = mem_allocate_zeroed_typed(PackFile);
-    pf->header          = mem_allocate_zeroed_typed(PackFile_Header);
+    PackFile * const pf = mem_gc_allocate_zeroed_typed(interp, PackFile);
+    pf->header          = mem_gc_allocate_zeroed_typed(interp, PackFile_Header);
     pf->is_mmap_ped     = is_mapped;
     pf->options         = PFOPT_NONE;
 
@@ -1462,8 +1479,8 @@
 
 /*
 
-=item C<static const opcode_t * default_unpack(PackFile_Segment *self, const
-opcode_t *cursor)>
+=item C<static const opcode_t * default_unpack(PARROT_INTERP, PackFile_Segment
+*self, const opcode_t *cursor)>
 
 Unpacks a PackFile given a cursor into PBC.  This is the default unpack.
 
@@ -1474,7 +1491,7 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 static const opcode_t *
-default_unpack(ARGMOD(PackFile_Segment *self), ARGIN(const opcode_t *cursor))
+default_unpack(PARROT_INTERP, ARGMOD(PackFile_Segment *self), ARGIN(const opcode_t *cursor))
 {
     ASSERT_ARGS(default_unpack)
     DECL_CONST_CAST_OF(opcode_t);
@@ -1503,7 +1520,7 @@
     }
 
     /* else allocate mem */
-    self->data = mem_allocate_n_typed(self->size, opcode_t);
+    self->data = mem_gc_allocate_n_typed(interp, self->size, opcode_t);
 
     if (!self->data) {
         Parrot_io_eprintf(NULL, "PackFile_unpack: Unable to allocate data memory!\n");
@@ -1801,7 +1818,7 @@
         (f)(interp, self);
 
     /* destroy self after specific */
-    default_destroy(self);
+    default_destroy(interp, self);
 }
 
 
@@ -1917,7 +1934,7 @@
     PackFile * const pf  = self->pf;
 #endif
 
-    cursor = default_unpack(self, cursor);
+    cursor = default_unpack(interp, self, cursor);
 
     if (!cursor)
         return NULL;
@@ -1980,11 +1997,11 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static PackFile_Segment *
-directory_new(SHIM_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
+directory_new(PARROT_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
 {
     ASSERT_ARGS(directory_new)
 
-    return (PackFile_Segment *)mem_allocate_zeroed_typed(PackFile_Directory);
+    return (PackFile_Segment *)mem_gc_allocate_zeroed_typed(interp, PackFile_Directory);
 }
 
 
@@ -2055,7 +2072,8 @@
     PARROT_ASSERT(pf);
     dir->num_segments = PF_fetch_opcode(pf, &cursor);
     TRACE_PRINTF(("directory_unpack: %ld num_segments\n", dir->num_segments));
-    mem_realloc_n_typed(dir->segments, dir->num_segments, PackFile_Segment *);
+    dir->segments = mem_gc_allocate_n_zeroed_typed(interp,
+            dir->num_segments, PackFile_Segment *);
 
     for (i = 0; i < dir->num_segments; i++) {
         PackFile_Segment *seg;
@@ -2071,13 +2089,13 @@
         TRACE_PRINTF_VAL(("Segment type %d.\n", type));
 
         /* get name */
-        buf = PF_fetch_cstring(pf, &cursor);
+        buf = PF_fetch_cstring(interp, pf, &cursor);
         TRACE_PRINTF_VAL(("Segment name \"%s\".\n", name));
 
         /* create it */
         name = Parrot_str_new(interp, buf, strlen(buf));
         seg = PackFile_Segment_new_seg(interp, dir, type, name, 0);
-        mem_sys_free(buf);
+        mem_gc_free(interp, buf);
 
         seg->file_offset = PF_fetch_opcode(pf, &cursor);
         TRACE_PRINTF_VAL(("Segment file_offset %ld.\n", seg->file_offset));
@@ -2219,7 +2237,7 @@
     }
 
     if (dir->segments) {
-        mem_sys_free(dir->segments);
+        mem_gc_free(interp, dir->segments);
         dir->segments = NULL;
         dir->num_segments = 0;
     }
@@ -2458,10 +2476,10 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 PackFile_Segment *
-PackFile_Segment_new(SHIM_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
+PackFile_Segment_new(PARROT_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
 {
     ASSERT_ARGS(PackFile_Segment_new)
-    PackFile_Segment * const seg = mem_allocate_typed(PackFile_Segment);
+    PackFile_Segment * const seg = mem_gc_allocate_zeroed_typed(interp, PackFile_Segment);
 
     return seg;
 }
@@ -2478,7 +2496,7 @@
 
 =over 4
 
-=item C<static void default_destroy(PackFile_Segment *self)>
+=item C<static void default_destroy(PARROT_INTERP, PackFile_Segment *self)>
 
 The default destroy function.  Destroys a PackFile_Segment.
 
@@ -2487,15 +2505,15 @@
 */
 
 static void
-default_destroy(ARGMOD(PackFile_Segment *self))
+default_destroy(PARROT_INTERP, ARGMOD(PackFile_Segment *self))
 {
     ASSERT_ARGS(default_destroy)
     if (!self->pf->is_mmap_ped && self->data) {
-        mem_sys_free(self->data);
+        mem_gc_free(interp, self->data);
         self->data = NULL;
     }
 
-    mem_sys_free(self);
+    mem_gc_free(interp, self);
 }
 
 
@@ -2576,7 +2594,7 @@
         byte_code->prederef.code = NULL;
 
         if (byte_code->prederef.branches) {
-            mem_sys_free(byte_code->prederef.branches);
+            mem_gc_free(interp, byte_code->prederef.branches);
             byte_code->prederef.branches = NULL;
         }
     }
@@ -2601,10 +2619,10 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static PackFile_Segment *
-byte_code_new(SHIM_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
+byte_code_new(PARROT_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
 {
     ASSERT_ARGS(byte_code_new)
-    PackFile_ByteCode * const byte_code = mem_allocate_zeroed_typed(PackFile_ByteCode);
+    PackFile_ByteCode * const byte_code = mem_gc_allocate_zeroed_typed(interp, PackFile_ByteCode);
 
     return (PackFile_Segment *) byte_code;
 }
@@ -2627,7 +2645,7 @@
 */
 
 static void
-pf_debug_destroy(SHIM_INTERP, ARGMOD(PackFile_Segment *self))
+pf_debug_destroy(PARROT_INTERP, ARGMOD(PackFile_Segment *self))
 {
     ASSERT_ARGS(pf_debug_destroy)
     PackFile_Debug * const debug = (PackFile_Debug *) self;
@@ -2635,10 +2653,10 @@
 
     /* Free each mapping. */
     for (i = 0; i < debug->num_mappings; i++)
-        mem_sys_free(debug->mappings[i]);
+        mem_gc_free(interp, debug->mappings[i]);
 
     /* Free mappings pointer array. */
-    mem_sys_free(debug->mappings);
+    mem_gc_free(interp, debug->mappings);
     debug->mappings     = NULL;
     debug->num_mappings = 0;
 }
@@ -2659,12 +2677,13 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static PackFile_Segment *
-pf_debug_new(SHIM_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
+pf_debug_new(PARROT_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
 {
     ASSERT_ARGS(pf_debug_new)
-    PackFile_Debug * const debug = mem_allocate_zeroed_typed(PackFile_Debug);
+    PackFile_Debug * const debug = mem_gc_allocate_zeroed_typed(interp, PackFile_Debug);
 
-    debug->mappings              = mem_allocate_typed(PackFile_DebugFilenameMapping *);
+    debug->mappings              = mem_gc_allocate_zeroed_typed(interp,
+            PackFile_DebugFilenameMapping *);
     debug->mappings[0]           = NULL;
 
     return (PackFile_Segment *)debug;
@@ -2760,14 +2779,14 @@
     debug->num_mappings = PF_fetch_opcode(self->pf, &cursor);
 
     /* Allocate space for mappings vector. */
-    mem_realloc_n_typed(debug->mappings, debug->num_mappings + 1,
-        PackFile_DebugFilenameMapping *);
+    debug->mappings = mem_gc_allocate_n_zeroed_typed(interp,
+            debug->num_mappings + 1, PackFile_DebugFilenameMapping *);
 
     /* Read in each mapping. */
     for (i = 0; i < debug->num_mappings; i++) {
         /* Allocate struct and get offset and filename type. */
         debug->mappings[i]           =
-                mem_allocate_typed(PackFile_DebugFilenameMapping);
+                mem_gc_allocate_zeroed_typed(interp, PackFile_DebugFilenameMapping);
         debug->mappings[i]->offset   = PF_fetch_opcode(self->pf, &cursor);
         debug->mappings[i]->filename = PF_fetch_opcode(self->pf, &cursor);
     }
@@ -2807,7 +2826,6 @@
     const PackFile_Debug * const debug = (const PackFile_Debug *)self;
 
     opcode_t i;
-    size_t   j;
 
     default_dump_header(interp, self);
 
@@ -2849,7 +2867,7 @@
     /* it exists already, resize it */
     if (cs->debugs) {
         debug = cs->debugs;
-        mem_realloc_n_typed(debug->base.data, size, opcode_t);
+        debug->base.data = mem_gc_realloc_n_typed(interp, debug->base.data, size, opcode_t);
     }
     /* create one */
     else {
@@ -2865,7 +2883,7 @@
         debug = (PackFile_Debug *)PackFile_Segment_new_seg(interp, dir,
                                     PF_DEBUG_SEG, name, add);
 
-        debug->base.data = mem_allocate_n_zeroed_typed(size, opcode_t);
+        debug->base.data = mem_gc_allocate_n_zeroed_typed(interp, size, opcode_t);
         debug->code      = cs;
         cs->debugs       = debug;
     }
@@ -2910,8 +2928,9 @@
     }
 
     /* Allocate space for the extra entry. */
-    mem_realloc_n_typed(debug->mappings, debug->num_mappings + 1,
-        PackFile_DebugFilenameMapping *);
+    debug->mappings = mem_gc_realloc_n_typed(interp,
+            debug->mappings, debug->num_mappings + 1,
+            PackFile_DebugFilenameMapping *);
 
     /* Can it just go on the end? */
     if (debug->num_mappings == 0
@@ -2935,7 +2954,7 @@
     {
         /* Set up new entry and insert it. */
         PackFile_DebugFilenameMapping *mapping =
-                mem_allocate_typed(PackFile_DebugFilenameMapping);
+                mem_gc_allocate_zeroed_typed(interp, PackFile_DebugFilenameMapping);
         STRING *namestr = Parrot_str_new_init(interp, filename, strlen(filename),
                 PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET, 0);
         size_t count = ct->const_count;
@@ -2957,7 +2976,8 @@
             /* Not found, create a new one */
             PackFile_Constant             *fnconst;
             ct->const_count   = ct->const_count + 1;
-            mem_realloc_n_typed(ct->constants, ct->const_count, PackFile_Constant *);
+            ct->constants = mem_gc_realloc_n_typed_zeroed(interp, ct->constants,
+                    ct->const_count, ct->const_count - 1, PackFile_Constant *);
 
             fnconst           = PackFile_Constant_new(interp);
             fnconst->type     = PFC_STRING;
@@ -3123,7 +3143,8 @@
     &&  VTABLE_isa(interp, old_const->u.key, _sub)) {
         PMC        *old_sub_pmc, *new_sub_pmc;
         Parrot_Sub_attributes *old_sub,     *new_sub;
-        PackFile_Constant * const ret = mem_allocate_typed(PackFile_Constant);
+        PackFile_Constant * const ret = mem_gc_allocate_zeroed_typed(interp,
+                PackFile_Constant);
 
         ret->type = old_const->type;
         old_sub_pmc   = old_const->u.key;
@@ -3189,7 +3210,8 @@
             INTVAL               const num_consts = ct->const_count;
             INTVAL                     i;
 
-            new_consts = mem_allocate_n_typed(num_consts, PackFile_Constant *);
+            new_consts = mem_gc_allocate_n_zeroed_typed(interp,
+                    num_consts, PackFile_Constant *);
 
             for (i = 0; i < num_consts; ++i)
                 new_consts[i] = clone_constant(interp, old_consts[i]);
@@ -3241,10 +3263,10 @@
 
             for (j = 0; j < table->const_count; ++j) {
                 if (consts[j] != orig_consts[j])
-                    mem_sys_free(consts[j]);
+                    mem_gc_free(interp, consts[j]);
             }
 
-            mem_sys_free(consts);
+            mem_gc_free(interp, consts);
             bucket = bucket->next;
         }
     }
@@ -3283,15 +3305,15 @@
     }
 
     for (i = 0; i < self->fixup_count; i++) {
-        mem_sys_free(self->fixups[i]->name);
+        mem_gc_free(interp, self->fixups[i]->name);
         self->fixups[i]->name = NULL;
 
-        mem_sys_free(self->fixups[i]);
+        mem_gc_free(interp, self->fixups[i]);
         self->fixups[i] = NULL;
     }
 
     if (self->fixup_count) {
-        mem_sys_free(self->fixups);
+        mem_gc_free(interp, self->fixups);
         self->fixups = NULL;
     }
 
@@ -3416,10 +3438,11 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static PackFile_Segment *
-fixup_new(SHIM_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
+fixup_new(PARROT_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
 {
     ASSERT_ARGS(fixup_new)
-    PackFile_FixupTable * const fixup = mem_allocate_zeroed_typed(PackFile_FixupTable);
+    PackFile_FixupTable * const fixup = mem_gc_allocate_zeroed_typed(interp,
+            PackFile_FixupTable);
 
     return (PackFile_Segment *) fixup;
 }
@@ -3463,8 +3486,8 @@
         self->fixup_count));
 
     if (self->fixup_count) {
-        self->fixups = (PackFile_FixupEntry **)mem_sys_allocate_zeroed(
-            self->fixup_count * sizeof (PackFile_FixupEntry *));
+        self->fixups = mem_gc_allocate_n_zeroed_typed(interp,
+            self->fixup_count, PackFile_FixupEntry *);
 
         if (!self->fixups) {
             Parrot_io_eprintf(interp,
@@ -3478,14 +3501,14 @@
     for (i = 0; i < self->fixup_count; i++) {
         PackFile_FixupEntry * const entry           =
                                     self->fixups[i] =
-                                    mem_allocate_typed(PackFile_FixupEntry);
+                                    mem_gc_allocate_zeroed_typed(interp, PackFile_FixupEntry);
 
         entry->type = PF_fetch_opcode(pf, &cursor);
 
         switch (entry->type) {
           case enum_fixup_label:
           case enum_fixup_sub:
-            entry->name   = PF_fetch_cstring(pf, &cursor);
+            entry->name   = PF_fetch_cstring(interp, pf, &cursor);
             entry->offset = PF_fetch_opcode(pf, &cursor);
             TRACE_PRINTF_VAL(("PackFile_FixupTable_unpack(): type %d, "
                     "name %s, offset %ld\n",
@@ -3536,9 +3559,10 @@
     }
 
     i = self->fixup_count++;
-    mem_realloc_n_typed(self->fixups, self->fixup_count, PackFile_FixupEntry *);
+    self->fixups = mem_gc_realloc_n_typed_zeroed(interp,
+            self->fixups, self->fixup_count, i, PackFile_FixupEntry *);
 
-    self->fixups[i]         = mem_allocate_typed(PackFile_FixupEntry);
+    self->fixups[i]         = mem_gc_allocate_zeroed_typed(interp, PackFile_FixupEntry);
     self->fixups[i]->type   = type;
     self->fixups[i]->name   = mem_sys_strdup(label);
     self->fixups[i]->offset = offs;
@@ -3638,7 +3662,7 @@
 
     /* TODO make a hash of all fixups */
     PackFile_Directory  * const dir = interp->code->base.dir;
-    PackFile_FixupEntry * const ep  = mem_allocate_typed(PackFile_FixupEntry);
+    PackFile_FixupEntry * const ep  = mem_gc_allocate_zeroed_typed(interp, PackFile_FixupEntry);
 
     ep->type = type;
     ep->name = name;
@@ -3680,7 +3704,7 @@
     }
 
     if (self->constants) {
-        mem_sys_free(self->constants);
+        mem_gc_free(interp, self->constants);
         self->constants = NULL;
     }
 
@@ -3728,7 +3752,7 @@
     if (self->const_count == 0)
         return cursor;
 
-    self->constants = mem_allocate_n_zeroed_typed(self->const_count,
+    self->constants = mem_gc_allocate_n_zeroed_typed(interp, self->const_count,
                 PackFile_Constant *);
 
     if (!self->constants) {
@@ -3765,10 +3789,11 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 static PackFile_Segment *
-const_new(SHIM_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
+const_new(PARROT_INTERP, SHIM(PackFile *pf), SHIM(STRING *name), SHIM(int add))
 {
     ASSERT_ARGS(const_new)
-    PackFile_ConstTable * const const_table = mem_allocate_zeroed_typed(PackFile_ConstTable);
+    PackFile_ConstTable * const const_table =
+            mem_gc_allocate_zeroed_typed(interp, PackFile_ConstTable);
 
     return (PackFile_Segment *)const_table;
 }
@@ -3815,10 +3840,11 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 PackFile_Constant *
-PackFile_Constant_new(SHIM_INTERP)
+PackFile_Constant_new(PARROT_INTERP)
 {
     ASSERT_ARGS(PackFile_Constant_new)
-    PackFile_Constant * const self = mem_allocate_zeroed_typed(PackFile_Constant);
+    PackFile_Constant * const self = mem_gc_allocate_zeroed_typed(interp,
+            PackFile_Constant);
 
     self->type = PFC_NONE;
 
@@ -3840,10 +3866,10 @@
 
 PARROT_EXPORT
 void
-PackFile_Constant_destroy(SHIM_INTERP, ARGMOD_NULLOK(PackFile_Constant *self))
+PackFile_Constant_destroy(PARROT_INTERP, ARGMOD_NULLOK(PackFile_Constant *self))
 {
     ASSERT_ARGS(PackFile_Constant_destroy)
-    mem_sys_free(self);
+    mem_gc_free(interp, self);
 }
 
 
@@ -3866,7 +3892,6 @@
 {
     ASSERT_ARGS(PackFile_Constant_pack_size)
     PMC    *component;
-    STRING *image;
     size_t  packed_size;
 
     switch (self->type) {
@@ -3889,14 +3914,7 @@
 
       case PFC_PMC:
         component = self->u.key; /* the pmc (Sub, ...) */
-
-        /*
-         * TODO create either
-         * a) a frozen_size freeze entry or
-         * b) change packout.c so that component size isn't needed
-         */
-        image       = Parrot_freeze(interp, component);
-        packed_size = PF_size_string(image);
+        packed_size = PF_size_strlen(Parrot_freeze_size(interp, component));
         break;
 
       default:
@@ -3999,13 +4017,7 @@
     interp->code                      = pf->cur_cs;
     image                             = PF_fetch_string(interp, pf, &cursor);
 
-    /*
-     * TODO use thaw_constants
-     * current issue: a constant Sub with attached properties
-     *                doesn't GC mark the properties
-     * for a constant PMC *all* contents have to be in the constant pools
-     */
-    pmc         = Parrot_thaw(interp, image);
+    pmc         = Parrot_thaw_constants(interp, image);
 
     /* place item in const_table */
     self->type  = PFC_PMC;
@@ -4059,11 +4071,11 @@
         opcode_t        op;
 
         if (tail) {
-            SETATTR_Key_next_key(interp, tail, constant_pmc_new(interp, pmc_enum));
+            SETATTR_Key_next_key(interp, tail, Parrot_pmc_new_constant(interp, pmc_enum));
             GETATTR_Key_next_key(interp, tail, tail);
         }
         else
-            head = tail = constant_pmc_new(interp, pmc_enum);
+            head = tail = Parrot_pmc_new_constant(interp, pmc_enum);
 
         op = PF_fetch_opcode(pf, &cursor);
 
@@ -4115,14 +4127,15 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PackFile_Segment *
-PackFile_Annotations_new(SHIM_INTERP, SHIM(struct PackFile *pf),
+PackFile_Annotations_new(PARROT_INTERP, SHIM(struct PackFile *pf),
         SHIM(STRING *name), SHIM(int add))
 {
     ASSERT_ARGS(PackFile_Annotations_new)
 
     /* Allocate annotations structure; create it all zeroed, and we will
      * allocate memory for each of the arrays on demand. */
-    PackFile_Annotations * const seg = mem_allocate_zeroed_typed(PackFile_Annotations);
+    PackFile_Annotations * const seg = mem_gc_allocate_zeroed_typed(interp,
+            PackFile_Annotations);
     return (PackFile_Segment *) seg;
 }
 
@@ -4138,7 +4151,7 @@
 */
 
 void
-PackFile_Annotations_destroy(SHIM_INTERP, ARGMOD(PackFile_Segment *seg))
+PackFile_Annotations_destroy(PARROT_INTERP, ARGMOD(PackFile_Segment *seg))
 {
     ASSERT_ARGS(PackFile_Annotations_destroy)
     PackFile_Annotations *self = (PackFile_Annotations *)seg;
@@ -4147,23 +4160,23 @@
     /* Free any keys. */
     if (self->keys) {
         for (i = 0; i < self->num_keys; i++)
-            mem_sys_free(self->keys[i]);
+            mem_gc_free(interp, self->keys[i]);
 
-        mem_sys_free(self->keys);
+        mem_gc_free(interp, self->keys);
     }
 
     /* Free any groups. */
     if (self->groups) {
         for (i = 0; i < self->num_groups; i++)
-            mem_sys_free(self->groups[i]);
-        mem_sys_free(self->groups);
+            mem_gc_free(interp, self->groups[i]);
+        mem_gc_free(interp, self->groups);
     }
 
     /* Free any entries. */
     if (self->entries) {
         for (i = 0; i < self->num_entries; i++)
-            mem_sys_free(self->entries[i]);
-        mem_sys_free(self->entries);
+            mem_gc_free(interp, self->entries[i]);
+        mem_gc_free(interp, self->entries);
     }
 }
 
@@ -4277,11 +4290,12 @@
     TRACE_PRINTF(("PackFile_Annotations_unpack: Unpacking %ld keys\n",
                   self->num_keys));
 
-    self->keys     = mem_allocate_n_typed(self->num_keys, PackFile_Annotations_Key *);
+    self->keys     = mem_gc_allocate_n_zeroed_typed(interp,
+            self->num_keys, PackFile_Annotations_Key *);
 
     for (i = 0; i < self->num_keys; i++) {
-        PackFile_Annotations_Key * const key =
-            self->keys[i] = mem_allocate_typed(PackFile_Annotations_Key);
+        PackFile_Annotations_Key * const key = self->keys[i] =
+                mem_gc_allocate_zeroed_typed(interp, PackFile_Annotations_Key);
         key->name = PF_fetch_opcode(seg->pf, &cursor);
         key->type = PF_fetch_opcode(seg->pf, &cursor);
         TRACE_PRINTF_VAL(("PackFile_Annotations_unpack: key[%d]/%d name=%s type=%d\n",
@@ -4290,11 +4304,13 @@
 
     /* Unpack groups. */
     self->num_groups = PF_fetch_opcode(seg->pf, &cursor);
-    self->groups     = mem_allocate_n_typed(self->num_groups, PackFile_Annotations_Group *);
+    self->groups     = mem_gc_allocate_n_zeroed_typed(interp,
+            self->num_groups, PackFile_Annotations_Group *);
 
     for (i = 0; i < self->num_groups; i++) {
         PackFile_Annotations_Group * const group =
-            self->groups[i] = mem_allocate_typed(PackFile_Annotations_Group);
+            self->groups[i] = mem_gc_allocate_zeroed_typed(interp,
+                    PackFile_Annotations_Group);
         group->bytecode_offset = PF_fetch_opcode(seg->pf, &cursor);
         group->entries_offset  = PF_fetch_opcode(seg->pf, &cursor);
         TRACE_PRINTF_VAL((
@@ -4305,10 +4321,12 @@
 
     /* Unpack entries. */
     self->num_entries = PF_fetch_opcode(seg->pf, &cursor);
-    self->entries     = mem_allocate_n_typed(self->num_entries, PackFile_Annotations_Entry *);
+    self->entries     = mem_gc_allocate_n_zeroed_typed(interp,
+            self->num_entries, PackFile_Annotations_Entry *);
     for (i = 0; i < self->num_entries; i++) {
         PackFile_Annotations_Entry * const entry =
-            self->entries[i]   = mem_allocate_typed(PackFile_Annotations_Entry);
+            self->entries[i]   = mem_gc_allocate_zeroed_typed(interp,
+                    PackFile_Annotations_Entry);
         entry->bytecode_offset = PF_fetch_opcode(seg->pf, &cursor);
         entry->key             = PF_fetch_opcode(seg->pf, &cursor);
         entry->value           = PF_fetch_opcode(seg->pf, &cursor);
@@ -4417,7 +4435,7 @@
 */
 PARROT_EXPORT
 void
-PackFile_Annotations_add_group(SHIM_INTERP, ARGMOD(PackFile_Annotations *self),
+PackFile_Annotations_add_group(PARROT_INTERP, ARGMOD(PackFile_Annotations *self),
         opcode_t offset)
 {
     ASSERT_ARGS(PackFile_Annotations_add_group)
@@ -4425,15 +4443,16 @@
     /* Allocate extra space for the group in the groups array. */
     if (self->groups)
         self->groups =
-            (PackFile_Annotations_Group **)mem_sys_realloc(self->groups,
-                (1 + self->num_groups) *
-                    sizeof (PackFile_Annotations_Group *));
+            self->groups = mem_gc_realloc_n_typed_zeroed(interp, self->groups,
+                1 + self->num_groups, self->num_groups, PackFile_Annotations_Group *);
     else
-        self->groups = mem_allocate_n_typed(self->num_groups + 1, PackFile_Annotations_Group *);
+        self->groups = mem_gc_allocate_n_typed(interp,
+                1 + self->num_groups, PackFile_Annotations_Group *);
 
     /* Store details. */
     self->groups[self->num_groups]                  =
-                            mem_allocate_typed(PackFile_Annotations_Group);
+                            mem_gc_allocate_zeroed_typed(interp,
+                                    PackFile_Annotations_Group);
     self->groups[self->num_groups]->bytecode_offset = offset;
     self->groups[self->num_groups]->entries_offset  = self->num_entries;
 
@@ -4480,15 +4499,14 @@
     if (key_id == -1) {
         /* We do have it. Add key entry. */
         if (self->keys)
-            self->keys =
-                (PackFile_Annotations_Key **)mem_sys_realloc(self->keys,
-                    (1 + self->num_keys) *
-                        sizeof (PackFile_Annotations_Key *));
+            self->keys = mem_gc_realloc_n_typed_zeroed(interp, self->keys,
+                    1 + self->num_keys, self->num_keys, PackFile_Annotations_Key *);
         else
-            self->keys = mem_allocate_n_typed(self->num_keys + 1, PackFile_Annotations_Key *);
+            self->keys = mem_gc_allocate_n_typed(interp,
+                    1 + self->num_keys, PackFile_Annotations_Key *);
 
         key_id             = self->num_keys;
-        self->keys[key_id] = mem_allocate_typed(PackFile_Annotations_Key);
+        self->keys[key_id] = mem_gc_allocate_typed(interp, PackFile_Annotations_Key);
         self->num_keys++;
 
         /* Populate it. */
@@ -4506,17 +4524,14 @@
 
     /* Add annotations entry. */
     if (self->entries)
-            self->entries =
-                (PackFile_Annotations_Entry **)mem_sys_realloc(self->entries,
-                    (1 + self->num_entries) *
-                        sizeof (PackFile_Annotations_Entry *));
+            self->entries = mem_gc_realloc_n_typed(interp, self->entries,
+                    1 + self->num_entries, PackFile_Annotations_Entry *);
         else
-            self->entries =
-                mem_allocate_n_typed(self->num_entries + 1,
-                    PackFile_Annotations_Entry *);
+            self->entries = mem_gc_allocate_n_typed(interp,
+                    1 + self->num_entries, PackFile_Annotations_Entry *);
 
     self->entries[self->num_entries]                  =
-                        mem_allocate_typed(PackFile_Annotations_Entry);
+                        mem_gc_allocate_typed(interp, PackFile_Annotations_Entry);
     self->entries[self->num_entries]->bytecode_offset = offset;
     self->entries[self->num_entries]->key             = key_id;
     self->entries[self->num_entries]->value           = value;
@@ -4547,16 +4562,16 @@
 
     switch (type) {
       case PF_ANNOTATION_KEY_TYPE_INT:
-        result = pmc_new(interp, enum_class_Integer);
+        result = Parrot_pmc_new(interp, enum_class_Integer);
         VTABLE_set_integer_native(interp, result, value);
         break;
       case PF_ANNOTATION_KEY_TYPE_NUM:
-        result = pmc_new(interp, enum_class_Float);
+        result = Parrot_pmc_new(interp, enum_class_Float);
         VTABLE_set_number_native(interp, result,
                     PF_CONST(self->code, value)->u.number);
         break;
       default:
-        result = pmc_new(interp, enum_class_String);
+        result = Parrot_pmc_new(interp, enum_class_String);
         VTABLE_set_string_native(interp, result,
                     PF_CONST(self->code, value)->u.string);
     }
@@ -4616,8 +4631,10 @@
     if (key_id == -1) {
         /* Look through entries, storing what we find by key and tracking those
          * that we have values for. */
-        opcode_t *latest_values = mem_allocate_n_zeroed_typed(self->num_keys, opcode_t);
-        opcode_t *have_values   = mem_allocate_n_zeroed_typed(self->num_keys, opcode_t);
+        opcode_t *latest_values = mem_gc_allocate_n_zeroed_typed(interp,
+                self->num_keys, opcode_t);
+        opcode_t *have_values   = mem_gc_allocate_n_zeroed_typed(interp,
+                self->num_keys, opcode_t);
 
         for (i = start_entry; i < self->num_entries; i++) {
             if (self->entries[i]->bytecode_offset >= offset)
@@ -4628,7 +4645,7 @@
         }
 
         /* Create hash of values we have. */
-        result = pmc_new(interp, enum_class_Hash);
+        result = Parrot_pmc_new(interp, enum_class_Hash);
 
         for (i = 0; i < self->num_keys; i++) {
             if (have_values[i]) {
@@ -4639,8 +4656,8 @@
             }
         }
 
-        mem_sys_free(latest_values);
-        mem_sys_free(have_values);
+        mem_gc_free(interp, latest_values);
+        mem_gc_free(interp, have_values);
     }
     else {
         /* Look for latest applicable value of the key. */
@@ -4702,9 +4719,9 @@
             Parrot_ex_throw_from_c_args(interp, NULL, 1,
                 "Unable to append PBC to the current directory");
 
-        mem_sys_free(pf->header);
+        mem_gc_free(interp, pf->header);
         pf->header = NULL;
-        mem_sys_free(pf->dirp);
+        mem_gc_free(interp, pf->dirp);
         pf->dirp   = NULL;
 
     }

Modified: branches/ops_pct/src/packfile/pf_items.c
==============================================================================
--- branches/ops_pct/src/packfile/pf_items.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/packfile/pf_items.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -1415,7 +1415,27 @@
 PF_size_string(ARGIN(const STRING *s))
 {
     ASSERT_ARGS(PF_size_string)
-    opcode_t padded_size = s->bufused;
+    /* TODO: don't break encapsulation on strings */
+    const UINTVAL len = s->bufused;
+    return PF_size_strlen(len);
+}
+
+/*
+
+=item C<size_t PF_size_strlen(const UINTVAL len)>
+
+Reports stored size of C<STRING> in C<opcode_t> units given its in-memory byte length.
+
+=cut
+
+*/
+
+PARROT_PURE_FUNCTION
+size_t
+PF_size_strlen(const UINTVAL len)
+{
+    ASSERT_ARGS(PF_size_strlen)
+    opcode_t padded_size = len;
 
     if (padded_size % sizeof (opcode_t)) {
         padded_size += sizeof (opcode_t) - (padded_size % sizeof (opcode_t));
@@ -1427,7 +1447,8 @@
 
 /*
 
-=item C<char * PF_fetch_cstring(PackFile *pf, const opcode_t **cursor)>
+=item C<char * PF_fetch_cstring(PARROT_INTERP, PackFile *pf, const opcode_t
+**cursor)>
 
 Fetches a cstring from bytecode and returns an allocated copy
 
@@ -1438,11 +1459,11 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 char *
-PF_fetch_cstring(ARGIN(PackFile *pf), ARGIN(const opcode_t **cursor))
+PF_fetch_cstring(PARROT_INTERP, ARGIN(PackFile *pf), ARGIN(const opcode_t **cursor))
 {
     ASSERT_ARGS(PF_fetch_cstring)
     const size_t str_len = strlen((const char *)(*cursor)) + 1;
-    char * const p = (char *)mem_sys_allocate(str_len);
+    char * const p = mem_gc_allocate_n_typed(interp, str_len, char);
     const int wordsize = pf->header->wordsize;
 
     TRACE_PRINTF(("PF_fetch_cstring(): size is %ld...\n", str_len));

Modified: branches/ops_pct/src/parrot_debugger.c
==============================================================================
--- branches/ops_pct/src/parrot_debugger.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/parrot_debugger.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -249,7 +249,7 @@
         STRING *compiler = Parrot_str_new_constant(interp, "PIR");
         STRING *errstr = NULL;
         const char source []= ".sub aux :main\nexit 0\n.end\n";
-        PMC *code = Parrot_compile_string(interp, compiler, source, &errstr);
+        Parrot_compile_string(interp, compiler, source, &errstr);
 
         if (!STRING_is_null(interp, errstr))
             Parrot_io_eprintf(interp, "%Ss\n", errstr);

Modified: branches/ops_pct/src/pbc_dump.c
==============================================================================
--- branches/ops_pct/src/pbc_dump.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pbc_dump.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -62,8 +62,7 @@
 
 /*
 
-=item C<static void
-const_dump(PARROT_INTERP, const PackFile_Segment *segp)>
+=item C<static void const_dump(PARROT_INTERP, const PackFile_Segment *segp)>
 
 Dump the constant table.
 
@@ -81,8 +80,7 @@
 
 /*
 
-=item C<static void
-fixup_dump(PARROT_INTERP, const PackFile_Segment *segp)>
+=item C<static void fixup_dump(PARROT_INTERP, const PackFile_Segment *segp)>
 
 Dump the fixup table.
 
@@ -100,8 +98,7 @@
 
 /*
 
-=item C<static void
-disas_dump(PARROT_INTERP, const PackFile_Segment *self)>
+=item C<static void disas_dump(PARROT_INTERP, const PackFile_Segment *self)>
 
 Disassemble and dump.
 
@@ -136,8 +133,7 @@
 
 /*
 
-=item C<static void
-PackFile_header_dump(PARROT_INTERP, PackFile *pf)>
+=item C<static void PackFile_header_dump(PARROT_INTERP, PackFile *pf)>
 
 Dump the header.
 
@@ -294,7 +290,7 @@
 
         size = PackFile_pack_size(interp,
                 interp->code->base.pf) * sizeof (opcode_t);
-        pack = (opcode_t*) mem_sys_allocate(size);
+        pack = (opcode_t*) Parrot_gc_allocate_memory_chunk(interp, size);
         if (!pack) {
             printf("out of mem\n");
             exit(EXIT_FAILURE);
@@ -312,7 +308,7 @@
             exit(EXIT_FAILURE);
         }
         fclose(fp);
-        mem_sys_free(pack);
+        Parrot_gc_free_memory_chunk(interp, pack);
         Parrot_exit(interp, 0);
     }
 

Modified: branches/ops_pct/src/pbc_merge.c
==============================================================================
--- branches/ops_pct/src/pbc_merge.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pbc_merge.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -257,7 +257,7 @@
 
     /* Read in program. Nabbed from Parrot_pbc_read. */
     chunk_size   = program_size > 0 ? program_size : 1024;
-    program_code = (char *)mem_sys_allocate(chunk_size);
+    program_code = mem_gc_allocate_n_typed(interp, chunk_size, char);
     wanted       = program_size;
     program_size = 0;
     cursor       = (char *)program_code;
@@ -267,8 +267,8 @@
         if (program_size == wanted)
             break;
         chunk_size   = 1024;
-        program_code =
-            (char *)mem_sys_realloc(program_code, program_size + chunk_size);
+        program_code = mem_gc_realloc_n_typed(interp, program_code,
+                program_size + chunk_size, char);
 
         cursor = (char *)program_code + program_size;
     }
@@ -314,7 +314,7 @@
 {
     ASSERT_ARGS(pbc_merge_bytecode)
     int i;
-    opcode_t *bc    = mem_allocate_typed(opcode_t);
+    opcode_t *bc    = mem_gc_allocate_typed(interp, opcode_t);
     opcode_t cursor = 0;
 
     /* Add a bytecode segment. */
@@ -340,7 +340,7 @@
         }
 
         /* Re-allocate the current buffer. */
-        mem_realloc_n_typed(bc, cursor + in_seg->base.size, opcode_t);
+        bc = mem_gc_realloc_n_typed(interp, bc, cursor + in_seg->base.size, opcode_t);
 
         /* Copy data and store cursor. */
         memcpy(bc + cursor, in_seg->base.data,
@@ -378,7 +378,7 @@
                     ARGMOD(PackFile_ByteCode *bc))
 {
     ASSERT_ARGS(pbc_merge_constants)
-    PackFile_Constant   **constants = mem_allocate_typed(PackFile_Constant *);
+    PackFile_Constant   **constants = mem_gc_allocate_typed(interp, PackFile_Constant *);
 
     opcode_t cursor           = 0;
     opcode_t output_const_num = 0;
@@ -414,14 +414,15 @@
 
         /* Allocate space for the constant list, provided we have some. */
         if (in_seg->const_count > 0)
-            constants = (PackFile_Constant **)mem_sys_realloc(constants,
-                (cursor + in_seg->const_count) * sizeof (Parrot_Pointer));
+            constants = mem_gc_realloc_n_typed(interp, constants,
+                    cursor + in_seg->const_count, PackFile_Constant*);
 
         /* Loop over the constants and copy them to the output PBC. */
         for (j = 0; j < in_seg->const_count; j++) {
             /* Get the entry and allocate space for copy. */
             PackFile_Constant *cur_entry = in_seg->constants[j];
-            PackFile_Constant *copy      = mem_allocate_typed(PackFile_Constant);
+            PackFile_Constant *copy      = mem_gc_allocate_typed(interp,
+                    PackFile_Constant);
             STRUCT_COPY(copy, cur_entry);
 
             /* If it's a sub PMC, need to deal with offsets. */
@@ -477,7 +478,8 @@
 {
     ASSERT_ARGS(pbc_merge_fixups)
     PackFile_FixupTable  *fixup_seg;
-    PackFile_FixupEntry **fixups = mem_allocate_typed(PackFile_FixupEntry *);
+    PackFile_FixupEntry **fixups = mem_gc_allocate_typed(interp,
+            PackFile_FixupEntry *);
     opcode_t              cursor = 0;
     int                   i, j;
 
@@ -503,8 +505,8 @@
 
         /* Allocate space for these fixups, provided we have some. */
         if (in_seg->fixup_count > 0) {
-            fixups = (PackFile_FixupEntry **)mem_sys_realloc(fixups,
-                (cursor + in_seg->fixup_count) * sizeof (Parrot_Pointer));
+            fixups = mem_gc_realloc_n_typed(interp, fixups,
+                    cursor + in_seg->fixup_count, PackFile_FixupEntry*);
         }
 
         /* Loop over the fixups and copy them to the output PBC, correcting
@@ -512,10 +514,10 @@
         for (j = 0; j < in_seg->fixup_count; j++) {
             /* Get the entry and allocate space for copies. */
             PackFile_FixupEntry *cur_entry = in_seg->fixups[j];
-            PackFile_FixupEntry *copy      = mem_allocate_typed(
-                PackFile_FixupEntry);
-            char *name_copy = (char *)mem_sys_allocate(
-                strlen(cur_entry->name) + 1);
+            PackFile_FixupEntry *copy      = mem_gc_allocate_typed(interp,
+                    PackFile_FixupEntry);
+            char *name_copy = mem_gc_allocate_n_typed(interp,
+                    strlen(cur_entry->name) + 1, char);
 
             /* Copy type and name. */
             copy->type = cur_entry->type;
@@ -564,9 +566,10 @@
 {
     ASSERT_ARGS(pbc_merge_debugs)
     PackFile_Debug                 *debug_seg;
-    opcode_t                       *lines    = mem_allocate_typed(opcode_t);
+    opcode_t                       *lines    = mem_gc_allocate_typed(interp,
+                                                opcode_t);
     PackFile_DebugFilenameMapping **mappings =
-        mem_allocate_typed(PackFile_DebugFilenameMapping *);
+        mem_gc_allocate_typed(interp, PackFile_DebugFilenameMapping *);
 
     opcode_t num_mappings = 0;
     opcode_t num_lines    = 0;
@@ -580,19 +583,20 @@
         PackFile_Debug *in_seg = inputs[i]->pf->cur_cs->debugs;
 
         /* Concatenate line numbers. */
-        lines = (opcode_t *)mem_sys_realloc(lines,
-                (num_lines + in_seg->base.size) * sizeof (opcode_t));
+        lines = mem_gc_realloc_n_typed(interp, lines,
+                num_lines + in_seg->base.size, opcode_t);
 
         memcpy(lines + num_lines, in_seg->base.data,
             in_seg->base.size * sizeof (opcode_t));
 
         /* Concatenate mappings. */
-        mappings = (PackFile_DebugFilenameMapping **)mem_sys_realloc(mappings,
-                   (num_mappings + in_seg->num_mappings) *
-                   sizeof (Parrot_Pointer));
+        mappings = mem_gc_realloc_n_typed(interp, mappings,
+                num_mappings + in_seg->num_mappings,
+                PackFile_DebugFilenameMapping*);
+
         for (j = 0; j < in_seg->num_mappings; j++) {
-            PackFile_DebugFilenameMapping *mapping = mem_allocate_typed(
-                PackFile_DebugFilenameMapping);
+            PackFile_DebugFilenameMapping *mapping = mem_gc_allocate_typed(
+                    interp, PackFile_DebugFilenameMapping);
             STRUCT_COPY(mapping, in_seg->mappings[j]);
             mapping->offset   += num_lines;
             mapping->filename += inputs[i]->const_start;
@@ -607,9 +611,9 @@
        with merged ones we have created. */
     debug_seg = Parrot_new_debug_seg(interp, bc, num_lines);
     PackFile_add_segment(interp, &pf->directory, (PackFile_Segment*)debug_seg);
-    mem_sys_free(debug_seg->base.data);
+    mem_gc_free(interp, debug_seg->base.data);
     debug_seg->base.data    = lines;
-    mem_sys_free(debug_seg->mappings);
+    mem_gc_free(interp, debug_seg->mappings);
 
     debug_seg->mappings     = mappings;
     debug_seg->num_mappings = num_mappings;
@@ -720,7 +724,6 @@
     ASSERT_ARGS(pbc_merge_begin)
     PackFile_ByteCode   *bc;
     PackFile_ConstTable *ct;
-    opcode_t             const_count = 0;
     int                  i;
 
     /* Create a new empty packfile. */
@@ -738,7 +741,8 @@
             PackFile_Segment *seg = (PackFile_Segment *)pf_dir->segments[j];
             if (seg->type == PF_CONST_SEG) {
                 opcode_t const_count = ((PackFile_ConstTable *)seg)->const_count;
-                inputs[i]->const_map = mem_allocate_n_typed(const_count, opcode_t);
+                inputs[i]->const_map = mem_gc_allocate_n_typed(interp,
+                        const_count, opcode_t);
             }
         }
     }
@@ -755,7 +759,7 @@
     pbc_merge_ctpointers(interp, inputs, num_inputs, bc);
 
     for (i = 0; i < num_inputs; i++) {
-        mem_sys_free(inputs[i]->const_map);
+        mem_gc_free(interp, inputs[i]->const_map);
     }
 
     /* Return merged result. */
@@ -784,7 +788,7 @@
     const size_t size = PackFile_pack_size(interp, pf) * sizeof (opcode_t);
 
     /* Allocate memory. */
-    opcode_t * const pack = (opcode_t*) mem_sys_allocate(size);
+    opcode_t * const pack = (opcode_t*) Parrot_gc_allocate_memory_chunk(interp, size);
 
     /* Write and clean up. */
     PackFile_pack(interp, pf, pack);
@@ -797,7 +801,7 @@
         Parrot_exit(interp, 1);
     }
     fclose(fp);
-    mem_sys_free(pack);
+    mem_gc_free(interp, pack);
 }
 
 
@@ -858,12 +862,11 @@
 
     /* Load each packfile that we are to merge and set up an input
        structure for each of them. */
-    input_files = (pbc_merge_input **)mem_sys_allocate(
-        argc * sizeof (Parrot_Pointer));
+    input_files = mem_gc_allocate_n_typed(interp, argc, pbc_merge_input*);
 
     for (i = 0; i < argc; i++) {
         /* Allocate a struct. */
-        input_files[i] = mem_allocate_typed(pbc_merge_input);
+        input_files[i] = mem_gc_allocate_typed(interp, pbc_merge_input);
 
         /* Set filename */
         input_files[i]->filename = *argv;

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

Modified: branches/ops_pct/src/pmc/arrayiterator.pmc
==============================================================================
--- branches/ops_pct/src/pmc/arrayiterator.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/arrayiterator.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -128,7 +128,7 @@
         GET_ATTR_pos(interp, SELF, pos);
         GET_ATTR_reverse(interp, SELF, reverse);
 
-        clone = pmc_new_init(INTERP, enum_class_ArrayIterator, array);
+        clone = Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, array);
 
         SET_ATTR_pos(interp, clone, pos);
         SET_ATTR_reverse(interp, clone, reverse);

Modified: branches/ops_pct/src/pmc/bigint.pmc
==============================================================================
--- branches/ops_pct/src/pmc/bigint.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/bigint.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2004-2009, Parrot Foundation.
+Copyright (C) 2004-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -37,7 +37,7 @@
 
 static void
 bigint_init(PARROT_INTERP, PMC *self) {
-    BIGINT * const bi = mem_allocate_zeroed_typed(BIGINT);
+    BIGINT * const bi = mem_gc_allocate_zeroed_typed(interp, BIGINT);
     SETATTR_BigInt_bi(interp, self, bi);
     mpz_init(bi->b);
 }
@@ -47,7 +47,7 @@
     BIGINT * bi;
     GETATTR_BigInt_bi(interp, self, bi);
     mpz_clear(bi->b);
-    mem_sys_free(bi);
+    mem_gc_free(interp, bi);
 }
 
 static void
@@ -123,7 +123,7 @@
 
     GETATTR_BigInt_bi(interp, self, bi);
     n = mpz_sizeinbase(bi->b, base) + 2;
-    s = (char *)mem_sys_allocate(n);
+    s = mem_gc_allocate_n_typed(interp, n, char);
     return mpz_get_str(s, base, bi->b);
 }
 
@@ -323,36 +323,6 @@
     mpz_neg(bi_dest->b, bi_self->b);
 }
 
-static void
-bigint_bitwise_shl_bigint_int(PARROT_INTERP, PMC *self,
-                              INTVAL value, PMC *dest)
-{
-    BIGINT *bi_self, *bi_dest;
-    GETATTR_BigInt_bi(interp, self, bi_self);
-    GETATTR_BigInt_bi(interp, dest, bi_dest);
-    /* The third args to mpz_mul_2exp and mpz_tdiv_q_2exp are unsigned, so we
-       need to do something sensible with negative values. */
-    if (value >= 0)
-        mpz_mul_2exp(bi_dest->b, bi_self->b, (unsigned long int)value);
-    else
-        mpz_tdiv_q_2exp(bi_dest->b, bi_self->b, (unsigned long int)-value);
-}
-
-static void
-bigint_bitwise_shr_bigint_int(PARROT_INTERP, PMC *self,
-                              INTVAL value, PMC *dest)
-{
-    BIGINT *bi_self, *bi_dest;
-    GETATTR_BigInt_bi(interp, self, bi_self);
-    GETATTR_BigInt_bi(interp, dest, bi_dest);
-    /* The third args to mpz_mul_2exp and mpz_tdiv_q_2exp are unsigned, so we
-       need to do something sensible with negative values. */
-    if (value >= 0)
-        mpz_tdiv_q_2exp(bi_dest->b, bi_self->b, (unsigned long int)value);
-    else
-        mpz_mul_2exp(bi_dest->b, bi_self->b, (unsigned long int)-value);
-}
-
 #else /* ifdef PARROT_HAS_GMP */
 
 typedef struct BIGINT {
@@ -533,32 +503,6 @@
         "no bigint lib loaded");
 }
 
-static void
-bigint_bitwise_shl_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
-    Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
-        "no bigint lib loaded");
-}
-
-static void
-bigint_bitwise_shl_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest)
-{
-    Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
-        "no bigint lib loaded");
-}
-
-static void
-bigint_bitwise_shr_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
-    Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
-        "no bigint lib loaded");
-}
-
-static void
-bigint_bitwise_shr_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest)
-{
-    Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
-        "no bigint lib loaded");
-}
-
 #endif /* ifdef PARROT_HAS_GMP */
 
 pmclass BigInt auto_attrs {
@@ -596,7 +540,7 @@
     }
 
     VTABLE PMC *clone() {
-        PMC *res = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC *res = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         bigint_set(INTERP, res, SELF);
         return res;
     }
@@ -701,20 +645,6 @@
 
 /*
 
-=item C<PMC *get_bignum()>
-
-Returns SELF
-
-=cut
-
-*/
-
-    VTABLE PMC *get_bignum() {
-        return SELF;
-    }
-
-/*
-
 =item C<INTVAL get_bool()>
 
 Returns the boolean value of the integer.
@@ -749,14 +679,14 @@
     VTABLE STRING *get_string() {
         char   * const s  = bigint_get_string(INTERP, SELF, 10);
         STRING * const ps = Parrot_str_new(INTERP, s, 0);
-        mem_sys_free(s);
+        mem_gc_free(INTERP, s);
         return ps;
     }
 
     VTABLE STRING *get_string_keyed_int(INTVAL base) {
         char   * const s  = bigint_get_string(INTERP, SELF, base);
         STRING * const ps = Parrot_str_new(INTERP, s, 0);
-        mem_sys_free(s);
+        mem_gc_free(INTERP, s);
         return ps;
     }
 
@@ -793,14 +723,14 @@
     }
 
     MULTI PMC *add(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_add_bigint(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *add(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_add_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -815,7 +745,7 @@
     }
 
     VTABLE PMC *add_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_add_bigint_int(INTERP, SELF, value, dest);
         return dest;
@@ -849,14 +779,14 @@
 
 
     MULTI PMC *subtract(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_sub_bigint(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *subtract(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_sub_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -871,7 +801,7 @@
     }
 
     VTABLE PMC *subtract_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_sub_bigint_int(INTERP, SELF, value, dest);
         return dest;
@@ -905,14 +835,14 @@
 
 
     MULTI PMC *multiply(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_mul_bigint(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *multiply(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_mul_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -927,7 +857,7 @@
     }
 
     VTABLE PMC *multiply_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_mul_bigint_int(INTERP, SELF, value, dest);
         return dest;
@@ -957,25 +887,18 @@
             "BigInt: no multiple dispatch variant 'i_multiply_float' for FLOATVAL");
     }
 
-    VTABLE PMC *pow_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        bigint_pow_bigint_int(INTERP, SELF, value, dest);
-        return dest;
-    }
-
-    MULTI PMC *pow(PMC *value, PMC *dest) {
+    METHOD PMC *pow(PMC *value) {
         /* XXX only Integer RHS currently */
         const INTVAL r = VTABLE_get_integer(INTERP, value);
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC *dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_pow_bigint_int(INTERP, SELF, r, dest);
-        return dest;
+        RETURN(PMC *dest);
     }
 
     MULTI PMC *divide(BigInt value, PMC *dest) {
         BIGINT *bi;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_div_bigint(INTERP, SELF, value, dest);
 #if 0
@@ -991,7 +914,7 @@
     }
 
     MULTI PMC *divide(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_div_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1006,7 +929,7 @@
     }
 
     VTABLE PMC *divide_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_div_bigint_int(INTERP, SELF, value, dest);
         return dest;
@@ -1030,14 +953,14 @@
     }
 
     MULTI PMC *floor_divide(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_fdiv_bigint(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *floor_divide(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_fdiv_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1052,7 +975,7 @@
     }
 
     VTABLE PMC *floor_divide_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_fdiv_bigint_int(INTERP, SELF, value, dest);
         return dest;
@@ -1078,14 +1001,14 @@
     }
 
     MULTI PMC *modulus(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_mod_bigint(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *modulus(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_mod_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1155,7 +1078,7 @@
 */
 
     VTABLE PMC *absolute(PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_abs(INTERP, SELF, dest);
         return dest;
@@ -1179,7 +1102,7 @@
 */
 
     VTABLE PMC *neg(PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_neg(INTERP, SELF, dest);
         return dest;
@@ -1188,151 +1111,6 @@
     VTABLE void i_neg() {
         bigint_neg(INTERP, SELF, SELF);
     }
-
-/*
-
-=item C<PMC *bitwise_shl(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_shl_int(INTVAL value, PMC *dest)>
-
-Returns in C<*dest> the shift left of the BigInt by C<*value>.
-
-=item C<void i_bitwise_shl(PMC *value)>
-
-=item C<void i_bitwise_shl_int(INTVAL value)>
-
-Inplace shift left.
-
-=cut
-
-*/
-
-    MULTI PMC *bitwise_shl(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        bigint_bitwise_shl_bigint_int(INTERP, SELF,
-                                      VTABLE_get_integer(INTERP, value),
-                                      dest);
-        return dest;
-    }
-
-    MULTI PMC *bitwise_shl(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        bigint_bitwise_shl_bigint_int(INTERP, SELF,
-                VTABLE_get_integer(interp, value), dest);
-        return dest;
-    }
-    MULTI PMC *bitwise_shl(DEFAULT value, PMC *dest) {
-        UNUSED(dest)
-        Parrot_ex_throw_from_c_args(INTERP, NULL,
-            EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
-            "BigInt: no multiple dispatch variant 'bitwise_shl' for %Ss",
-            VTABLE_name(interp, value));
-    }
-
-    VTABLE PMC *bitwise_shl_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        bigint_bitwise_shl_bigint_int(INTERP, SELF, value, dest);
-        return dest;
-    }
-
-
-    MULTI void i_bitwise_shl(BigInt value) {
-        bigint_bitwise_shl_bigint_int(INTERP, SELF,
-                                      VTABLE_get_integer(INTERP, value),
-                                      SELF);
-    }
-
-    MULTI void i_bitwise_shl(Integer value) {
-        bigint_bitwise_shl_bigint_int(INTERP, SELF,
-                VTABLE_get_integer(interp, value), SELF);
-    }
-
-    MULTI void i_bitwise_shl(DEFAULT value) {
-        Parrot_ex_throw_from_c_args(INTERP, NULL,
-            EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
-            "BigInt: no multiple dispatch variant 'i_bitwise_shl' for %Ss",
-            VTABLE_name(interp, value));
-    }
-
-    VTABLE void i_bitwise_shl_int(INTVAL value) {
-        bigint_bitwise_shl_bigint_int(INTERP, SELF, value, SELF);
-    }
-
-/*
-
-=item C<PMC *bitwise_shr(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_shr_int(INTVAL value, PMC *dest)>
-
-Returns in C<*dest> the shift right of the BigInt by C<*value>.
-
-=item C<void i_bitwise_shr(PMC *value)>
-
-=item C<void i_bitwise_shr_int(INTVAL value)>
-
-Inplace shift left.
-
-=cut
-
-*/
-
-    MULTI PMC *bitwise_shr(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        bigint_bitwise_shr_bigint_int(INTERP, SELF,
-                                      VTABLE_get_integer(INTERP, value),
-                                      dest);
-        return dest;
-    }
-
-    MULTI PMC *bitwise_shr(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        bigint_bitwise_shr_bigint_int(INTERP, SELF,
-                VTABLE_get_integer(interp, value), dest);
-        return dest;
-    }
-
-    MULTI PMC *bitwise_shr(DEFAULT value, PMC *dest) {
-        UNUSED(dest)
-        Parrot_ex_throw_from_c_args(INTERP, NULL,
-            EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
-            "BigInt: no multiple dispatch variant 'bitwise_shr' for %Ss",
-            VTABLE_name(interp, value));
-    }
-
-    VTABLE PMC *bitwise_shr_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        bigint_bitwise_shr_bigint_int(INTERP, SELF, value, dest);
-        return dest;
-    }
-
-
-    MULTI void i_bitwise_shr(BigInt value) {
-        bigint_bitwise_shr_bigint_int(INTERP, SELF,
-                                      VTABLE_get_integer(INTERP, value),
-                                      SELF);
-    }
-
-    MULTI void i_bitwise_shr(Integer value) {
-        bigint_bitwise_shr_bigint_int(INTERP, SELF,
-                VTABLE_get_integer(interp, value), SELF);
-    }
-
-    MULTI void i_bitwise_shr(DEFAULT value) {
-        Parrot_ex_throw_from_c_args(INTERP, NULL,
-            EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
-            "BigInt: no multiple dispatch variant 'i_bitwise_shr' for %Ss",
-            VTABLE_name(interp, value));
-    }
-
-    VTABLE void i_bitwise_shr_int(INTVAL value) {
-        bigint_bitwise_shr_bigint_int(INTERP, SELF, value, SELF);
-    }
 }
 
 /*

Modified: branches/ops_pct/src/pmc/bignum.pmc
==============================================================================
--- branches/ops_pct/src/pmc/bignum.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/bignum.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2004-2009, Parrot Foundation.
+Copyright (C) 2004-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -154,7 +154,7 @@
 static void
 bignum_init(PARROT_INTERP, PMC *self) {
 #ifdef PARROT_HAS_GMP
-    BIGNUM * const bn = mem_allocate_zeroed_typed(BIGNUM);
+    BIGNUM * const bn = mem_gc_allocate_zeroed_typed(interp, BIGNUM);
     SETATTR_BigNum_bn(interp, self, bn);
     mpf_clear(bn->b);
     mpf_init(bn->b);
@@ -170,7 +170,7 @@
     BIGNUM *bn;
     GETATTR_BigNum_bn(interp, self, bn);
     mpf_clear(bn->b);
-    mem_sys_free(bn);
+    mem_gc_free(interp, bn);
 #endif
 }
 
@@ -282,7 +282,7 @@
 
     GETATTR_BigNum_bn(interp, self, bn);
     n = (mpf_get_prec(bn->b)) / log(base) * log(2);
-    s = (char *)mem_sys_allocate(n + 5);
+    s = mem_gc_allocate_n_typed(interp, n + 5, char);
     return mpf_get_str(s, &exponent, base, 0, bn->b);
 }
 
@@ -294,7 +294,7 @@
     mp_exp_t exponent;
 
     GETATTR_BigNum_bn(interp, self, bn);
-    s = (char *)mem_sys_allocate(digits + 5);
+    s = mem_gc_allocate_n_typed(interp, digits + 5, char);
     return mpf_get_str(s, &exponent, base, digits, bn->b);
 }
 
@@ -810,7 +810,7 @@
     }
 
     VTABLE PMC *clone() {
-        PMC *res = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC *res = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         bignum_set(INTERP, res, SELF);
         return res;
     }
@@ -929,20 +929,6 @@
 
 /*
 
-=item C<PMC *get_bignum()>
-
-Returns SELF, keeping floating point precision.
-
-=cut
-
-*/
-
-    VTABLE PMC *get_bignum() {
-        return SELF;
-    }
-
-/*
-
 =item C<FLOATVAL get_bigint()>
 
 Trunc the BigNum to an BigInt.
@@ -1001,21 +987,21 @@
     VTABLE STRING *get_string() {
         char   *s  = bignum_get_string(INTERP, SELF, 10);
         STRING *ps = Parrot_str_new(INTERP, s, 0);
-        mem_sys_free(s);
+        mem_gc_free(interp, s);
         return ps;
     }
 
     VTABLE STRING *get_string_keyed_int(INTVAL base) {
         char   *s  = bignum_get_string(INTERP, SELF, base);
         STRING *ps = Parrot_str_new(INTERP, s, 0);
-        mem_sys_free(s);
+        mem_gc_free(interp, s);
         return ps;
     }
 
     VTABLE STRING *get_string_keyed_int_int(INTVAL base, INTVAL digits) {
         char   *s  = bignum_get_string_size(INTERP, SELF, base, digits);
         STRING *ps = Parrot_str_new(INTERP, s, 0);
-        mem_sys_free(s);
+        mem_gc_free(interp, s);
         return ps;
     }
 
@@ -1060,14 +1046,14 @@
 */
 
     MULTI PMC *add(BigNum value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_add_bignum(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *add(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_add_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1081,7 +1067,7 @@
     }
 
     VTABLE PMC *add_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_add_bignum_int(INTERP, SELF, value, dest);
         return dest;
@@ -1123,14 +1109,14 @@
 */
 
     MULTI PMC *subtract(BigNum value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_sub_bignum(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *subtract(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_sub_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1144,7 +1130,7 @@
     }
 
     VTABLE PMC *subtract_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_sub_bignum_int(INTERP, SELF, value, dest);
         return dest;
@@ -1186,14 +1172,14 @@
 */
 
     MULTI PMC *multiply(BigNum value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_mul_bignum(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *multiply(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_mul_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1207,7 +1193,7 @@
     }
 
     VTABLE PMC *multiply_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_mul_bignum_int(INTERP, SELF, value, dest);
         return dest;
@@ -1242,26 +1228,25 @@
 
 /*
 
-=item C<void pow()>
+=item C<METHOD PMC *pow()>
 
-=cut
+Raises self to the power of value. Replacement method added when the pow()
+vtable was removed
 
-*/
+TODO: Needs testing.
+TODO: Only supports Integer values for now.
 
-    VTABLE PMC *pow_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+=cut
 
-        bignum_pow_bignum_int(INTERP, SELF, value, dest);
-        return dest;
-    }
+*/
 
-    MULTI PMC *pow(PMC *value, PMC *dest) {
+    METHOD PMC *pow(PMC *value) {
         /* only Integer RHS currently. TODO: check number and bignum types */
         INTVAL r = VTABLE_get_integer(INTERP, value);
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC *dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_pow_bignum_int(INTERP, SELF, r, dest);
-        return dest;
+        RETURN(PMC *dest);
     }
 
 /*
@@ -1274,7 +1259,7 @@
 
     MULTI PMC *divide(BigNum value, PMC *dest) {
         BIGNUM *bn;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_div_bignum(INTERP, SELF, value, dest);
 #if 0
@@ -1290,7 +1275,7 @@
     }
 
     MULTI PMC *divide(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_div_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1304,14 +1289,14 @@
     }
 
     VTABLE PMC *divide_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_div_bignum_int(INTERP, SELF, value, dest);
         return dest;
     }
 
     VTABLE PMC *divide_float(FLOATVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_div_bignum_float(INTERP, SELF, value, dest);
         return dest;
@@ -1346,14 +1331,14 @@
 */
 
     MULTI PMC *floor_divide(BigNum value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_fdiv_bignum(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *floor_divide(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_fdiv_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1367,7 +1352,7 @@
     }
 
     VTABLE PMC *floor_divide_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_fdiv_bignum_int(INTERP, SELF, value, dest);
         return dest;
@@ -1451,7 +1436,7 @@
 */
 
     VTABLE PMC *absolute(PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_abs(INTERP, SELF, dest);
         return dest;
@@ -1475,7 +1460,7 @@
 */
 
     VTABLE PMC *neg(PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_neg(INTERP, SELF, dest);
         return dest;

Modified: branches/ops_pct/src/pmc/callcontext.pmc
==============================================================================
--- branches/ops_pct/src/pmc/callcontext.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/callcontext.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -49,18 +49,6 @@
 #define STRINGCELL 2
 #define PMCCELL    3
 
-#define SET_CELL_INT(c) \
-        INTVAL2PTR(Pcc_cell *, PTR2INTVAL(UNTAG_CELL(c)) | INTCELL)
-
-#define SET_CELL_FLOAT(c) \
-        INTVAL2PTR(Pcc_cell *, PTR2INTVAL(UNTAG_CELL(c)) | FLOATCELL)
-
-#define SET_CELL_STRING(c) \
-        INTVAL2PTR(Pcc_cell *, PTR2INTVAL(UNTAG_CELL(c)) | STRINGCELL)
-
-#define SET_CELL_PMC(c) \
-        INTVAL2PTR(Pcc_cell *, PTR2INTVAL(UNTAG_CELL(c)) | PMCCELL)
-
 #define ALLOC_CELL(i) \
     (Pcc_cell *)Parrot_gc_allocate_fixed_size_storage((i), sizeof (Pcc_cell))
 
@@ -269,15 +257,15 @@
 
     switch (CELL_TYPE_MASK(cell)) {
       case INTCELL:
-        result = pmc_new(interp, HLL_TYPE(enum_class_Integer));
+        result = Parrot_pmc_new(interp, HLL_TYPE(enum_class_Integer));
         VTABLE_set_integer_native(interp, result, CELL_INT(cell));
         break;
       case FLOATCELL:
-        result = pmc_new(interp, HLL_TYPE(enum_class_Float));
+        result = Parrot_pmc_new(interp, HLL_TYPE(enum_class_Float));
         VTABLE_set_number_native(interp, result, CELL_FLOAT(cell));
         break;
       case STRINGCELL:
-        result = pmc_new(interp, HLL_TYPE(enum_class_String));
+        result = Parrot_pmc_new(interp, HLL_TYPE(enum_class_String));
         VTABLE_set_string_native(interp, result, CELL_STRING(cell));
         break;
       case PMCCELL:
@@ -363,7 +351,7 @@
     /* yes, this *looks* risky, but it's a Parrot STRING hash internally */
     if (hash && hash->entries) {
         UINTVAL i, j = 0;
-        result  = pmc_new(interp, enum_class_FixedStringArray);
+        result  = Parrot_pmc_new(interp, enum_class_FixedStringArray);
         VTABLE_set_integer_native(interp, result, hash->entries);
 
         for (i = 0; i <= hash->mask; i++) {
@@ -405,7 +393,6 @@
     ATTR PMC      *current_namespace;     /* The namespace we're currently in */
     ATTR PMC      *results_signature;     /* non-const results signature PMC */
     ATTR opcode_t *current_pc;            /* program counter of Sub invocation */
-    ATTR opcode_t *current_results;       /* ptr into code with get_results opcode */
     ATTR PMC      *current_sig;           /* temporary CallContext PMC for active call */
 
     /* deref the constants - we need it all the time */
@@ -596,7 +583,7 @@
                 Parrot_gc_free_fixed_size_storage(INTERP,
                     8 * sizeof (void *), returns_values);
             else
-                mem_sys_free(returns_values);
+                mem_gc_free(INTERP, returns_values);
         }
 
         Parrot_pcc_free_registers(INTERP, SELF);
@@ -1134,8 +1121,6 @@
             parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
             NEXT_CELL(cell) = NULL;
         }
-        else
-            SET_CELL_INT(cell);
 
         CELL_INT(cell) = value;
     }
@@ -1149,8 +1134,6 @@
             parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
             NEXT_CELL(cell) = NULL;
         }
-        else
-            SET_CELL_FLOAT(cell);
 
         CELL_FLOAT(cell) = value;
     }
@@ -1164,8 +1147,6 @@
             parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
             NEXT_CELL(cell) = NULL;
         }
-        else
-            SET_CELL_STRING(cell);
 
         CELL_STRING(cell) = value;
     }
@@ -1179,8 +1160,6 @@
             parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
             NEXT_CELL(cell) = NULL;
         }
-        else
-            SET_CELL_PMC(cell);
 
         CELL_PMC(cell) = value;
     }
@@ -1195,8 +1174,6 @@
             parrot_hash_put(INTERP, hash, k, (void *)cell);
             NEXT_CELL(cell) = NULL;
         }
-        else
-            SET_CELL_INT(cell);
 
         CELL_INT(cell) = value;
     }
@@ -1211,8 +1188,6 @@
             parrot_hash_put(INTERP, hash, k, (void *)cell);
             NEXT_CELL(cell) = NULL;
         }
-        else
-            SET_CELL_FLOAT(cell);
 
         CELL_FLOAT(cell) = value;
     }
@@ -1227,8 +1202,6 @@
             parrot_hash_put(INTERP, hash, k, (void *)cell);
             NEXT_CELL(cell) = NULL;
         }
-        else
-            SET_CELL_STRING(cell);
 
         CELL_STRING(cell) = value;
     }
@@ -1243,8 +1216,6 @@
             parrot_hash_put(INTERP, hash, k, (void *)cell);
             NEXT_CELL(cell) = NULL;
         }
-        else
-            SET_CELL_PMC(cell);
 
         CELL_PMC(cell) = value;
     }
@@ -1408,7 +1379,7 @@
         Pcc_cell    *cell;
         STRING      *short_sig;
         PMC         *type_tuple, *arg_flags, *return_flags;
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         GET_ATTR_positionals(INTERP, SELF, cell);
 
@@ -1490,13 +1461,13 @@
 */
 
     METHOD backtrace(PMC *resume :optional, INTVAL has_resume :opt_flag) {
-        PMC *result  = pmc_new(interp, enum_class_ResizablePMCArray);
+        PMC *result  = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
         PMC *cur_ctx = SELF;
         Parrot_Continuation_attributes *cont = has_resume ? PMC_cont(resume) : NULL;
 
         /* Get starting context, then loop over them. */
         while (cur_ctx) {
-            PMC        *frame       = pmc_new(interp, enum_class_Hash);
+            PMC        *frame       = Parrot_pmc_new(interp, enum_class_Hash);
             PMC        *annotations = NULL;
             Parrot_Sub_attributes *sub;
 
@@ -1525,7 +1496,7 @@
             }
 
             if (!annotations)
-                annotations = pmc_new(interp, enum_class_Hash);
+                annotations = Parrot_pmc_new(interp, enum_class_Hash);
 
             VTABLE_set_pmc_keyed_str(interp, frame, CONST_STRING(interp, "annotations"), annotations);
 

Modified: branches/ops_pct/src/pmc/capture.pmc
==============================================================================
--- branches/ops_pct/src/pmc/capture.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/capture.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -22,13 +22,13 @@
     do { \
         GETATTR_Capture_array((i), (obj), array); \
         if (!array) \
-            SETATTR_Capture_array((i), (obj), pmc_new((i), enum_class_ResizablePMCArray)); \
+            SETATTR_Capture_array((i), (obj), Parrot_pmc_new((i), enum_class_ResizablePMCArray)); \
     } while (0)
 #define CAPTURE_hash_CREATE(i, obj) \
     do { \
         GETATTR_Capture_hash((i), (obj), hash); \
         if (!hash) \
-            SETATTR_Capture_hash((i), (obj),  pmc_new((i), enum_class_Hash)); \
+            SETATTR_Capture_hash((i), (obj),  Parrot_pmc_new((i), enum_class_Hash)); \
     } while (0)
 
 pmclass Capture auto_attrs {
@@ -61,7 +61,7 @@
 
     VTABLE PMC *clone() {
         PMC *array, *hash;
-        PMC *dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC *dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         GET_ATTR_array(INTERP, SELF, array);
         GET_ATTR_hash(INTERP, SELF, hash);
         if (array)

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

Modified: branches/ops_pct/src/pmc/codestring.pmc
==============================================================================
--- branches/ops_pct/src/pmc/codestring.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/codestring.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -189,7 +189,7 @@
         INTVAL  eos;
         INTVAL  jpos;
 
-        linepos = pmc_new(INTERP, enum_class_ResizableIntegerArray);
+        linepos = Parrot_pmc_new(INTERP, enum_class_ResizableIntegerArray);
         /* get the string itself */
         GET_ATTR_str_val(INTERP, SELF, str);
         eos  = Parrot_str_byte_length(INTERP, str);

Modified: branches/ops_pct/src/pmc/complex.pmc
==============================================================================
--- branches/ops_pct/src/pmc/complex.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/complex.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -234,7 +234,7 @@
 */
     VTABLE opcode_t *invoke(void *next) {
         const int   argcP = REG_INT(interp, 3);
-        PMC * const res   = pmc_new(INTERP, enum_class_Complex);
+        PMC * const res   = Parrot_pmc_new(INTERP, enum_class_Complex);
 
         if (argcP == 1) {
             PMC * const arg = REG_PMC(interp, 5);
@@ -316,7 +316,7 @@
     }
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im;
 
         GET_ATTR_re(INTERP, SELF, re);
@@ -436,7 +436,7 @@
     }
 
     VTABLE PMC *get_pmc_keyed_str(STRING *key) {
-        PMC * const    ret = pmc_new(INTERP, enum_class_Float);
+        PMC * const    ret = Parrot_pmc_new(INTERP, enum_class_Float);
         const FLOATVAL val = SELF.get_number_keyed_str(key);
         VTABLE_set_number_native(INTERP, ret, val);
         return ret;
@@ -453,7 +453,7 @@
 */
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
-        PMC * const    ret = pmc_new(INTERP, enum_class_Float);
+        PMC * const    ret = Parrot_pmc_new(INTERP, enum_class_Float);
         const FLOATVAL val = SELF.get_number_keyed_int(key);
         VTABLE_set_number_native(INTERP, ret, val);
         return ret;
@@ -635,7 +635,7 @@
 
     MULTI PMC *add(Complex value, PMC *dest) {
         FLOATVAL self_re, self_im, val_re, val_im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, self_re);
         GET_ATTR_im(INTERP, SELF, self_im);
@@ -651,7 +651,7 @@
 
     MULTI PMC *add(DEFAULT value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -667,7 +667,7 @@
 
     VTABLE PMC *add_float(FLOATVAL value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -724,7 +724,7 @@
 
     MULTI PMC *subtract(Complex value, PMC *dest) {
         FLOATVAL self_re, self_im, val_re, val_im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, self_re);
         GET_ATTR_im(INTERP, SELF, self_im);
@@ -740,7 +740,7 @@
 
     MULTI PMC *subtract(DEFAULT value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -756,7 +756,7 @@
 
     VTABLE PMC *subtract_float(FLOATVAL value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -827,7 +827,7 @@
     MULTI PMC *multiply(Complex value, PMC *dest) {
         FLOATVAL a, b, c, d;
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, a);
         GET_ATTR_im(INTERP, SELF, b);
@@ -841,7 +841,7 @@
 
     MULTI PMC *multiply(DEFAULT value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -857,7 +857,7 @@
 
     VTABLE PMC *multiply_float(FLOATVAL value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -940,7 +940,7 @@
         FLOATVAL self_re, self_im, val_re, val_im;
 
         complex_check_divide_zero(INTERP, value);
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, self_re);
         GET_ATTR_im(INTERP, SELF, self_im);
@@ -970,7 +970,7 @@
         FLOATVAL re, im;
         const FLOATVAL d = VTABLE_get_number(INTERP, value);
         float_check_divide_zero(INTERP, d);
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -984,7 +984,7 @@
     VTABLE PMC *divide_int(INTVAL value, PMC *dest) {
         FLOATVAL re, im;
         int_check_divide_zero(INTERP, value);
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -998,7 +998,7 @@
     VTABLE PMC *divide_float(FLOATVAL value, PMC *dest) {
         FLOATVAL re, im;
         float_check_divide_zero(INTERP, value);
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1085,7 +1085,7 @@
 
     VTABLE PMC *neg(PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1164,7 +1164,7 @@
         GET_ATTR_im(INTERP, SELF, im);
         d = sqrt(re*re + im*im);
 
-        dest = pmc_new(INTERP,
+        dest = Parrot_pmc_new(INTERP,
             Parrot_get_ctx_HLL_type(INTERP, enum_class_Float));
 
         VTABLE_set_number_native(INTERP, dest, d);
@@ -1176,7 +1176,7 @@
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
         d = sqrt(re*re + im*im);
-        pmc_reuse(INTERP, SELF, enum_class_Float, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Float, 0);
         VTABLE_set_number_native(INTERP, SELF, d);
     }
 
@@ -1202,7 +1202,7 @@
 */
 
     METHOD ln() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im, result_re, result_im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1236,7 +1236,7 @@
 */
 
     METHOD exp() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im, f;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1290,7 +1290,7 @@
 */
 
     METHOD sin() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im, result_re, result_im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1320,7 +1320,7 @@
     }
 
     METHOD cos() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im, result_re, result_im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1345,8 +1345,8 @@
     }
 
     METHOD tan() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "sin");
         (PMC *e) = PCCINVOKE(INTERP, SELF, "cos");
@@ -1357,8 +1357,8 @@
     }
 
     METHOD cot() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         (PMC *d) = PCCINVOKE(INTERP, SELF, "cos");
         (PMC *e) = PCCINVOKE(INTERP, SELF, "sin");
 
@@ -1368,8 +1368,8 @@
     }
 
     METHOD sec() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_re(INTERP, d, 1.0);
         SET_ATTR_im(INTERP, d, 0.0);
         (PMC *e) = PCCINVOKE(INTERP, SELF, "cos");
@@ -1380,8 +1380,8 @@
     }
 
     METHOD csc() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         SET_ATTR_re(INTERP, d, 1.0);
         SET_ATTR_im(INTERP, d, 0.0);
@@ -1428,8 +1428,8 @@
 
     METHOD asin() {
         FLOATVAL d_re, d_im, e_re, e_im, self_re, self_im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC *       e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC *       e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         GET_ATTR_re(INTERP, SELF, self_re);
         GET_ATTR_im(INTERP, SELF, self_im);
 
@@ -1456,8 +1456,8 @@
 
     METHOD acos() {
         FLOATVAL d_re, d_im, e_re, e_im, self_re, self_im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC *       e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC *       e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         GET_ATTR_re(INTERP, SELF, self_re);
         GET_ATTR_im(INTERP, SELF, self_im);
 
@@ -1483,8 +1483,8 @@
     }
 
     METHOD atan() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im, d_re, d_im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1507,7 +1507,7 @@
     }
 
     METHOD acot() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1521,7 +1521,7 @@
     }
 
     METHOD acsc() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1535,7 +1535,7 @@
     }
 
     METHOD asec() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1569,7 +1569,7 @@
 */
 
     METHOD sinh() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1581,7 +1581,7 @@
     }
 
     METHOD cosh() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1598,8 +1598,8 @@
     }
 
     METHOD tanh() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "sinh");
         (PMC *e) = PCCINVOKE(INTERP, SELF, "cosh");
@@ -1611,7 +1611,7 @@
 
     METHOD coth() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "tanh");
         GET_ATTR_re(INTERP, d, re);
@@ -1625,7 +1625,7 @@
 
     METHOD csch() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "sinh");
         GET_ATTR_re(INTERP, d, re);
@@ -1639,7 +1639,7 @@
 
     METHOD sech() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "cosh");
         GET_ATTR_re(INTERP, d, re);
@@ -1681,8 +1681,8 @@
 
     METHOD asinh() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1700,8 +1700,8 @@
 
     METHOD acosh() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "acos");
         GET_ATTR_re(INTERP, d, re);
@@ -1714,8 +1714,8 @@
 
     METHOD atanh() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1732,7 +1732,7 @@
     }
 
     METHOD acoth() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1746,7 +1746,7 @@
     }
 
     METHOD acsch() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1760,7 +1760,7 @@
     }
 
     METHOD asech() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1775,9 +1775,12 @@
 
 /*
 
-=item C<PMC *pow(PMC *value, PMC *dest)>
+=item C<METHOD PMC *pow(PMC *value)>
 
-Return SELF to the C<value>th power and return result in C<dest>.
+Raise SELF to the power of value. Replacement for the old pow() vtable, which
+was deleted.
+
+TODO: Requires testing
 
 =item C<METHOD PMC *sqrt()>
 
@@ -1792,42 +1795,23 @@
 
 */
 
-    MULTI PMC *pow(Complex value, PMC *dest) {
-        PMC *l = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+    METHOD pow(PMC * value) {
+        PMC *l = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC *log;
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
+        PMC *dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         Parrot_pcc_invoke_method_from_c_args(interp, SELF, CONST_STRING(interp, "ln"),
                     "->P", &log);
 
-        l = Parrot_Complex_multi_multiply_Complex_PMC(INTERP,
-                    log, value, l);
+        l = VTABLE_multiply(INTERP, log, value, l);
 
         Parrot_pcc_invoke_method_from_c_args(interp, l, CONST_STRING(interp, "exp"),
                     "->P", &dest);
-
-        return dest;
-    }
-
-    MULTI PMC *pow(DEFAULT value, PMC *dest) {
-        PMC *l = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC *log;
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        Parrot_pcc_invoke_method_from_c_args(interp, SELF, CONST_STRING(interp, "ln"),
-                     "->P", &log);
-        l = Parrot_Complex_multi_multiply_DEFAULT_PMC(INTERP, log, value, l);
-        Parrot_pcc_invoke_method_from_c_args(interp, l, CONST_STRING(interp, "exp"),
-                     "->P", &dest);
-
-        return dest;
+        RETURN(PMC *dest);
     }
 
     METHOD sqrt() {
-        PMC * const result = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const result = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         const FLOATVAL absval = SELF.get_number();
         FLOATVAL sx, sy, rx, ry;
         GET_ATTR_re(INTERP, SELF, sx);

Modified: branches/ops_pct/src/pmc/continuation.pmc
==============================================================================
--- branches/ops_pct/src/pmc/continuation.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/continuation.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -157,7 +157,7 @@
 
     VTABLE PMC *clone() {
         /* Start to prepare for subclassable continuations */
-        return pmc_new_init(INTERP, SELF->vtable->base_type, SELF);
+        return Parrot_pmc_new_init(INTERP, SELF->vtable->base_type, SELF);
     }
 
 /*

Modified: branches/ops_pct/src/pmc/coroutine.pmc
==============================================================================
--- branches/ops_pct/src/pmc/coroutine.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/coroutine.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -97,7 +97,7 @@
 
     VTABLE PMC *clone() {
         STRING     *name;
-        PMC * const ret = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const ret = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         PObj_custom_mark_destroy_SETALL(ret);
 
@@ -164,7 +164,7 @@
 
             /* first time set current sub, cont, object */
             if (PMC_IS_NULL(ctx))
-                ctx = pmc_new(INTERP, enum_class_CallContext);
+                ctx = Parrot_pmc_new(INTERP, enum_class_CallContext);
 
             CURRENT_CONTEXT(INTERP) = ctx;
 
@@ -189,7 +189,7 @@
             /* create pad if needed */
             if (!PMC_IS_NULL(lex_info)) {
                 const INTVAL hlltype = Parrot_get_ctx_HLL_type(INTERP, enum_class_LexPad);
-                PMC * const lexpad = pmc_new_init(INTERP, hlltype, lex_info);
+                PMC * const lexpad = Parrot_pmc_new_init(INTERP, hlltype, lex_info);
                 Parrot_pcc_set_lex_pad(INTERP, ctx, lexpad);
                 VTABLE_set_pointer(INTERP, lexpad, ctx);
             }

Modified: branches/ops_pct/src/pmc/cpointer.pmc
==============================================================================
--- branches/ops_pct/src/pmc/cpointer.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/cpointer.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -99,7 +99,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new_noinit(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new_noinit(INTERP, SELF->vtable->base_type);
         void       *ptr;
         STRING     *sig;
 

Modified: branches/ops_pct/src/pmc/default.pmc
==============================================================================
--- branches/ops_pct/src/pmc/default.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/default.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -148,7 +148,7 @@
 static void
 propagate_std_props(PARROT_INTERP, PMC *self, PMC *prop_hash) {
     if (self->vtable->flags & (VTABLE_IS_CONST_FLAG | VTABLE_IS_READONLY_FLAG)){
-        PMC * const pmc_true  = pmc_new(interp, enum_class_Integer);
+        PMC * const pmc_true  = Parrot_pmc_new(interp, enum_class_Integer);
         VTABLE_set_integer_native(interp, pmc_true, 1);
         VTABLE_set_pmc_keyed_str(interp, prop_hash, CONST_STRING(interp, "_ro"), pmc_true);
     }
@@ -189,7 +189,7 @@
 check_get_std_props(PARROT_INTERP, PMC *self, STRING *key) {
     if ((self->vtable->flags & (VTABLE_IS_CONST_FLAG | VTABLE_IS_READONLY_FLAG))
        && Parrot_str_equal(interp, key, CONST_STRING(interp, "_ro"))) {
-        PMC * const ret_val  = pmc_new(interp, enum_class_Integer);
+        PMC * const ret_val  = Parrot_pmc_new(interp, enum_class_Integer);
         VTABLE_set_integer_native(interp, ret_val, 1);
         return ret_val;
     }
@@ -214,7 +214,7 @@
 make_prop_hash(PARROT_INTERP, PMC *self) {
     PMC *prop;
 
-    PMC_metadata(self) = prop = pmc_new(interp, enum_class_Hash);
+    PMC_metadata(self) = prop = Parrot_pmc_new(interp, enum_class_Hash);
     propagate_std_props(interp, self, prop);
     return prop;
 }
@@ -332,16 +332,16 @@
     VTABLE PMC *instantiate(PMC *init) {
         const INTVAL type = VTABLE_type(INTERP, SELF);
 
-        /* Ensure no looping, as pmc_new calls the instantiate vtable entry for
+        /* Ensure no looping, as Parrot_pmc_new calls the instantiate vtable entry for
          * classes. */
         if (PObj_is_class_TEST(SELF))
             Parrot_ex_throw_from_c_args(interp, NULL, 1,
                     "All high-level classes should override instantiate");
 
         if (!PMC_IS_NULL(init))
-            return pmc_new_init(INTERP, type, init);
+            return Parrot_pmc_new_init(INTERP, type, init);
 
-        return pmc_new(INTERP, type);
+        return Parrot_pmc_new(INTERP, type);
     }
 
 /*
@@ -612,7 +612,7 @@
         STRING * const undef = CONST_STRING(INTERP, "Undef");
 
         if (VTABLE_isa(INTERP, value, undef))
-            pmc_reuse(INTERP, SELF, value->vtable->base_type, 0);
+            Parrot_pmc_reuse(INTERP, SELF, value->vtable->base_type, 0);
         else
             SELF.set_pmc(value);
     }
@@ -632,7 +632,7 @@
 */
 
     VTABLE void morph(PMC* type) {
-        pmc_reuse(INTERP, SELF, VTABLE_get_integer(interp, type), 0);
+        Parrot_pmc_reuse(INTERP, SELF, VTABLE_get_integer(interp, type), 0);
     }
 
 /*
@@ -936,7 +936,7 @@
 
     VTABLE PMC *inspect_str(STRING *name) {
         if (Parrot_str_equal(interp, name, CONST_STRING(interp, "flags"))) {
-            PMC *found = pmc_new(interp, enum_class_Integer);
+            PMC *found = Parrot_pmc_new(interp, enum_class_Integer);
             VTABLE_set_integer_native(interp, found,
                     (INTVAL)PObj_get_FLAGS(SELF));
             return found;
@@ -960,7 +960,7 @@
 
 */
     VTABLE PMC *inspect() {
-        PMC    *metadata           = pmc_new(interp, enum_class_Hash);
+        PMC    *metadata           = Parrot_pmc_new(interp, enum_class_Hash);
         STRING * const flags_str   = CONST_STRING(interp, "flags");
 
         VTABLE_set_pmc_keyed_str(interp, metadata, flags_str,
@@ -987,9 +987,9 @@
 
         if (PMC_IS_NULL(_class)) {
             INTVAL type      = VTABLE_type(interp, SELF);
-            PMC   *type_num  = pmc_new(interp, enum_class_Integer);
+            PMC   *type_num  = Parrot_pmc_new(interp, enum_class_Integer);
             VTABLE_set_integer_native(interp, type_num, type);
-            return pmc_new_init(interp, enum_class_PMCProxy, type_num);
+            return Parrot_pmc_new_init(interp, enum_class_PMCProxy, type_num);
         }
 
         return _class;
@@ -1158,7 +1158,7 @@
 */
 
     VTABLE PMC *add_float(FLOATVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() + value);
@@ -1692,678 +1692,6 @@
 
 /*
 
-=item C<PMC *pow(PMC *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'pow'.
-
-=cut
-
-*/
-
-    VTABLE PMC *pow(PMC *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "pow", "PPP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<PMC *pow_int(INTVAL value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'pow_int'.
-
-=cut
-
-*/
-
-    VTABLE PMC *pow_int(INTVAL value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "pow_int", "PIP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<PMC *pow_float(FLOATVAL value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'pow_float'.
-
-=cut
-
-*/
-
-    VTABLE PMC *pow_float(FLOATVAL value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "pow_float", "PNP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<void i_pow(PMC *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_pow'.
-
-=cut
-
-*/
-
-    VTABLE void i_pow(PMC *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_pow", "PP", SELF, value);
-    }
-
-/*
-
-=item C<void i_pow_int(INTVAL value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_pow_int'.
-
-=cut
-
-*/
-
-    VTABLE void i_pow_int(INTVAL value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_pow_int", "PI", SELF, value);
-    }
-
-/*
-
-=item C<void i_pow_float(FLOATVAL value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_pow_float'.
-
-=cut
-
-*/
-
-    VTABLE void i_pow_float(FLOATVAL value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_pow_float", "PN", SELF, value);
-    }
-
-/*
-
-=item C<PMC *bitwise_or(PMC *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_or'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_or(PMC *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_or", "PPP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<PMC *bitwise_or_int(INTVAL value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_or_int'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_or_int(INTVAL value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_or_int", "PIP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<void i_bitwise_or(PMC *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_or'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_or(PMC *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_or", "PP", SELF, value);
-    }
-
-/*
-
-=item C<void i_bitwise_or_int(INTVAL value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_or_int'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_or_int(INTVAL value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_or_int", "PI", SELF, value);
-    }
-
-/*
-
-=item C<PMC *bitwise_and(PMC *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_and'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_and(PMC *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_and", "PPP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<PMC *bitwise_and_int(INTVAL value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_and_int'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_and_int(INTVAL value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_and_int", "PIP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<void i_bitwise_and(PMC *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_and'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_and(PMC *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_and", "PP", SELF, value);
-    }
-
-/*
-
-=item C<void i_bitwise_and_int(INTVAL value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_and_int'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_and_int(INTVAL value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_and_int", "PI", SELF, value);
-    }
-
-/*
-
-=item C<PMC *bitwise_xor(PMC *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_xor'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_xor(PMC *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_xor", "PPP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<PMC *bitwise_xor_int(INTVAL value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_xor_int'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_xor_int(INTVAL value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_xor_int", "PIP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<void i_bitwise_xor(PMC *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_xor'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_xor(PMC *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_xor", "PP", SELF, value);
-    }
-
-/*
-
-=item C<void i_bitwise_xor_int(INTVAL value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_xor_int'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_xor_int(INTVAL value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_xor_int", "PI", SELF, value);
-    }
-
-/*
-
-=item C<PMC *bitwise_ors(PMC *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_ors'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_ors(PMC *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_ors", "PPP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<PMC *bitwise_ors_str(STRING *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_ors_str'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_ors_str(STRING *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_ors_str", "PSP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<void i_bitwise_ors(PMC *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_ors'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_ors(PMC *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_ors", "PP", SELF, value);
-    }
-
-/*
-
-=item C<void i_bitwise_ors_str(STRING *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_ors_str'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_ors_str(STRING *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_ors_str", "PS", SELF, value);
-    }
-
-/*
-
-=item C<PMC *bitwise_ands(PMC *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_ands'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_ands(PMC *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_ands", "PPP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<PMC *bitwise_ands_str(STRING *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_ands_str'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_ands_str(STRING *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_ands_str", "PSP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<void i_bitwise_ands(PMC *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_ands'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_ands(PMC *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_ands", "PP", SELF, value);
-    }
-
-/*
-
-=item C<void i_bitwise_ands_str(STRING *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_ands_str'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_ands_str(STRING *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_ands_str", "PS", SELF, value);
-    }
-
-/*
-
-=item C<PMC *bitwise_xors(PMC *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_xors'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_xors(PMC *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_xors", "PPP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<PMC *bitwise_xors_str(STRING *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_xors_str'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_xors_str(STRING *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_xors_str", "PSP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<void i_bitwise_xors(PMC *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_xors'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_xors(PMC *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_xors", "PP", SELF, value);
-    }
-
-/*
-
-=item C<void i_bitwise_xors_str(STRING *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_xors_str'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_xors_str(STRING *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_xors_str", "PS", SELF, value);
-    }
-
-/*
-
-=item C<PMC *bitwise_shl(PMC *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_shl'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_shl(PMC *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_shl", "PPP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<PMC *bitwise_shl_int(INTVAL value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_shl_int'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_shl_int(INTVAL value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_shl_int", "PIP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<void i_bitwise_shl(PMC *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_shl'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_shl(PMC *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_shl", "PP", SELF, value);
-    }
-
-/*
-
-=item C<void i_bitwise_shl_int(INTVAL value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_shl_int'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_shl_int(INTVAL value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_shl_int", "PI", SELF, value);
-    }
-
-/*
-
-=item C<PMC *bitwise_shr(PMC *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_shr'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_shr(PMC *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_shr", "PPP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<PMC *bitwise_shr_int(INTVAL value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_shr_int'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_shr_int(INTVAL value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_shr_int", "PIP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<void i_bitwise_shr(PMC *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_shr'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_shr(PMC *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_shr", "PP", SELF, value);
-    }
-
-/*
-
-=item C<void i_bitwise_shr_int(INTVAL value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_shr_int'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_shr_int(INTVAL value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_shr_int", "PI", SELF, value);
-    }
-
-/*
-
-=item C<PMC *bitwise_lsr(PMC *value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_lsr'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_lsr(PMC *value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_lsr", "PPP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<PMC *bitwise_lsr_int(INTVAL value, PMC *dest)>
-
-Default fallback. Performs a multiple dispatch call for 'bitwise_lsr_int'.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_lsr_int(INTVAL value, PMC *dest) {
-        PMC *result = PMCNULL;
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "bitwise_lsr_int", "PIP->P", SELF, value, dest, &result);
-        return result;
-    }
-
-/*
-
-=item C<void i_bitwise_lsr(PMC *value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_lsr'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_lsr(PMC *value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_lsr", "PP", SELF, value);
-    }
-
-/*
-
-=item C<void i_bitwise_lsr_int(INTVAL value)>
-
-Default fallback. Performs a multiple dispatch call for 'i_bitwise_lsr_int'.
-
-=cut
-
-*/
-
-    VTABLE void i_bitwise_lsr_int(INTVAL value) {
-        Parrot_mmd_multi_dispatch_from_c_args(interp,
-                "i_bitwise_lsr_int", "PI", SELF, value);
-    }
-
-/*
-
 =item C<INTVAL cmp(PMC *value)>
 
 Default fallback. Performs a multiple dispatch call for 'cmp'.

Modified: branches/ops_pct/src/pmc/env.pmc
==============================================================================
--- branches/ops_pct/src/pmc/env.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/env.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -74,7 +74,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 /*
@@ -215,7 +215,7 @@
         if (!retval)
             retval = string_from_literal(INTERP, "");
 
-        return_pmc = pmc_new(INTERP, enum_class_String);
+        return_pmc = Parrot_pmc_new(INTERP, enum_class_String);
 
         VTABLE_set_string_native(INTERP, return_pmc, retval);
         return return_pmc;

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

Modified: branches/ops_pct/src/pmc/exporter.pmc
==============================================================================
--- branches/ops_pct/src/pmc/exporter.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/exporter.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -231,7 +231,7 @@
 
         if (got_glb) {
             STRING * const s_empty      = CONST_STRING(interp, "");
-            PMC           *temp_globals = pmc_new(interp, enum_class_Hash);
+            PMC           *temp_globals = Parrot_pmc_new(interp, enum_class_Hash);
 
             if (PMC_IS_NULL(glb)) {
                 temp_globals = PMCNULL;

Modified: branches/ops_pct/src/pmc/filehandle.pmc
==============================================================================
--- branches/ops_pct/src/pmc/filehandle.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/filehandle.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -153,7 +153,7 @@
             }
 
             if (data_struct->buffer_start)
-                mem_sys_free(data_struct->buffer_start);
+                mem_gc_free(INTERP, data_struct->buffer_start);
         }
     }
 
@@ -374,7 +374,7 @@
                 add_history(r);
 
             string_result = Parrot_str_new(INTERP, r, 0);
-            mem_sys_free(r);
+            mem_internal_free(r);
         }
 #else
         if (got_prompt)

Modified: branches/ops_pct/src/pmc/fixedbooleanarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/fixedbooleanarray.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/fixedbooleanarray.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -74,7 +74,7 @@
         unsigned char *bit_array;
         GET_ATTR_bit_array(INTERP, SELF, bit_array);
         if (bit_array)
-            mem_sys_free(bit_array);
+            mem_gc_free(INTERP, bit_array);
     }
 
 /*
@@ -90,7 +90,7 @@
     VTABLE PMC *clone() {
         unsigned char * my_bit_array, * clone_bit_array;
         UINTVAL         resize_threshold, size;
-        PMC *   const   dest   = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC *   const   dest   = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         GET_ATTR_bit_array(INTERP, SELF, my_bit_array);
         GET_ATTR_size(INTERP, SELF, size);
@@ -102,7 +102,7 @@
             SET_ATTR_size(INTERP, dest, size);
             SET_ATTR_resize_threshold(INTERP, dest, resize_threshold);
 
-            clone_bit_array = (unsigned char*)mem_sys_allocate(size_in_bytes);
+            clone_bit_array = mem_gc_allocate_n_typed(INTERP, size_in_bytes, unsigned char);
             mem_sys_memcopy(clone_bit_array, my_bit_array, size_in_bytes);
 
             SET_ATTR_bit_array(INTERP, dest, clone_bit_array);
@@ -296,7 +296,7 @@
 */
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
-        PMC  * const ret = pmc_new(INTERP, enum_class_Boolean);
+        PMC  * const ret = Parrot_pmc_new(INTERP, enum_class_Boolean);
         const INTVAL val = SELF.get_integer_keyed_int(key);
         VTABLE_set_integer_native(INTERP, ret, val);
         return ret;
@@ -330,6 +330,7 @@
     VTABLE void set_integer_native(INTVAL size) {
         const size_t size_in_bytes = get_size_in_bytes(size);
         UINTVAL old_size;
+        unsigned char *bit_array;
 
         GET_ATTR_size(INTERP, SELF, old_size);
 
@@ -339,8 +340,9 @@
 
         SET_ATTR_size(INTERP, SELF, size);
         SET_ATTR_resize_threshold(INTERP, SELF, size_in_bytes * BITS_PER_CHAR);
-        SET_ATTR_bit_array(INTERP, SELF,
-                (unsigned char*)mem_sys_allocate_zeroed(size_in_bytes));
+        bit_array = mem_gc_allocate_n_typed(INTERP, size_in_bytes, unsigned char);
+        memset(bit_array, 0, size_in_bytes);
+        SET_ATTR_bit_array(INTERP, SELF, bit_array);
     }
 
 /*
@@ -427,7 +429,7 @@
 
     VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
         INTVAL tempInt;
-        PMC * const tempPMC = pmc_new(INTERP, enum_class_Boolean);
+        PMC * const tempPMC = Parrot_pmc_new(INTERP, enum_class_Boolean);
 
         VTABLE_set_string_native(INTERP, tempPMC, value);
         tempInt = VTABLE_get_integer(INTERP, tempPMC);
@@ -493,7 +495,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 

Modified: branches/ops_pct/src/pmc/fixedfloatarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/fixedfloatarray.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/fixedfloatarray.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -43,7 +43,7 @@
         FLOATVAL *float_array;
         GET_ATTR_float_array(INTERP, SELF, float_array);
         if (float_array)
-            mem_sys_free(float_array);
+            mem_gc_free(INTERP, float_array);
     }
 
 /*
@@ -60,7 +60,7 @@
         INTVAL    size;
         FLOATVAL *self_float_array, *dest_float_array;
         size_t mem_size;
-        PMC   * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC   * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         GET_ATTR_float_array(INTERP, SELF, self_float_array);
 
         if (!self_float_array)
@@ -70,7 +70,7 @@
         SET_ATTR_size(INTERP, dest, size);
         mem_size          = size * sizeof (FLOATVAL);
 
-        dest_float_array  = (FLOATVAL*)mem_sys_allocate(mem_size);
+        dest_float_array  = (FLOATVAL*)Parrot_gc_allocate_memory_chunk(INTERP, mem_size);
         mem_sys_memcopy(dest_float_array, self_float_array, mem_size);
         SET_ATTR_float_array(INTERP, dest, dest_float_array);
         PObj_custom_destroy_SET(dest);
@@ -89,7 +89,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 /*
@@ -248,7 +248,7 @@
 */
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
-        PMC    * const ret = pmc_new(INTERP, enum_class_Float);
+        PMC    * const ret = Parrot_pmc_new(INTERP, enum_class_Float);
         const FLOATVAL val = SELF.get_number_keyed_int(key);
 
         VTABLE_set_number_native(INTERP, ret, val);
@@ -289,7 +289,7 @@
 
         SET_ATTR_size(INTERP, SELF, new_size);
         SET_ATTR_float_array(INTERP, SELF,
-                mem_allocate_n_typed(new_size, FLOATVAL));
+                mem_gc_allocate_n_typed(INTERP, new_size, FLOATVAL));
         PObj_custom_destroy_SET(SELF);
     }
 
@@ -374,7 +374,7 @@
 
     VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
         FLOATVAL tempNum;
-        PMC * const tempPMC = pmc_new(INTERP, enum_class_Float);
+        PMC * const tempPMC = Parrot_pmc_new(INTERP, enum_class_Float);
 
         VTABLE_set_string_native(INTERP, tempPMC, value);
         tempNum = VTABLE_get_number(INTERP, tempPMC);

Modified: branches/ops_pct/src/pmc/fixedintegerarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/fixedintegerarray.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/fixedintegerarray.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -57,7 +57,7 @@
         INTVAL* int_array;
         GET_ATTR_int_array(INTERP, SELF, int_array);
         if (int_array)
-            mem_sys_free(int_array);
+            Parrot_gc_free_memory_chunk(INTERP, int_array);
     }
 
 /*
@@ -81,8 +81,8 @@
         INTVAL * int_array;
         PMC    * const dest =
             PObj_constant_TEST(SELF)
-                ? constant_pmc_new(INTERP, SELF->vtable->base_type)
-                : pmc_new(INTERP, SELF->vtable->base_type);
+                ? Parrot_pmc_new_constant(INTERP, SELF->vtable->base_type)
+                : Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         GET_ATTR_int_array(INTERP, SELF, int_array);
 
@@ -92,7 +92,7 @@
 
             GET_ATTR_size(INTERP, SELF, size);
 
-            dest_int_array = mem_allocate_n_typed(size, INTVAL);
+            dest_int_array = mem_gc_allocate_n_typed(INTERP, size, INTVAL);
             SET_ATTR_size(INTERP, dest, size);
             SET_ATTR_int_array(INTERP, dest, dest_int_array);
 
@@ -294,7 +294,7 @@
 */
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
-        PMC  * const ret = pmc_new(INTERP, enum_class_Integer);
+        PMC  * const ret = Parrot_pmc_new(INTERP, enum_class_Integer);
         const INTVAL val = SELF.get_integer_keyed_int(key);
         VTABLE_set_integer_native(INTERP, ret, val);
         return ret;
@@ -338,7 +338,7 @@
         SET_ATTR_size(INTERP, SELF, size);
         GET_ATTR_int_array(INTERP, SELF, int_array);
         SET_ATTR_int_array(INTERP, SELF,
-                mem_realloc_n_typed(int_array, size, INTVAL));
+                mem_gc_realloc_n_typed(INTERP, int_array, size, INTVAL));
         PObj_custom_destroy_SET(SELF);
     }
 
@@ -422,10 +422,10 @@
 
     VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
         INTVAL tempInt;
-        PMC  * const tempPMC = temporary_pmc_new(INTERP, enum_class_Integer);
+        PMC  * const tempPMC = Parrot_pmc_new_temporary(INTERP, enum_class_Integer);
         VTABLE_set_string_native(INTERP, tempPMC, value);
         tempInt        = VTABLE_get_integer(INTERP, tempPMC);
-        temporary_pmc_free(interp, tempPMC);
+        Parrot_pmc_free_temporary(interp, tempPMC);
         SELF.set_integer_keyed_int(key, tempInt);
     }
 
@@ -532,7 +532,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 /*

Modified: branches/ops_pct/src/pmc/fixedpmcarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/fixedpmcarray.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/fixedpmcarray.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -88,7 +88,7 @@
 
     VTABLE void destroy() {
         if (PMC_array(SELF))
-            mem_sys_free(PMC_array(SELF));
+            mem_gc_free(INTERP, PMC_array(SELF));
     }
 
 /*
@@ -102,12 +102,12 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest  = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest  = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         const INTVAL size = PMC_size(SELF);
 
         if (size) {
             PMC_size(dest)  = size;
-            PMC_array(dest) = mem_allocate_n_typed(size, PMC *);
+            PMC_array(dest) = mem_gc_allocate_n_zeroed_typed(INTERP, size, PMC *);
             mem_copy_n_typed(PMC_array(dest), PMC_array(SELF), size, PMC *);
             PObj_custom_mark_destroy_SETALL(dest);
         }
@@ -346,7 +346,7 @@
         box = SELF.get_pmc_keyed_int(k);
 
         if (box == NULL)
-            box = pmc_new(INTERP, enum_class_Undef);
+            box = Parrot_pmc_new(INTERP, enum_class_Undef);
 
         return VTABLE_get_pmc_keyed(INTERP, box, nextkey);
     }
@@ -377,7 +377,7 @@
                     _("FixedPMCArray: Cannot set array size to a negative number"));
 
         PMC_size(SELF) = size;
-        data           = mem_allocate_n_typed(size, PMC *);
+        data           = mem_gc_allocate_n_zeroed_typed(INTERP, size, PMC *);
 
         for (i = 0; i < size; i++)
             data[i] = PMCNULL;
@@ -397,10 +397,10 @@
                     _("Can't set self from this type"));
 
         if (PMC_array(SELF))
-            mem_sys_free(PMC_array(SELF));
+            mem_gc_free(INTERP, PMC_array(SELF));
 
         size            = PMC_size(SELF) = VTABLE_elements(INTERP, value);
-        PMC_array(SELF) = mem_allocate_n_zeroed_typed(size, PMC *);
+        PMC_array(SELF) = mem_gc_allocate_n_zeroed_typed(INTERP, size, PMC *);
 
         for (i = 0; i < size; i++)
             (PMC_array(SELF))[i] = VTABLE_get_pmc_keyed_int(INTERP, value, i);
@@ -418,7 +418,7 @@
 */
 
     VTABLE void set_integer_keyed_int(INTVAL key, INTVAL value) {
-        PMC * const val = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const val = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_Integer));
 
         VTABLE_set_integer_native(INTERP, val, value);
@@ -436,7 +436,7 @@
 */
 
     VTABLE void set_integer_keyed(PMC *key, INTVAL value) {
-        PMC * const val = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const val = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_Integer));
 
         VTABLE_set_integer_native(INTERP, val, value);
@@ -457,7 +457,7 @@
 */
 
     VTABLE void set_number_keyed_int(INTVAL key, FLOATVAL value) {
-        PMC * const val = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const val = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_Float));
 
         VTABLE_set_number_native(INTERP, val, value);
@@ -487,7 +487,7 @@
 
             /* TT #1295: autovivify an Array and insert it in SELF */
             if (!box)
-                box = pmc_new(INTERP, SELF.type());
+                box = Parrot_pmc_new(INTERP, SELF.type());
 
             VTABLE_set_number_keyed(INTERP, box, nextkey, value);
         }
@@ -504,7 +504,7 @@
 */
 
     VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
-        PMC * const val = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const val = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_String));
 
         VTABLE_set_string_native(INTERP, val, value);
@@ -523,7 +523,7 @@
 */
 
     VTABLE void set_string_keyed(PMC *key, STRING *value) {
-        PMC * const val = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const val = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_String));
 
         VTABLE_set_string_native(INTERP, val, value);
@@ -575,7 +575,7 @@
 
             /* TT #1295: autovivify an Array and insert it in SELF */
             if (!box)
-                box = pmc_new(INTERP, SELF.type());
+                box = Parrot_pmc_new(INTERP, SELF.type());
 
             VTABLE_set_pmc_keyed(INTERP, box, nextkey, value);
         }
@@ -632,7 +632,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 /*

Modified: branches/ops_pct/src/pmc/fixedstringarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/fixedstringarray.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/fixedstringarray.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -60,7 +60,7 @@
         GET_ATTR_str_array(INTERP, SELF, str_array);
 
         if (str_array)
-            mem_sys_free(str_array);
+            mem_gc_free(INTERP, str_array);
     }
 
 /*
@@ -76,7 +76,7 @@
     VTABLE PMC *clone() {
 
         STRING    **my_str_array, **dest_str_array;
-        PMC        *const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC        *const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         GET_ATTR_str_array(INTERP, SELF, my_str_array);
 
@@ -87,7 +87,7 @@
             GET_ATTR_size(INTERP, SELF, size);
             mem_size = size * sizeof (STRING *);
 
-            dest_str_array = mem_allocate_n_zeroed_typed(size, STRING *);
+            dest_str_array = mem_gc_allocate_n_zeroed_typed(INTERP, size, STRING *);
             mem_sys_memcopy(dest_str_array, my_str_array, mem_size);
             SET_ATTR_str_array(INTERP, dest, dest_str_array);
             SET_ATTR_size(INTERP, dest, size);
@@ -150,7 +150,7 @@
 
 */
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 /*
@@ -198,7 +198,6 @@
         return (FLOATVAL)e;
     }
 
-
 /*
 
 =item C<INTVAL get_integer_keyed_int(INTVAL key)>
@@ -311,7 +310,7 @@
 */
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
-        PMC    * const ret = pmc_new(INTERP, enum_class_String);
+        PMC    * const ret = Parrot_pmc_new(INTERP, enum_class_String);
         STRING * const val = SELF.get_string_keyed_int(key);
 
         VTABLE_set_string_native(INTERP, ret, val);
@@ -356,7 +355,7 @@
 
         SET_ATTR_size(INTERP, SELF, new_size);
         SET_ATTR_str_array(INTERP, SELF,
-                (STRING**)mem_sys_allocate_zeroed(new_size * sizeof (STRING*)));
+                mem_gc_allocate_n_zeroed_typed(INTERP, new_size, STRING*));
 
         PObj_custom_mark_destroy_SETALL(SELF);
     }

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

Modified: branches/ops_pct/src/pmc/handle.pmc
==============================================================================
--- branches/ops_pct/src/pmc/handle.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/handle.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -25,7 +25,7 @@
 #include "parrot/parrot.h"
 #include "../src/io/io_private.h"
 
-pmclass Handle provides Handle {
+pmclass Handle provides Handle manual_attrs {
     /* TODO: Consider encapsulating PIOHANDLE as a PMC type, for subclassing */
     ATTR PIOHANDLE os_handle;         /* Low level OS descriptor      */
 

Modified: branches/ops_pct/src/pmc/hash.pmc
==============================================================================
--- branches/ops_pct/src/pmc/hash.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/hash.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -106,7 +106,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         parrot_hash_clone(INTERP, (Hash *)SELF.get_pointer(),
                    (Hash *)VTABLE_get_pointer(INTERP, dest));
@@ -445,7 +445,7 @@
             box = hash_value_to_pmc(INTERP, hash, b->value);
         else {
             /* autovivify an Hash */
-            box = pmc_new(INTERP, SELF.type());
+            box = Parrot_pmc_new(INTERP, SELF.type());
             parrot_hash_put(INTERP, hash, keystr,
                     hash_value_from_pmc(INTERP, hash, box));
         }
@@ -625,7 +625,7 @@
             box = hash_value_to_pmc(INTERP, hash, b->value);
         else {
             /* autovivify an Hash */
-            box = pmc_new(INTERP, SELF.type());
+            box = Parrot_pmc_new(INTERP, SELF.type());
             parrot_hash_put(INTERP, hash, keystr,
                     hash_value_from_pmc(INTERP, hash, box));
         }
@@ -753,7 +753,7 @@
 
         /* autovivify an Hash */
         if (PMC_IS_NULL(box))
-            box = pmc_new(INTERP, SELF.type());
+            box = Parrot_pmc_new(INTERP, SELF.type());
 
         VTABLE_set_number_keyed(INTERP, box, nextkey, value);
     }
@@ -799,7 +799,7 @@
             box = hash_value_to_pmc(INTERP, hash, b->value);
         else {
             /* autovivify an Hash */
-            box = pmc_new(INTERP, SELF.type());
+            box = Parrot_pmc_new(INTERP, SELF.type());
             parrot_hash_put(INTERP, hash, keystr,
                     hash_value_from_pmc(INTERP, hash, box));
         }
@@ -994,7 +994,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_HashIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_HashIterator, SELF);
     }
 
 /*

Modified: branches/ops_pct/src/pmc/hashiterator.pmc
==============================================================================
--- branches/ops_pct/src/pmc/hashiterator.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/hashiterator.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -229,7 +229,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
                 "StopIteration");
 
-        ret = pmc_new(INTERP, enum_class_HashIteratorKey);
+        ret = Parrot_pmc_new(INTERP, enum_class_HashIteratorKey);
         VTABLE_set_pointer_keyed_int(INTERP, ret, 0, attrs->parrot_hash);
         VTABLE_set_pointer_keyed_int(INTERP, ret, 1, attrs->bucket);
 
@@ -246,7 +246,7 @@
     VTABLE STRING* shift_string() {
         PMC    * const key = SELF.shift_pmc();
         STRING * const ret = VTABLE_get_string(INTERP, key);
-        temporary_pmc_free(INTERP, key);
+        Parrot_pmc_free_temporary(INTERP, key);
         return ret;
     }
 

Modified: branches/ops_pct/src/pmc/imageio.pmc
==============================================================================
--- branches/ops_pct/src/pmc/imageio.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/imageio.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -10,6 +10,8 @@
 
 Freezes and thaws other PMCs.
 
+=cut
+
 */
 
 #define GROW_TO_16_BYTE_BOUNDARY(size) ((size) + ((size) % 16 ? 16 - (size) % 16 : 0))
@@ -76,7 +78,7 @@
         len = FREEZE_BYTES_PER_ITEM;
 
     PARROT_IMAGEIO(info)->buffer =
-        (Buffer *)Parrot_gc_new_bufferlike_header(interp, sizeof (Buffer));
+        Parrot_gc_new_bufferlike_header(interp, sizeof (Buffer));
     Parrot_gc_allocate_buffer_storage_aligned(interp,
         PARROT_IMAGEIO(info)->buffer, len);
     SET_VISIT_CURSOR(info, (char *)Buffer_bufstart(PARROT_IMAGEIO(info)->buffer));
@@ -123,12 +125,12 @@
 PARROT_INLINE
 static PMC*
 id_list_get(PARROT_INTERP, PMC *io, UINTVAL id) {
-    return VTABLE_get_pmc_keyed_int(interp, PARROT_IMAGEIO(io)->id_list, id);
+    return VTABLE_get_pmc_keyed_int(interp, PARROT_IMAGEIO(io)->todo, id - 1);
 }
 
 PARROT_INLINE
-static void
-visit_todo_list_thaw(PARROT_INTERP, SHIM(PMC* pmc_not_used), ARGIN(PMC* info))
+static PMC *
+visit_todo_list_thaw(PARROT_INTERP, ARGIN(PMC* info))
 {
     UINTVAL  n            = VTABLE_shift_integer(interp, info);
     UINTVAL  id           = PackID_get_PMCID(n);
@@ -148,15 +150,12 @@
             if (type <= 0 || type > interp->n_vtable_max)
                 Parrot_ex_throw_from_c_args(interp, NULL, 1, "Unknown PMC type to thaw %d", type);
 
-            pmc = pmc_new_noinit(interp, type);
+            pmc = Parrot_pmc_new_noinit(interp, type);
             VTABLE_thaw(interp, pmc, info);
 
             {
                 PMC * const todo    = PARROT_IMAGEIO(info)->todo;
-                PMC * const id_list = PARROT_IMAGEIO(info)->id_list;
-                VTABLE_set_pmc_keyed_int(interp, id_list, id, pmc);
-                /* remember nested aggregates depth first */
-                VTABLE_push_pmc(interp, todo, pmc);
+                VTABLE_set_pmc_keyed_int(interp, todo, id - 1, pmc);
             }
         }
         break;
@@ -165,7 +164,7 @@
         break;
     }
 
-    *(PARROT_IMAGEIO(info)->thaw_ptr) = pmc;
+    return pmc;
 }
 
 static void
@@ -207,65 +206,14 @@
     }
 }
 
-static void
-visit_loop_todo_list(PARROT_INTERP, PMC *current, PMC *info)
-{
-    PMC * const todo     = PARROT_IMAGEIO(info)->todo;
-    const int    thawing = PARROT_IMAGEIO(info)->what == VISIT_THAW_NORMAL;
-
-    (PARROT_IMAGEIO(info)->visit_pmc_now)(interp, current, info);
-
-    /* can't cache upper limit, visit may append items */
-    while (VTABLE_get_bool(interp, todo)) {
-        current = VTABLE_pop_pmc(interp, todo);
-        if (!current)
-            Parrot_ex_throw_from_c_args(interp, NULL, 1,
-                    "NULL current PMC in visit_loop_todo_list");
-
-        PARROT_ASSERT(current->vtable);
-
-        VTABLE_visit(interp, current, info);
-
-        VISIT_PMC(interp, info, PMC_metadata(current));
-    }
-
-    if (thawing)
-        /* we're done reading the image */
-        PARROT_ASSERT(!INFO_HAS_DATA(info));
-
-    if (thawing) {
-        /* on thawing call thawfinish for each processed PMC */
-        const INTVAL n = VTABLE_elements(interp, PARROT_IMAGEIO(info)->id_list);
-        int          i;
-
-        /*
-         * Thaw in reverse order. We have to fully thaw younger PMCs
-         * before use them in older.
-         *
-         * XXX There are no younger or older pmcs in a directed graph
-         *     that allows cycles. Any code that requires a specific
-         *      order here is likely broken.
-         */
-        for (i = n-1; i >= 0; --i) {
-            current = VTABLE_get_pmc_keyed_int(interp, PARROT_IMAGEIO(info)->id_list, i);
-            if (!PMC_IS_NULL(current))
-                VTABLE_thawfinish(interp, current, info);
-        }
-    }
-}
-
 pmclass ImageIO auto_attrs {
-    ATTR visit_f          visit_pmc_now;
     ATTR Buffer          *buffer;         /* buffer to store the image */
     ATTR size_t           pos;            /* current read/write position in buffer */
     ATTR size_t           input_length;
     ATTR INTVAL           what;
-    ATTR PMC            **thaw_ptr;       /* where to thaw a new PMC */
     ATTR PMC             *seen;           /* seen hash */
     ATTR PMC             *todo;           /* todo list */
-    ATTR PMC             *id_list;        /* seen list used by thaw */
     ATTR UINTVAL          id;             /* freze ID of PMC */
-    ATTR INTVAL           extra_flags;    /* concerning to extra */
     ATTR struct PackFile *pf;
 
 /*
@@ -288,13 +236,10 @@
 
 */
     VTABLE void init() {
-        PARROT_IMAGEIO(SELF)->thaw_ptr    = NULL;
         PARROT_IMAGEIO(SELF)->buffer      = NULL;
-        PARROT_IMAGEIO(SELF)->todo        = pmc_new(INTERP, enum_class_ResizablePMCArray);
+        PARROT_IMAGEIO(SELF)->todo        = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
         PARROT_IMAGEIO(SELF)->seen        = PMCNULL;
-        PARROT_IMAGEIO(SELF)->id_list     = PMCNULL;
         PARROT_IMAGEIO(SELF)->id          = 0;
-        PARROT_IMAGEIO(SELF)->extra_flags = EXTRA_IS_NULL;
         PARROT_IMAGEIO(SELF)->pf          = PackFile_new(INTERP, 0);
 
         PObj_custom_mark_destroy_SETALL(SELF);
@@ -324,10 +269,11 @@
 
 */
     VTABLE void mark() {
-        Parrot_gc_mark_PObj_alive(INTERP, (PObj *)(PARROT_IMAGEIO(SELF)->buffer));
+        PObj * const buffer = (PObj *)(PARROT_IMAGEIO(SELF)->buffer);
+        if (buffer)
+            Parrot_gc_mark_PObj_alive(INTERP, (PObj *)(PARROT_IMAGEIO(SELF)->buffer));
         Parrot_gc_mark_PMC_alive(INTERP, PARROT_IMAGEIO(SELF)->todo);
         Parrot_gc_mark_PMC_alive(INTERP, PARROT_IMAGEIO(SELF)->seen);
-        Parrot_gc_mark_PMC_alive(INTERP, PARROT_IMAGEIO(SELF)->id_list);
     }
 
 /*
@@ -345,21 +291,34 @@
                                           PARROT_IMAGEIO(SELF)->buffer,
                                           PARROT_IMAGEIO(SELF)->pos);
     }
+
 /*
 
+=item C<VTABLE PMC *get_pmc()>
+
+Gets the result PMC after a thaw.
+
+=cut
+
+*/
+
+    VTABLE PMC *get_pmc() {
+        return VTABLE_get_pmc_keyed_int(INTERP, (PARROT_IMAGEIO(SELF))->todo, 0);
+    }
+
 /*
 
-=item C<VTABLE void set_pointer()>
+=item C<VTABLE PMC *get_iter()>
 
-Sets the location where to thaw a new PMC.
+Get the C<todo> list for this freeze/thaw for iterating over.
 
 =cut
 
 */
 
-VTABLE void set_pointer(void* value) {
-    PARROT_IMAGEIO(SELF)->thaw_ptr = (PMC**)value;
-}
+    VTABLE PMC *get_iter() {
+        return PARROT_IMAGEIO(SELF)->todo;
+    }
 
 /*
 
@@ -371,9 +330,9 @@
 
 */
 
-VTABLE INTVAL get_integer() {
-    return PARROT_IMAGEIO(SELF)->what;
-}
+    VTABLE INTVAL get_integer() {
+        return PARROT_IMAGEIO(SELF)->what;
+    }
 
 /*
 
@@ -385,11 +344,11 @@
 
 */
 
-VTABLE void push_integer(INTVAL v) {
-    size_t len = PF_size_integer() * sizeof (opcode_t);
-    ensure_buffer_size(interp, SELF, len);
-    SET_VISIT_CURSOR(SELF, (char *)PF_store_integer(GET_VISIT_CURSOR(SELF), v));
-}
+    VTABLE void push_integer(INTVAL v) {
+        size_t len = PF_size_integer() * sizeof (opcode_t);
+        ensure_buffer_size(interp, SELF, len);
+        SET_VISIT_CURSOR(SELF, (char *)PF_store_integer(GET_VISIT_CURSOR(SELF), v));
+    }
 
 
 /*
@@ -402,12 +361,12 @@
 
 */
 
-VTABLE void push_float(FLOATVAL v)
-{
-    size_t len = PF_size_number() * sizeof (opcode_t);
-    ensure_buffer_size(interp, SELF, len);
-    SET_VISIT_CURSOR(SELF, (char *)PF_store_number(GET_VISIT_CURSOR(SELF), &v));
-}
+    VTABLE void push_float(FLOATVAL v)
+    {
+        size_t len = PF_size_number() * sizeof (opcode_t);
+        ensure_buffer_size(interp, SELF, len);
+        SET_VISIT_CURSOR(SELF, (char *)PF_store_number(GET_VISIT_CURSOR(SELF), &v));
+    }
 
 
 /*
@@ -420,12 +379,12 @@
 
 */
 
-VTABLE void push_string(STRING *v)
-{
-    size_t len = PF_size_string(v) * sizeof (opcode_t);
-    ensure_buffer_size(INTERP, SELF, len);
-    SET_VISIT_CURSOR(SELF, (char *)PF_store_string(GET_VISIT_CURSOR(SELF), v));
-}
+    VTABLE void push_string(STRING *v)
+    {
+        size_t len = PF_size_string(v) * sizeof (opcode_t);
+        ensure_buffer_size(INTERP, SELF, len);
+        SET_VISIT_CURSOR(SELF, (char *)PF_store_string(GET_VISIT_CURSOR(SELF), v));
+    }
 
 /*
 
@@ -438,10 +397,9 @@
 
 */
 
-VTABLE void push_pmc(PMC *v) {
-    VTABLE_set_pointer(interp, SELF, &v);
-    (PARROT_IMAGEIO(SELF)->visit_pmc_now)(INTERP, v, SELF);
-}
+    VTABLE void push_pmc(PMC *v) {
+        visit_todo_list_freeze(INTERP, v, SELF);
+    }
 
 /*
 
@@ -453,14 +411,14 @@
 
 */
 
-VTABLE INTVAL shift_integer()
-{
-    opcode_t *pos  = GET_VISIT_CURSOR(SELF);
-    const INTVAL i = PF_fetch_integer(PARROT_IMAGEIO(SELF)->pf, (const opcode_t **)&pos);
-    SET_VISIT_CURSOR(SELF, (char *)pos);
-    BYTECODE_SHIFT_OK(SELF);
-    return i;
-}
+    VTABLE INTVAL shift_integer()
+    {
+        opcode_t *pos  = GET_VISIT_CURSOR(SELF);
+        const INTVAL i = PF_fetch_integer(PARROT_IMAGEIO(SELF)->pf, (const opcode_t **)&pos);
+        SET_VISIT_CURSOR(SELF, (char *)pos);
+        BYTECODE_SHIFT_OK(SELF);
+        return i;
+    }
 
 
 /*
@@ -473,13 +431,13 @@
 
 */
 
-VTABLE FLOATVAL shift_float() {
-    opcode_t *pos    = GET_VISIT_CURSOR(SELF);
-    const FLOATVAL f = PF_fetch_number(PARROT_IMAGEIO(SELF)->pf, (const opcode_t **)&pos);
-    SET_VISIT_CURSOR(SELF, (char *)pos);
-    BYTECODE_SHIFT_OK(SELF);
-    return f;
-}
+    VTABLE FLOATVAL shift_float() {
+        opcode_t *pos    = GET_VISIT_CURSOR(SELF);
+        const FLOATVAL f = PF_fetch_number(PARROT_IMAGEIO(SELF)->pf, (const opcode_t **)&pos);
+        SET_VISIT_CURSOR(SELF, (char *)pos);
+        BYTECODE_SHIFT_OK(SELF);
+        return f;
+    }
 
 
 /*
@@ -492,14 +450,15 @@
 
 */
 
-VTABLE STRING *shift_string()
-{
-    opcode_t *pos    = GET_VISIT_CURSOR(SELF);
-    STRING * const s = PF_fetch_string(interp, PARROT_IMAGEIO(SELF)->pf, (const opcode_t **)&pos);
-    SET_VISIT_CURSOR(SELF, (char *)pos);
-    BYTECODE_SHIFT_OK(SELF);
-    return s;
-}
+    VTABLE STRING *shift_string()
+    {
+        opcode_t *pos    = GET_VISIT_CURSOR(SELF);
+        STRING * const s = PF_fetch_string(interp, PARROT_IMAGEIO(SELF)->pf,
+                                           (const opcode_t **)&pos);
+        SET_VISIT_CURSOR(SELF, (char *)pos);
+        BYTECODE_SHIFT_OK(SELF);
+        return s;
+    }
 
 /*
 
@@ -511,40 +470,35 @@
 
 */
 
-VTABLE PMC *shift_pmc() {
-    PMC *result;
-    VTABLE_set_pointer(interp, SELF, &result);
-    (PARROT_IMAGEIO(SELF)->visit_pmc_now)(interp, NULL, SELF);
-    return result;
-}
+    VTABLE PMC *shift_pmc() {
+        return visit_todo_list_thaw(INTERP, SELF);
+    }
 
-VTABLE void set_pmc(PMC *p)
-{
+    VTABLE void set_pmc(PMC *p)
+    {
         UINTVAL header_length = GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
 
         PARROT_IMAGEIO(SELF)->what = VISIT_FREEZE_NORMAL;
-        PARROT_IMAGEIO(SELF)->visit_pmc_now  = visit_todo_list_freeze;
         create_buffer(INTERP, p, SELF);
         ensure_buffer_size(INTERP, SELF, header_length);
         mem_sys_memcopy(GET_VISIT_CURSOR(SELF),
             PARROT_IMAGEIO(SELF)->pf->header, PACKFILE_HEADER_BYTES);
         INC_VISIT_CURSOR(SELF, header_length);
 
-        PARROT_IMAGEIO(SELF)->seen = pmc_new(INTERP, enum_class_Hash);
+        PARROT_IMAGEIO(SELF)->seen = Parrot_pmc_new(INTERP, enum_class_Hash);
         VTABLE_set_pointer(INTERP, PARROT_IMAGEIO(SELF)->seen,
             parrot_new_intval_hash(INTERP));
 
-        visit_loop_todo_list(INTERP, p, SELF);
-}
+        visit_todo_list_freeze(INTERP, p, SELF);
+        Parrot_visit_loop_visit(INTERP, SELF);
+    }
 
-VTABLE void set_string_native(STRING *image) {
+    VTABLE void set_string_native(STRING *image) {
         UINTVAL header_length = GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
         int unpacked_length;
 
         PARROT_IMAGEIO(SELF)->what          = VISIT_THAW_NORMAL;
-        PARROT_IMAGEIO(SELF)->visit_pmc_now = visit_todo_list_thaw;
         PARROT_IMAGEIO(SELF)->buffer        = (Buffer *)image;
-        PARROT_IMAGEIO(SELF)->id_list       = pmc_new(INTERP, enum_class_ResizablePMCArray);
 
         PARROT_ASSERT(image->_bufstart == image->strstart);
 
@@ -564,8 +518,13 @@
             INC_VISIT_CURSOR(SELF, header_length);
         }
 
-        visit_loop_todo_list(interp, pmc, SELF);
-}
+        visit_todo_list_thaw(INTERP, SELF);
+        Parrot_visit_loop_visit(INTERP, SELF);
+
+        /* we're done reading the image */
+        PARROT_ASSERT(!INFO_HAS_DATA(SELF));
+        Parrot_visit_loop_thawfinish(INTERP, SELF);
+    }
 
 /*
 

Copied: branches/ops_pct/src/pmc/imageiosize.pmc (from r44740, trunk/src/pmc/imageiosize.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/src/pmc/imageiosize.pmc	Sun Mar  7 19:33:20 2010	(r44743, copy of r44740, trunk/src/pmc/imageiosize.pmc)
@@ -0,0 +1,237 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/imageiosize.pmc - ImageIOSize PMC
+
+=head1 DESCRIPTION
+
+Gets the size of an ImageIO image without the allocation costs.
+
+=cut
+
+*/
+
+#define GROW_TO_16_BYTE_BOUNDARY(size) ((size) + ((size) % 16 ? 16 - (size) % 16 : 0))
+
+static void
+visit_todo_list_freeze(PARROT_INTERP, PMC* pmc, PMC* info) {
+    int is_new = 0;
+
+    if (!PMC_IS_NULL(pmc)) {
+        Hash *hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIOSIZE(info)->seen);
+        HashBucket * const b = parrot_hash_get_bucket(interp, hash, pmc);
+        is_new = !b;
+    }
+
+    VTABLE_push_integer(interp, info, 0);
+
+    if (is_new) {
+        Hash *hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIOSIZE(info)->seen);
+        parrot_hash_put(interp, hash, pmc, pmc);
+        VTABLE_push_integer(interp, info, pmc->vtable->base_type);
+        VTABLE_push_pmc(interp, PARROT_IMAGEIOSIZE(info)->todo, pmc);
+        VTABLE_freeze(interp, pmc, info);
+    }
+}
+
+pmclass ImageIOSize auto_attrs {
+    ATTR PMC             *seen;           /* seen hash */
+    ATTR PMC             *todo;           /* todo list */
+    ATTR struct PackFile *pf;
+    ATTR INTVAL           size;
+
+/*
+
+=head1 VTABLES
+
+=over 4
+
+=cut
+
+*/
+
+/*
+
+=item C<void init()>
+
+Initializes the PMC.
+
+=cut
+
+*/
+    VTABLE void init() {
+        PARROT_IMAGEIOSIZE(SELF)->todo = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+        PARROT_IMAGEIOSIZE(SELF)->pf   = PackFile_new(INTERP, 0);
+        PARROT_IMAGEIOSIZE(SELF)->size = 0;
+
+        PARROT_IMAGEIOSIZE(SELF)->seen = Parrot_pmc_new(INTERP, enum_class_Hash);
+        VTABLE_set_pointer(INTERP, PARROT_IMAGEIOSIZE(SELF)->seen,
+            parrot_new_intval_hash(INTERP));
+
+        PObj_custom_mark_destroy_SETALL(SELF);
+    }
+
+
+/*
+
+=item C<void destroy()>
+
+Destroys the PMC.
+
+=cut
+
+*/
+    VTABLE void destroy() {
+        PackFile_destroy(INTERP, PARROT_IMAGEIOSIZE(SELF)->pf);
+    }
+
+/*
+
+=item C<void mark()>
+
+Marks the PMC as alive.
+
+=cut
+
+*/
+    VTABLE void mark() {
+        Parrot_gc_mark_PMC_alive(INTERP, PARROT_IMAGEIOSIZE(SELF)->todo);
+        Parrot_gc_mark_PMC_alive(INTERP, PARROT_IMAGEIOSIZE(SELF)->seen);
+    }
+
+/*
+
+=item C<VTABLE PMC *get_pmc()>
+
+Gets the result PMC after a thaw.
+
+=cut
+
+*/
+
+    VTABLE PMC *get_pmc() {
+        PMC *ret = Parrot_pmc_new(INTERP, enum_class_Integer);
+        VTABLE_set_integer_native(INTERP, ret, PARROT_IMAGEIOSIZE(SELF)->size);
+        return ret;
+    }
+
+/*
+
+=item C<VTABLE PMC *get_iter()>
+
+Get the C<todo> list for this freeze/thaw for iterating over.
+
+=cut
+
+*/
+
+    VTABLE PMC *get_iter() {
+        return PARROT_IMAGEIOSIZE(SELF)->todo;
+    }
+
+/*
+
+=item C<VTABLE INTVAL get_integer()>
+
+Returns the flags describing the visit action
+
+=cut
+
+*/
+
+    VTABLE INTVAL get_integer() {
+        return VISIT_FREEZE_NORMAL;
+    }
+
+/*
+
+=item C<VTABLE void push_integer(INTVAL v)>
+
+Pushes the integer C<v> onto the end of the image.
+
+=cut
+
+*/
+
+    VTABLE void push_integer(INTVAL v) {
+        size_t len = PF_size_integer() * sizeof (opcode_t);
+        PARROT_IMAGEIOSIZE(SELF)->size += len;
+    }
+
+
+/*
+
+=item C<VTABLE void push_float(FLOATVAL v)>
+
+Pushes the float C<v> onto the end of the image.
+
+=cut
+
+*/
+
+    VTABLE void push_float(FLOATVAL v)
+    {
+        size_t len = PF_size_number() * sizeof (opcode_t);
+        PARROT_IMAGEIOSIZE(SELF)->size += len;
+    }
+
+
+/*
+
+=item C<VTABLE void push_string(STRING *v)>
+
+Pushes the string C<*v> onto the end of the image.
+
+=cut
+
+*/
+
+    VTABLE void push_string(STRING *v)
+    {
+        size_t len = PF_size_string(v) * sizeof (opcode_t);
+        PARROT_IMAGEIOSIZE(SELF)->size += len;
+    }
+
+/*
+
+=item C<VTABLE void push_pmc(PMC *v)>
+
+Pushes a reference to pmc C<*v> onto the end of the image. If C<*v>
+hasn't been seen yet, it is also pushed onto the todo list.
+
+=cut
+
+*/
+
+    VTABLE void push_pmc(PMC *v) {
+        visit_todo_list_freeze(INTERP, v, SELF);
+    }
+
+    VTABLE void set_pmc(PMC *p)
+    {
+        UINTVAL header_length = GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
+        PARROT_IMAGEIOSIZE(SELF)->size += header_length;
+
+        visit_todo_list_freeze(INTERP, p, SELF);
+        Parrot_visit_loop_visit(INTERP, SELF);
+    }
+
+/*
+
+=back
+
+=cut
+
+*/
+
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/ops_pct/src/pmc/integer.pmc
==============================================================================
--- branches/ops_pct/src/pmc/integer.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/integer.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -38,7 +38,7 @@
     /* Do an in-place upgrade to a Bignum of SELF and return a pointer
        to it (which is probably redundant, but whatever). */
     const INTVAL a = VTABLE_get_integer(interp, self);
-    pmc_reuse(interp, self, enum_class_BigInt, 0);
+    Parrot_pmc_reuse(interp, self, enum_class_BigInt, 0);
     VTABLE_set_integer_native(interp, self, a);
     return self;
 }
@@ -84,7 +84,7 @@
 
 */
     VTABLE PMC *clone() {
-        PMC * const clone = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const clone = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_integer_native(INTERP, clone, SELF.get_integer());
         return clone;
     }
@@ -179,24 +179,6 @@
 
 /*
 
-=item C<PMC *get_bignum()>
-
-Return a new BigInt PMC with the value of C<SELF>.
-
-=cut
-
-*/
-
-    VTABLE PMC *get_bignum() {
-        const INTVAL val = SELF.get_integer();
-        PMC * const  ret = pmc_new(INTERP, enum_class_BigInt);
-        VTABLE_set_integer_native(INTERP, ret, val);
-        return ret;
-    }
-
-
-/*
-
 =item C<STRING *get_string()>
 
 =item C<STRING *get_repr()>
@@ -239,10 +221,6 @@
 
 Morphs the integer to a C<Boolean> and sets the value from C<value>.
 
-=item C<void set_bigint_int(INTVAL value)>
-
-Morphs the integer to a C<BigInt> and sets the value from C<value>.
-
 =item C<void set_string_native(STRING *value)>
 
 Morphs the integer to a C<String> and sets the value from C<value>.
@@ -252,25 +230,20 @@
 */
 
     VTABLE void set_number_native(FLOATVAL value) {
-        pmc_reuse(INTERP, SELF, enum_class_Float, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Float, 0);
         SELF.set_number_native(value);
     }
 
 
     VTABLE void set_bool(INTVAL value) {
-        pmc_reuse(INTERP, SELF, enum_class_Boolean, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Boolean, 0);
         SELF.set_bool(value);
     }
 
 
-    VTABLE void set_bignum_int(INTVAL value) {
-        pmc_reuse(INTERP, SELF, enum_class_BigInt, 0);
-        SELF.set_integer_native(value);
-    }
-
 
     VTABLE void set_string_native(STRING *value) {
-        pmc_reuse(INTERP, SELF, enum_class_String, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_String, 0);
         SELF.set_string_native(value);
     }
 
@@ -292,7 +265,7 @@
         const INTVAL c = a + b;
 
         if ((c^a) >= 0 || (c^b) >= 0) {
-            dest = pmc_new(INTERP, VTABLE_type(interp, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(interp, SELF));
 
             /* need this for e.g. Undef PMC */
             VTABLE_set_integer_native(INTERP, dest, c);
@@ -301,7 +274,8 @@
         else {
             PMC * temp;
             maybe_throw_overflow_error(interp);
-            temp = VTABLE_get_bignum(interp, SELF);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
+            VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_add(interp, temp, value, dest);
         }
     }
@@ -309,7 +283,7 @@
 
     MULTI PMC *add(Complex value, PMC *dest) {
         const INTVAL a = SELF.get_integer();
-        dest           = pmc_new(INTERP, VTABLE_type(INTERP, value));
+        dest           = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 a + VTABLE_get_number_keyed_int(INTERP, value, 0));
@@ -323,13 +297,14 @@
     MULTI PMC *add(BigInt value, PMC *dest) {
         PMC *temp;
         maybe_throw_overflow_error(interp);
-        temp = VTABLE_get_bignum(interp, SELF);
+        temp = Parrot_pmc_new(interp, enum_class_BigInt);
+        VTABLE_set_integer_native(interp, temp, SELF.get_integer());
         return VTABLE_add(interp, temp, value, dest);
     }
 
 
     MULTI PMC *add(DEFAULT value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(interp, value));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(interp, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_integer() + VTABLE_get_number(INTERP, value));
@@ -342,7 +317,7 @@
         const INTVAL c = a + b;
 
         if ((c^a) >= 0 || (c^b) >= 0) {
-            dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
             VTABLE_set_integer_native(INTERP, dest, c);
             return dest;
@@ -350,7 +325,8 @@
         else {
             PMC *temp;
             maybe_throw_overflow_error(interp);
-            temp = VTABLE_get_bignum(interp, SELF);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
+            VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_add_int(interp, temp, b, dest);
         }
     }
@@ -378,7 +354,7 @@
     MULTI void i_add(Complex value) {
         const INTVAL a = SELF.get_integer();
 
-        pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
         VTABLE_set_number_native(INTERP, SELF,
                 SELF.get_integer() + VTABLE_get_number(INTERP, value));
     }
@@ -399,8 +375,8 @@
         else {
             PMC *temp;
             maybe_throw_overflow_error(interp);
-            temp = VTABLE_get_bignum(interp, SELF);
-            VTABLE_i_add_int(interp, temp, b);
+            SELF = upgrade_self_to_bignum(interp, SELF);
+            VTABLE_i_add_int(interp, SELF, b);
         }
     }
 
@@ -431,7 +407,7 @@
         const INTVAL c = a - b;
 
         if ((c^a) >= 0 || (c^~b) >= 0) {
-            dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
             VTABLE_set_integer_native(INTERP, dest, c);
             return dest;
@@ -439,7 +415,8 @@
         else {
             PMC *temp;
             maybe_throw_overflow_error(interp);
-            temp = VTABLE_get_bignum(interp, SELF);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
+            VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_subtract(interp, temp, value, dest);
         }
     }
@@ -447,7 +424,7 @@
 
     MULTI PMC *subtract(Complex value, PMC *dest) {
         const INTVAL a = SELF.get_integer();
-        dest           = pmc_new(INTERP, VTABLE_type(INTERP, value));
+        dest           = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 a - VTABLE_get_number_keyed_int(INTERP, value, 0));
@@ -461,13 +438,14 @@
     MULTI PMC *subtract(BigInt value, PMC *dest) {
         PMC *temp;
         maybe_throw_overflow_error(interp);
-        temp = VTABLE_get_bignum(interp, SELF);
+        temp = Parrot_pmc_new(interp, enum_class_BigInt);
+        VTABLE_set_integer_native(interp, temp, SELF.get_integer());
         return VTABLE_subtract(interp, temp, value, dest);
     }
 
 
     MULTI PMC *subtract(DEFAULT value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, value));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_integer() - VTABLE_get_number(INTERP, value));
@@ -490,7 +468,7 @@
         const INTVAL c = a - b;
 
         if ((c^a) >= 0 || (c^~b) >= 0) {
-            dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
             VTABLE_set_integer_native(INTERP, dest, c);
             return dest;
@@ -498,7 +476,8 @@
         else {
             PMC *temp;
             maybe_throw_overflow_error(interp);
-            temp = VTABLE_get_bignum(interp, SELF);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
+            VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_subtract_int(interp, temp, b, dest);
         }
     }
@@ -536,7 +515,7 @@
     MULTI void i_subtract(Complex value) {
         const INTVAL a = SELF.get_integer();
 
-        pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
         VTABLE_set_number_native(INTERP, SELF,
                 (FLOATVAL)a - VTABLE_get_number_keyed_int(INTERP, value, 0));
         VTABLE_set_number_keyed_int(INTERP, SELF, 1,
@@ -589,7 +568,7 @@
         const double cf = (double)a * (double)b;
 
         if ((double) c == cf) {
-            dest = pmc_new(INTERP, VTABLE_type(interp, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(interp, SELF));
 
             VTABLE_set_integer_native(INTERP, dest, c);
             return dest;
@@ -597,7 +576,8 @@
         else {
             PMC *temp;
             maybe_throw_overflow_error(INTERP);
-            temp = VTABLE_get_bignum(INTERP, SELF);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
+            VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_multiply(INTERP, temp, value, dest);
         }
     }
@@ -620,7 +600,7 @@
 
     MULTI PMC *multiply(DEFAULT value, PMC *dest) {
         const FLOATVAL valf = VTABLE_get_number(INTERP, value);
-        dest                = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest                = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest, SELF.get_number() * valf);
         return dest;
@@ -633,7 +613,7 @@
         const double cf = (double)a * (double)b;
 
         if ((double) c == cf) {
-            dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
             VTABLE_set_integer_native(INTERP, dest, c);
             return dest;
@@ -641,7 +621,8 @@
         else {
             PMC *temp;
             maybe_throw_overflow_error(INTERP);
-            temp = VTABLE_get_bignum(INTERP, SELF);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
+            VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_multiply_int(INTERP, temp, b, dest);
         }
     }
@@ -727,7 +708,8 @@
     MULTI PMC *divide(BigInt value, PMC *dest) {
         PMC *temp;
         maybe_throw_overflow_error(INTERP);
-        temp = VTABLE_get_bignum(INTERP, SELF);
+        temp = Parrot_pmc_new(interp, enum_class_BigInt);
+        VTABLE_set_integer_native(interp, temp, SELF.get_integer());
         return VTABLE_divide(INTERP, temp, value, dest);
     }
 
@@ -738,7 +720,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         VTABLE_set_number_native(INTERP, dest, SELF.get_number() / d);
         return dest;
     }
@@ -787,7 +769,8 @@
     MULTI PMC *floor_divide(BigInt value, PMC *dest) {
         PMC *temp;
         maybe_throw_overflow_error(INTERP);
-        temp = VTABLE_get_bignum(INTERP, SELF);
+        temp = Parrot_pmc_new(interp, enum_class_BigInt);
+        VTABLE_set_integer_native(interp, temp, SELF.get_integer());
         return VTABLE_floor_divide(INTERP, temp, value, dest);
     }
 
@@ -800,7 +783,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         f = floor(SELF.get_number() / d);
         VTABLE_set_integer_native(INTERP, dest, (INTVAL)f);
@@ -815,7 +798,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         f = floor(SELF.get_number() / value);
         VTABLE_set_integer_native(INTERP, dest, (INTVAL)f);
@@ -830,7 +813,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         f = floor(SELF.get_number() / value);
         VTABLE_set_integer_native(INTERP, dest, (INTVAL)f);
@@ -909,7 +892,8 @@
     MULTI PMC *modulus(BigInt value, PMC *dest) {
         PMC *temp;
         maybe_throw_overflow_error(INTERP);
-        temp = VTABLE_get_bignum(INTERP, SELF);
+        temp = Parrot_pmc_new(interp, enum_class_BigInt);
+        VTABLE_set_integer_native(interp, temp, SELF.get_integer());
         return VTABLE_modulus(INTERP, temp, value, dest);
     }
 
@@ -921,7 +905,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "int modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_integer_native(INTERP, dest,
                 intval_mod(SELF.get_integer(), d));
@@ -934,7 +918,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "int modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_integer_native(INTERP, dest,
                 intval_mod(SELF.get_integer(), value));
@@ -947,7 +931,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "int modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_integer_native(INTERP, dest,
                 intval_mod(SELF.get_integer(), (INTVAL)value));
@@ -993,97 +977,6 @@
                 intval_mod(SELF.get_integer() , (INTVAL)value));
     }
 
-
-/*
-
-=item C<PMC *pow(PMC *value, PMC *dest)>
-
-=item C<PMC *pow_int(INTVAL value, PMC *dest)>
-
-Returns SELF to the C<value>th power in C<dest>.
-
-=item C<void i_pow(PMC *value)>
-
-=item C<void i_pow_int(INTVAL value)>
-
-Raises SELF to the C<value>th power.
-
-TODO:  TT #1228: Implement Complex and BigInt RHS values for the pow() functions
-
-=cut
-
-*/
-
-    MULTI PMC *pow(Integer value, PMC *dest) {
-        const INTVAL v = VTABLE_get_integer(INTERP, value);
-        return STATICSELF.pow_int(v, dest);
-    }
-
-
-    MULTI PMC *pow(DEFAULT value, PMC *dest) {
-        PMC * const auxval = pmc_new(INTERP, VTABLE_type(INTERP, value));
-        FLOATVAL selfval = SELF.get_integer();
-        VTABLE_set_number_native(INTERP, auxval, selfval);
-        return VTABLE_pow(INTERP, auxval, value, dest);
-    }
-
-
-    VTABLE PMC *pow_int(INTVAL b, PMC *dest) {
-        const INTVAL a      = SELF.get_integer();
-        const INTVAL orig_b = b;
-        INTVAL       r      = 1;
-
-        if (b < 0)
-            return SUPER(b, dest);
-
-        if (a) {
-            INTVAL temp = a;
-            while (b > 0) {
-                INTVAL prev = r;
-                if (b & 1) {
-                    r *= temp;
-                    if (r / temp != prev) {
-                        PMC *temp;
-                        maybe_throw_overflow_error(INTERP);
-                        temp = VTABLE_get_bignum(INTERP, SELF);
-                        return VTABLE_pow_int(INTERP, temp, orig_b, dest);
-                    }
-                }
-
-                b >>= 1;
-                if (!b)
-                    break;
-
-                prev  = temp;
-                temp *= temp;
-
-                if (prev != 0 && temp / prev != prev) {
-                    PMC *temp;
-                    maybe_throw_overflow_error(INTERP);
-                    temp = VTABLE_get_bignum(INTERP, SELF);
-                    return VTABLE_pow_int(INTERP, temp, orig_b, dest);
-                }
-            }
-        }
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_integer_native(INTERP, dest, r);
-        return dest;
-
-    }
-
-
-    VTABLE void i_pow(PMC *value) {
-        SELF.pow(value, SELF);
-    }
-
-
-    VTABLE void i_pow_int(INTVAL value) {
-        STATICSELF.pow_int(value, SELF);
-    }
-
-
 /*
 
 =item C<INTVAL is_equal(PMC *value)>
@@ -1100,7 +993,7 @@
 
         switch (value->vtable->base_type) {
           case enum_class_BigInt:
-            temp = pmc_new(INTERP, enum_class_BigInt);
+            temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
             VTABLE_set_integer_native(INTERP, temp, SELF.get_integer());
             Parrot_mmd_multi_dispatch_from_c_args(interp,
                     "is_equal", "PP->I", temp, value, &retval);
@@ -1214,7 +1107,7 @@
         if ((c^a) >= 0 || (c^1) >= 0)
             SET_ATTR_iv(interp, SELF, c);
         else {
-            pmc_reuse(interp, SELF, enum_class_BigInt, 0);
+            Parrot_pmc_reuse(interp, SELF, enum_class_BigInt, 0);
             VTABLE_set_integer_native(interp, SELF, a);
             VTABLE_increment(interp, SELF);
         }
@@ -1238,7 +1131,7 @@
         if ((c^a) >= 0 || (c^~1) >= 0)
             VTABLE_set_integer_native(interp, SELF, c);
         else {
-            pmc_reuse(INTERP, SELF, enum_class_BigInt, 0);
+            Parrot_pmc_reuse(INTERP, SELF, enum_class_BigInt, 0);
             VTABLE_set_integer_native(interp, SELF, a);
             VTABLE_decrement(interp, SELF);
         }
@@ -1261,7 +1154,7 @@
         const INTVAL a = abs(SELF.get_integer());
 
         /* TT # 1245 overflow for -maxint */
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_integer_native(INTERP, dest, a);
         return dest;

Modified: branches/ops_pct/src/pmc/key.pmc
==============================================================================
--- branches/ops_pct/src/pmc/key.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/key.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -54,7 +54,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         PMC *dkey        = dest;
         PMC *key         = SELF;
 

Modified: branches/ops_pct/src/pmc/lexinfo.pmc
==============================================================================
--- branches/ops_pct/src/pmc/lexinfo.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/lexinfo.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -95,7 +95,7 @@
 
     VTABLE PMC *inspect_str(STRING *what) {
         if (Parrot_str_equal(interp, what, CONST_STRING(interp, "symbols"))) {
-            PMC *result     = pmc_new(interp, enum_class_ResizableStringArray);
+            PMC *result     = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
             Hash *hash      = (Hash *)SELF.get_pointer();
             UINTVAL entries = hash->entries;
             UINTVAL found   = 0;

Modified: branches/ops_pct/src/pmc/managedstruct.pmc
==============================================================================
--- branches/ops_pct/src/pmc/managedstruct.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/managedstruct.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -71,7 +71,7 @@
 Destroys the struct, freeing the allocated memory.
 
 If the "custom_free_func" attribute is set, it is called to free the pointer.
-Otherwise, mem_sys_free() is used.
+Otherwise, mem_gc_free() is used.
 
 =cut
 
@@ -83,9 +83,9 @@
             custom_free_func_t free_func = PARROT_MANAGEDSTRUCT(SELF)->custom_free_func;
             if (free_func) {
                 void *free_data = PARROT_MANAGEDSTRUCT(SELF)->custom_free_priv;
-                free_func(interp, ptr, free_data);
+                free_func(INTERP, ptr, free_data);
             } else
-                mem_sys_free(ptr);
+                mem_gc_free(INTERP, ptr);
         }
     }
 
@@ -100,20 +100,24 @@
 */
 
     VTABLE void set_integer_native(INTVAL value) {
-        if (PARROT_MANAGEDSTRUCT(SELF)->ptr && !value) {
-            mem_sys_free(PARROT_MANAGEDSTRUCT(SELF)->ptr);
-            PARROT_MANAGEDSTRUCT(SELF)->ptr  = NULL;
-            PARROT_MANAGEDSTRUCT(SELF)->size = 0;
+        Parrot_ManagedStruct_attributes * attrs = PARROT_MANAGEDSTRUCT(SELF);
+
+        if (attrs->ptr && !value) {
+            mem_gc_free(INTERP, attrs->ptr);
+            attrs->ptr  = NULL;
+            attrs->size = 0;
         }
-        else if (value && !PARROT_MANAGEDSTRUCT(SELF)->ptr) {
-            PARROT_MANAGEDSTRUCT(SELF)->ptr  = mem_sys_allocate_zeroed((size_t)value);
-            PARROT_MANAGEDSTRUCT(SELF)->size = value;
+        else if (value && !attrs->ptr) {
+            attrs->ptr  = Parrot_gc_allocate_memory_chunk_with_interior_pointers(
+                    INTERP, (size_t)value);
+            attrs->size = value;
         }
-        else if (value && PARROT_MANAGEDSTRUCT(SELF)->ptr) {
-            if (PARROT_MANAGEDSTRUCT(SELF)->size != value) {
-                PARROT_MANAGEDSTRUCT(SELF)->ptr =
-                    mem_sys_realloc(PARROT_MANAGEDSTRUCT(SELF)->ptr, (size_t)value);
-                PARROT_MANAGEDSTRUCT(SELF)->size = value;
+        else if (value && attrs->ptr) {
+            if (attrs->size != value) {
+                attrs->ptr =
+                    Parrot_gc_reallocate_memory_chunk_with_interior_pointers(INTERP,
+                        attrs->ptr, (size_t)value, attrs->size);
+                attrs->size = value;
             }
         }
 
@@ -142,7 +146,7 @@
             void *clone_data = PARROT_MANAGEDSTRUCT(SELF)->custom_clone_priv;
             return clone_func(interp, SELF, clone_data);
         }
-        dest = pmc_new_init(interp, SELF->vtable->base_type,
+        dest = Parrot_pmc_new_init(interp, SELF->vtable->base_type,
             PARROT_MANAGEDSTRUCT(SELF)->init);
 
         if (PARROT_MANAGEDSTRUCT(SELF)->ptr)

Modified: branches/ops_pct/src/pmc/namespace.pmc
==============================================================================
--- branches/ops_pct/src/pmc/namespace.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/namespace.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -36,7 +36,7 @@
     else {
         /* If we don't have a place to hang methods, make one. */
         if (PMC_IS_NULL(nsinfo->methods))
-            nsinfo->methods = pmc_new(interp, enum_class_Hash);
+            nsinfo->methods = Parrot_pmc_new(interp, enum_class_Hash);
 
         /* Insert it. */
         VTABLE_set_pmc_keyed_str(interp, nsinfo->methods, key, value);
@@ -70,7 +70,7 @@
         else {
             /* If we don't have a place to hang vtable methods, make one. */
             if (PMC_IS_NULL(vtable))
-                nsinfo->vtable = vtable = pmc_new(interp, enum_class_Hash);
+                nsinfo->vtable = vtable = Parrot_pmc_new(interp, enum_class_Hash);
 
             /* Insert it. */
             VTABLE_set_pmc_keyed_int(interp, vtable, sub->vtable_index, value);
@@ -312,7 +312,7 @@
             }
             else {
                 /* create new tuple */
-                new_tuple = pmc_new(INTERP, enum_class_FixedPMCArray);
+                new_tuple = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
 
                 /* flag it as special */
                 PObj_get_FLAGS(new_tuple) |= FPA_is_ns_ext;
@@ -387,7 +387,8 @@
     }
 
     VTABLE PMC *get_pmc_keyed_str(STRING *key) {
-        PMC *ns = (PMC *)parrot_hash_get(INTERP, (Hash *)SELF.get_pointer(), key);
+        Hash * const hash = (Hash *)SELF.get_pointer();
+        PMC *ns = (PMC *)parrot_hash_get(INTERP, hash, key);
 
         if (!ns)
             return PMCNULL;
@@ -400,8 +401,10 @@
     }
 
     VTABLE PMC *get_pmc_keyed(PMC *key) {
-        /* PMC    *ns = SUPER(key); */
+        PMC *ns = SUPER(key);
+        /* Is this equivalent?
         PMC    *ns = INTERP->vtables[enum_class_Hash]->get_pmc_keyed(INTERP, SELF, key);
+        */
 
         if (!PMC_IS_NULL(ns))
             return ns;
@@ -422,9 +425,29 @@
 
             return VTABLE_get_pmc_keyed(INTERP, ns, key);
         }
-
+        else if (VTABLE_does(INTERP, key, CONST_STRING(INTERP, "array"))) {
+            INTVAL i = 0;
+            while (!PMC_IS_NULL(ns) && VTABLE_elements(INTERP, key)) {
+                STRING * const name = VTABLE_get_string_keyed_int(INTERP, key, i);
+                if (name == NULL || name == STRINGNULL) {
+                    ns = PMCNULL;
+                    /* What to do here? Throw an exception or something? */
+                    break;
+                }
+                ns = Parrot_get_namespace_keyed_str(INTERP, ns, name);
+                i++;
+            }
+            return ns;
+        }
+        else {
+            STRING * const name = VTABLE_get_string(INTERP, key);
+            ns = Parrot_get_namespace_keyed_str(INTERP, ns, name);
+            return ns;
+        }
+        /* If we get the wrong type, should we throw an exception?
         Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_GLOBAL_NOT_FOUND,
             "Invalid namespace key in get_pmc_keyed_str");
+        */
     }
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
@@ -446,6 +469,7 @@
 Return the given namespace item or PMCNULL. If the named item is either
 a NameSpace or a var, the var is returned.
 
+TT #1472
 TOTAL KLUDGE.  ON THE CHOPPING BLOCK.
 
 =cut
@@ -634,7 +658,7 @@
 */
 
     METHOD get_name() {
-        PMC * const ar = pmc_new(INTERP, enum_class_ResizableStringArray);
+        PMC * const ar = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
         INTVAL elements = 0;
         PMC *ns        = SELF;
 

Modified: branches/ops_pct/src/pmc/nci.pmc
==============================================================================
--- branches/ops_pct/src/pmc/nci.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/nci.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -28,7 +28,7 @@
     char    param_buf[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
     char   *param_sig    = sig_length <= 7
                          ? param_buf
-                         : mem_allocate_n_typed(sig_length, char);
+                         : mem_gc_allocate_n_typed(interp, sig_length, char);
     size_t  j            = 0;
     size_t  i;
 
@@ -78,7 +78,7 @@
             break;
           default:
             if (sig_length > 7)
-                mem_sys_free(param_sig);
+                mem_gc_free(interp, param_sig);
             Parrot_ex_throw_from_c_args(interp, NULL,
                     EXCEPTION_JIT_ERROR,
                     "Unknown param Signature %c\n", (char)c);
@@ -97,7 +97,7 @@
         nci_info->pcc_params_signature = CONST_STRING(interp, "");
 
     if (sig_length > 7)
-        mem_sys_free(param_sig);
+        mem_gc_free(interp, param_sig);
 }
 
 /* actually build the NCI thunk */
@@ -254,7 +254,7 @@
         Parrot_NCI_attributes *nci_info_ret;
         void                  *orig_func;
 
-        PMC * const ret     = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const ret     = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         nci_info_ret        = PARROT_NCI(ret);
 
         /* FIXME if data is malloced (JIT/i386!) then we need

Modified: branches/ops_pct/src/pmc/null.pmc
==============================================================================
--- branches/ops_pct/src/pmc/null.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/null.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -41,17 +41,21 @@
 */
 
     VTABLE void init() {
+        UNUSED(interp)
     }
 
     VTABLE void *get_pointer() {
+        UNUSED(interp)
         return PMCNULL;
     }
 
     VTABLE void set_pointer(void *p) {
+        UNUSED(interp)
         PMCNULL = (PMC *)p;
     }
 
     VTABLE INTVAL does(STRING *what) {
+        UNUSED(interp)
         UNUSED(what)
         /* XXX maybe a hack to get TGE running again */
         return 0;

Modified: branches/ops_pct/src/pmc/object.pmc
==============================================================================
--- branches/ops_pct/src/pmc/object.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/object.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -126,7 +126,7 @@
     GETATTR_Class_meth_cache(interp, _class, cache);
 
     if (PMC_IS_NULL(cache)) {
-        cache = pmc_new(interp, enum_class_Hash);
+        cache = Parrot_pmc_new(interp, enum_class_Hash);
         SETATTR_Class_meth_cache(interp, _class, cache);
     }
 
@@ -812,7 +812,7 @@
         UNLOCK_INTERPRETER(master);
 
         ret = SELF;
-        _true = pmc_new(INTERP, enum_class_Integer);
+        _true = Parrot_pmc_new(INTERP, enum_class_Integer);
 
         /* Setting the '_ro' property switches to the read-only vtable */
         VTABLE_set_integer_native(INTERP, _true, 1);

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

Copied: branches/ops_pct/src/pmc/oplib.pmc (from r44740, trunk/src/pmc/oplib.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/src/pmc/oplib.pmc	Sun Mar  7 19:33:20 2010	(r44743, copy of r44740, trunk/src/pmc/oplib.pmc)
@@ -0,0 +1,124 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/oplib.pmc
+
+=head1 DESCRIPTION
+
+Implements oplib VTABLEs.
+
+=cut
+
+*/
+
+#include "parrot/parrot.h"
+
+/* TODO: Since Opcode PMCs are essentially read-only after initialization
+         here, we should cache them. A FixedPMCArray would be okay, an
+         INTVAL->PMC HASH might be better, since it's unlikely that we will
+         need to cache even a majority of the ~1300 ops. */
+static PMC *OPLIB_PMC_INSTANCE;
+static PMC *OPLIB_OPCODE_CACHE;
+pmclass OpLib {
+    void class_init() {
+        OPLIB_PMC_INSTANCE = NULL;
+        OPLIB_OPCODE_CACHE = NULL;
+    }
+
+    VTABLE void *get_pointer() {
+        return OPLIB_PMC_INSTANCE;
+    }
+
+    VTABLE void set_pointer(void *ptr) {
+        OPLIB_PMC_INSTANCE = (PMC *)ptr;
+    }
+
+    VTABLE void init() {
+        if (OPLIB_OPCODE_CACHE == NULL)
+            OPLIB_OPCODE_CACHE = Parrot_pmc_new(INTERP, enum_class_Hash);
+        PObj_custom_mark_SET(SELF);
+    }
+
+    VTABLE void mark() {
+        if (OPLIB_OPCODE_CACHE != NULL)
+            Parrot_gc_mark_PMC_alive(INTERP, OPLIB_OPCODE_CACHE);
+    }
+
+    /* Look up an opnumber given the name of the op. First we look for the
+       specific name, then the more general short name. */
+    VTABLE INTVAL get_integer_keyed_str(STRING *name) {
+        char * cstr = Parrot_str_to_cstring(INTERP, name);
+        INTVAL num = INTERP->op_lib->op_code(INTERP, cstr, 1);
+        if (num == -1)
+            num = INTERP->op_lib->op_code(INTERP, cstr, 0);
+        Parrot_str_free_cstring(cstr);
+        return num;
+    }
+
+    VTABLE INTVAL get_integer_keyed(PMC *key) {
+        STRING *str_key = key_string(INTERP, key);
+        return SELF.get_integer_keyed_str(str_key);
+    }
+
+    VTABLE PMC* get_pmc_keyed_str(STRING *name) {
+        if (VTABLE_defined_keyed_str(INTERP, OPLIB_OPCODE_CACHE, name)) {
+            PMC * const op = VTABLE_get_pmc_keyed_str(INTERP, OPLIB_OPCODE_CACHE, name);
+            return op;
+        }
+        else {
+            PMC * const op = Parrot_pmc_new_noinit(INTERP, enum_class_Opcode);
+            VTABLE_set_string_native(INTERP, op, name);
+            PObj_custom_mark_SET(op);
+            VTABLE_set_pmc_keyed_str(INTERP, OPLIB_OPCODE_CACHE, name, op);
+            return op;
+        }
+    }
+
+    VTABLE PMC* get_pmc_keyed(PMC *key) {
+        STRING * const strkey = VTABLE_get_string(INTERP, key);
+        return VTABLE_get_pmc_keyed_str(INTERP, SELF, strkey);
+    }
+
+    VTABLE PMC* get_pmc_keyed_int(INTVAL value) {
+        if ((UINTVAL)value > interp->op_lib->op_count)
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
+                "OpLib: Opcode index %d out of bounds", value);
+        else {
+            const char * const name   = interp->op_info_table[value].full_name;
+            STRING     * const newstr = Parrot_str_new(INTERP, name, 0);
+            return VTABLE_get_pmc_keyed_str(INTERP, SELF, newstr);
+        }
+    }
+
+    VTABLE INTVAL get_integer() {
+        return INTERP->op_lib->op_count;
+    }
+
+    METHOD op_family(STRING *shortname)
+    {
+        char *sname = Parrot_str_to_cstring(INTERP, shortname);
+        const op_lib_t * const op_lib = INTERP->op_lib;
+        const op_info_t * const table = op_lib->op_info_table;
+        PMC *result = PMCNULL;
+        UINTVAL i;
+        for (i = 0; i < op_lib->op_count; ++i) {
+            if (strcmp(table[i].name, sname) == 0) {
+                if (PMC_IS_NULL(result))
+                    result = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+                VTABLE_push_pmc(INTERP, result, SELF.get_pmc_keyed_int(i));
+            }
+        }
+        Parrot_str_free_cstring(sname);
+        RETURN(PMC *result);
+    }
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/ops_pct/src/pmc/orderedhash.pmc
==============================================================================
--- branches/ops_pct/src/pmc/orderedhash.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/orderedhash.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -77,17 +77,6 @@
 
 */
 
-/* Create new stored item. FixedPMCArray of (key, value, prev, next). */
-static PMC*
-create_item(PARROT_INTERP, ARGIN(PMC *key), ARGIN(PMC *value)) {
-    PMC *ret = pmc_new(interp, enum_class_FixedPMCArray);
-    VTABLE_set_integer_native(interp, ret, ORDERED_HASH_ITEM_MAX);
-
-    VTABLE_set_pmc_keyed_int(interp, ret, ORDERED_HASH_ITEM_KEY, key);
-    VTABLE_set_pmc_keyed_int(interp, ret, ORDERED_HASH_ITEM_VALUE, value);
-    return ret;
-}
-
 /* Get list_item by index */
 static PMC*
 get_list_item(PARROT_INTERP, ARGIN(PMC *self), INTVAL idx) {
@@ -130,7 +119,7 @@
 /* Helpers for boxing values */
 static PMC*
 box_string(PARROT_INTERP, STRING *str) {
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
                 enum_class_String));
     VTABLE_set_string_native(interp, ret, str);
     return ret;
@@ -138,7 +127,7 @@
 
 static PMC*
 box_integer(PARROT_INTERP, INTVAL val) {
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
                 enum_class_Integer));
     VTABLE_set_integer_native(interp, ret, val);
     return ret;
@@ -146,14 +135,14 @@
 
 static PMC*
 box_number(PARROT_INTERP, FLOATVAL val) {
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
                 enum_class_Float));
     VTABLE_set_number_native(interp, ret, val);
     return ret;
 }
 
 
-pmclass OrderedHash need_ext provides array provides hash {
+pmclass OrderedHash need_ext provides array provides hash auto_attrs {
     ATTR PMC    *hash;   /* key to item tuple */
     ATTR PMC    *first;  /* Pointer to first inserted value  */
     ATTR PMC    *last;   /* Pointer to last inserted value   */
@@ -170,10 +159,9 @@
 
     VTABLE void init() {
         Parrot_OrderedHash_attributes * const attrs =
-                mem_allocate_zeroed_typed(Parrot_OrderedHash_attributes);
+                (Parrot_OrderedHash_attributes*) PMC_data(SELF);
 
-        PMC_data(SELF)  = attrs;
-        attrs->hash     = pmc_new(INTERP, enum_class_Hash);
+        attrs->hash     = Parrot_pmc_new(INTERP, enum_class_Hash);
         attrs->first    = PMCNULL;
         attrs->last     = PMCNULL;
 
@@ -211,7 +199,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_OrderedHashIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_OrderedHashIterator, SELF);
     }
 
 /*
@@ -269,7 +257,7 @@
         }
 
         /* Create new entry */
-        list_entry = pmc_new(INTERP, enum_class_FixedPMCArray);
+        list_entry = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
         VTABLE_set_integer_native(INTERP, list_entry, ORDERED_HASH_ITEM_MAX);
         VTABLE_set_pmc_keyed_int(INTERP, list_entry, ORDERED_HASH_ITEM_VALUE, value);
         VTABLE_set_pmc_keyed_int(INTERP, list_entry, ORDERED_HASH_ITEM_KEY, key);
@@ -337,7 +325,7 @@
         /* Now we have chicken and egg problem during freeze/thaw */
         /* When we try to thaw OrderedHash which stores HLL mapping */
         /* Reported by François Perrad */
-        PMC *pkey = pmc_new(INTERP, enum_class_String);
+        PMC *pkey = Parrot_pmc_new(INTERP, enum_class_String);
         VTABLE_set_string_native(INTERP, pkey, key);
         VTABLE_set_pmc_keyed(INTERP, SELF, pkey, value);
     }
@@ -392,7 +380,7 @@
     }
 
     VTABLE PMC *get_pmc_keyed_str(STRING *key) {
-        PMC *pkey = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
+        PMC *pkey = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
         VTABLE_set_string_native(INTERP, pkey, key);
         return STATICSELF.get_pmc_keyed(pkey);
     }
@@ -506,21 +494,21 @@
     }
 
     VTABLE void set_integer_keyed_int(INTVAL idx, INTVAL value) {
-        PMC * const v = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const v = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_Integer));
         VTABLE_set_integer_native(INTERP, v, value);
         SELF.set_pmc_keyed_int(idx, v);
     }
 
     VTABLE void set_number_keyed_int(INTVAL idx, FLOATVAL value) {
-        PMC * const v = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const v = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_Float));
         VTABLE_set_number_native(INTERP, v, value);
         SELF.set_pmc_keyed_int(idx, v);
     }
 
     VTABLE void set_string_keyed_int(INTVAL idx, STRING *value) {
-        PMC * const v = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const v = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_String));
         VTABLE_set_string_native(INTERP, v, value);
         SELF.set_pmc_keyed_int(idx, v);
@@ -715,7 +703,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC  * const dest   = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC  * const dest   = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         Parrot_OrderedHash_attributes *clone_attrs =
                 PARROT_ORDEREDHASH(dest);
 

Modified: branches/ops_pct/src/pmc/os.pmc
==============================================================================
--- branches/ops_pct/src/pmc/os.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/os.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -86,7 +86,7 @@
 #endif
         if (cwd) {
             STRING * const scwd = Parrot_str_new(INTERP, cwd, strlen(cwd));
-            mem_sys_free(cwd);
+            free(cwd);
             RETURN(STRING *scwd);
         }
         else {
@@ -237,7 +237,7 @@
                 errmsg);
         }
         else {
-            PMC * const array = pmc_new(INTERP, enum_class_FixedPMCArray);
+            PMC * const array = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
             VTABLE_set_integer_native(INTERP, array, 13);
 
             VTABLE_set_integer_keyed_int(INTERP, array,  0,
@@ -315,7 +315,7 @@
                 errmsg);
         }
         else {
-            PMC * const array = pmc_new(INTERP, enum_class_FixedPMCArray);
+            PMC * const array = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
             VTABLE_set_integer_native(INTERP, array, 13);
 
             VTABLE_set_integer_keyed_int(INTERP, array,  0,
@@ -490,7 +490,7 @@
                 errmsg);
         }
 
-        array = pmc_new(INTERP, enum_class_ResizableStringArray);
+        array = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
 
         while ((dirent = readdir(dir)) != NULL) {
             retval = Parrot_str_new(INTERP, dirent->d_name, 0) ;

Modified: branches/ops_pct/src/pmc/packfile.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfile.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/packfile.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -71,7 +71,7 @@
         PackFile                   *pf;
 
         attrs->uuid     = Parrot_str_new_noinit(INTERP, enum_stringrep_one, 0);
-        attrs->directory = pmc_new(INTERP, enum_class_PackfileDirectory);
+        attrs->directory = Parrot_pmc_new(INTERP, enum_class_PackfileDirectory);
 
         /* Create dummy PackFile and copy default attributes to self */
         pf = PackFile_new(interp, 0);
@@ -120,7 +120,7 @@
 
         /* Calculate required memory */
         length  = PackFile_pack_size(interp, pf) * sizeof (opcode_t);
-        ptr     = (opcode_t*)mem_sys_allocate(length);
+        ptr     = (opcode_t*)Parrot_gc_allocate_memory_chunk(INTERP, length);
 
         /* Copy related attributes to header */
         pf->header->major     = attrs->version_major;
@@ -133,7 +133,7 @@
 
         str = Parrot_str_new_init(interp, (const char*)ptr, length,
                 PARROT_FIXED_8_ENCODING, PARROT_BINARY_CHARSET, 0);
-        mem_sys_free(ptr);
+        Parrot_gc_free_memory_chunk(INTERP, ptr);
 
         PackFile_destroy(interp, pf);
         return str;

Modified: branches/ops_pct/src/pmc/packfileannotations.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfileannotations.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/packfileannotations.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -49,7 +49,7 @@
         Parrot_PackfileAnnotations_attributes * attrs =
                 PMC_data_typed(SELF, Parrot_PackfileAnnotations_attributes*);
 
-        attrs->annotations = pmc_new(interp, enum_class_ResizablePMCArray);
+        attrs->annotations = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
         /*
         Don't initialize C<const_table>. It will be set to NULL bu auto_attrs
         handling. And should be set to proper PMC in set_directory.
@@ -220,7 +220,7 @@
         for (i = 0; i < a->num_entries; ++i) {
             PackFile_Annotations_Entry *entry = a->entries[i];
             PackFile_Annotations_Key   *key   = a->keys[entry->key];
-            annotation = pmc_new(interp, enum_class_PackfileAnnotation);
+            annotation = Parrot_pmc_new(interp, enum_class_PackfileAnnotation);
 
             /* Poke directly to annotation attributes. */
             annotation_attrs         = PARROT_PACKFILEANNOTATION(annotation);
@@ -260,7 +260,8 @@
     VTABLE void *get_pointer() {
         Parrot_PackfileAnnotations_attributes *attrs =
                 PARROT_PACKFILEANNOTATIONS(SELF);
-        PackFile_Annotations *res = mem_allocate_zeroed_typed(PackFile_Annotations);
+        PackFile_Annotations *res = mem_gc_allocate_zeroed_typed(INTERP,
+                PackFile_Annotations);
         INTVAL                i, num;
         INTVAL                key_type;
         PMC                  *keys;             /* Temporary representation of Keys */
@@ -289,15 +290,15 @@
                 ...
             ]
         */
-        keys        = pmc_new(interp, enum_class_Hash);
-        names       = pmc_new(interp, enum_class_ResizableIntegerArray);
-        types       = pmc_new(interp, enum_class_ResizableIntegerArray);
+        keys        = Parrot_pmc_new(interp, enum_class_Hash);
+        names       = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
+        types       = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
         last_key_id = -1;
 
         /* Iterate over stored annotations and create Key if required. */
         num = VTABLE_elements(interp, attrs->annotations);
         res->num_entries = num;
-        res->entries = mem_allocate_n_typed(num, PackFile_Annotations_Entry*);
+        res->entries = mem_gc_allocate_n_typed(INTERP, num, PackFile_Annotations_Entry*);
         for (i = 0; i < num; ++i) {
             PMC  *entity = VTABLE_get_pmc_keyed_int(interp, attrs->annotations, i);
             Parrot_PackfileAnnotation_attributes *entity_attrs = PARROT_PACKFILEANNOTATION(entity);
@@ -306,7 +307,7 @@
             PMC * key_array = VTABLE_get_pmc_keyed_str(interp, keys, entity_attrs->name);
             if (PMC_IS_NULL(key_array)) {
                 /* Never see this name before. Create new FIA and add to keys. */
-                key_array = pmc_new(interp, enum_class_FixedIntegerArray);
+                key_array = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
                 VTABLE_set_integer_native(interp, key_array, 3);
                 VTABLE_set_integer_keyed_int(interp, key_array, 0, -1);
                 VTABLE_set_integer_keyed_int(interp, key_array, 1, -1);
@@ -336,7 +337,8 @@
 
             /* At this point we have create (if nesassary) key and name constant. */
             /* Start storing real entity */
-            res->entries[i] = mem_allocate_zeroed_typed(PackFile_Annotations_Entry);
+            res->entries[i] = mem_gc_allocate_zeroed_typed(INTERP,
+                    PackFile_Annotations_Entry);
 
             res->entries[i]->bytecode_offset = entity_attrs->offset;
             res->entries[i]->key             = key_id;
@@ -365,9 +367,10 @@
         /* Time to pack keys */
         num = VTABLE_elements(interp, types);
         res->num_keys = num;
-        res->keys = mem_allocate_n_typed(num, PackFile_Annotations_Key*);
+        res->keys = mem_gc_allocate_n_zeroed_typed(INTERP, num,
+                PackFile_Annotations_Key*);
         for (i = 0; i < num; ++i) {
-            res->keys[i] = mem_allocate_typed(PackFile_Annotations_Key);
+            res->keys[i] = mem_gc_allocate_typed(INTERP, PackFile_Annotations_Key);
             res->keys[i]->name = VTABLE_get_integer_keyed_int(interp, names, i);
             res->keys[i]->type = VTABLE_get_integer_keyed_int(interp, types, i);
         }

Modified: branches/ops_pct/src/pmc/packfileconstanttable.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfileconstanttable.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/packfileconstanttable.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -45,8 +45,8 @@
         Parrot_PackfileConstantTable_attributes * attrs =
                 PMC_data_typed(SELF, Parrot_PackfileConstantTable_attributes*);
 
-        attrs->constants = pmc_new(interp, enum_class_ResizablePMCArray);
-        attrs->types     = pmc_new(interp, enum_class_ResizableIntegerArray);
+        attrs->constants = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        attrs->types     = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
 
         PObj_custom_mark_SET(SELF);
         PMC_data(SELF) = attrs;
@@ -129,7 +129,7 @@
         Parrot_PackfileConstantTable_attributes * attrs =
                 PARROT_PACKFILECONSTANTTABLE(SELF);
         PackFile_ConstTable * pftable =
-                mem_allocate_zeroed_typed(PackFile_ConstTable);
+                mem_gc_allocate_zeroed_typed(INTERP, PackFile_ConstTable);
         PackFile_Constant   * value;
         opcode_t              i;
 
@@ -137,8 +137,8 @@
 
         /* Copy all constanst with respect of type */
         pftable->const_count = VTABLE_get_integer(interp, attrs->constants);
-        pftable->constants   = mem_allocate_n_typed(pftable->const_count,
-                PackFile_Constant*);
+        pftable->constants   = mem_gc_allocate_n_typed(INTERP,
+                pftable->const_count, PackFile_Constant*);
 
         for (i = 0; i < pftable->const_count; ++i) {
             value = PackFile_Constant_new(interp);
@@ -323,6 +323,29 @@
 
 /*
 
+=item C<void set_main(INTVAL index)>
+
+Set the :main flag in a Sub in the constant table.
+
+Experimental. Use with care. There is no way to set the
+private flags from PIR, so we need something like this.
+
+If something goes wrong, blame NotFound.
+
+=cut
+
+*/
+    METHOD set_main(INTVAL index) {
+        PMC *mainsub = SELF.get_pmc_keyed_int(index);
+        if (mainsub->vtable->base_type != enum_class_Sub)
+            Parrot_ex_throw_from_c_args(interp, NULL,
+                EXCEPTION_INVALID_OPERATION,
+                "Attempt to set main flag in a non Sub");
+        SUB_FLAG_flag_SET(PF_MAIN, mainsub);
+    }
+
+/*
+
 =item C<INTVAL get_or_create_constant()>
 
 Get or create constant for passed value.

Modified: branches/ops_pct/src/pmc/packfiledirectory.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfiledirectory.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/packfiledirectory.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -42,7 +42,7 @@
         Parrot_PackfileDirectory_attributes * attrs =
                 PMC_data_typed(SELF, Parrot_PackfileDirectory_attributes*);
 
-        attrs->hash = pmc_new(interp, enum_class_Hash);
+        attrs->hash = Parrot_pmc_new(interp, enum_class_Hash);
 
         PObj_custom_mark_SET(SELF);
     }
@@ -110,7 +110,7 @@
                 break;
             }
 
-            segment = pmc_new(interp, pmc_type);
+            segment = Parrot_pmc_new(interp, pmc_type);
             name    = pfseg->name;
             VTABLE_set_pmc_keyed_str(interp, SELF, name, segment);
 

Modified: branches/ops_pct/src/pmc/packfilefixupentry.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfilefixupentry.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/packfilefixupentry.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -95,7 +95,7 @@
         Parrot_PackfileFixupEntry_attributes * attrs =
                 PARROT_PACKFILEFIXUPENTRY(SELF);
         PackFile_FixupEntry                  * entry =
-                mem_allocate_zeroed_typed(PackFile_FixupEntry);
+                mem_gc_allocate_zeroed_typed(INTERP, PackFile_FixupEntry);
 
         entry->type     = attrs->type;
         entry->name     = strdup(Parrot_string_cstring(interp, attrs->name));

Modified: branches/ops_pct/src/pmc/packfilefixuptable.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfilefixuptable.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/packfilefixuptable.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -42,7 +42,7 @@
         Parrot_PackfileFixupTable_attributes * attrs =
                 PMC_data_typed(SELF, Parrot_PackfileFixupTable_attributes*);
 
-        attrs->entries = pmc_new(interp, enum_class_ResizablePMCArray);
+        attrs->entries = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
         PObj_custom_mark_SET(SELF);
     }
@@ -89,7 +89,7 @@
 
         for (i = 0; i < table->fixup_count; ++i) {
             val = table->fixups[i];
-            entry = pmc_new(interp, enum_class_PackfileFixupEntry);
+            entry = Parrot_pmc_new(interp, enum_class_PackfileFixupEntry);
             VTABLE_set_pointer(interp, entry, (void*)val);
             VTABLE_set_pmc_keyed_int(interp, attrs->entries, i, entry);
         }
@@ -108,15 +108,15 @@
         Parrot_PackfileFixupTable_attributes * attrs =
                 PARROT_PACKFILEFIXUPTABLE(SELF);
         PackFile_FixupTable * pftable =
-                mem_allocate_zeroed_typed(PackFile_FixupTable);
+                mem_gc_allocate_zeroed_typed(INTERP, PackFile_FixupTable);
         PMC                 * entry;
         PackFile_FixupEntry * val;
         opcode_t              i;
 
         pftable->base.type   = PF_FIXUP_SEG;
         pftable->fixup_count = VTABLE_elements(interp, attrs->entries);
-        pftable->fixups      = mem_allocate_n_typed(pftable->fixup_count,
-                PackFile_FixupEntry*);
+        pftable->fixups      = mem_gc_allocate_n_typed(INTERP,
+                pftable->fixup_count, PackFile_FixupEntry*);
 
         /* Copy all entries */
         for (i = 0; i < pftable->fixup_count; ++i) {

Modified: branches/ops_pct/src/pmc/packfilerawsegment.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfilerawsegment.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/packfilerawsegment.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -44,7 +44,7 @@
         Parrot_PackfileRawSegment_attributes * attrs =
                 PMC_data_typed(SELF, Parrot_PackfileRawSegment_attributes*);
 
-        attrs->opcodes = pmc_new(interp, enum_class_ResizableIntegerArray);
+        attrs->opcodes = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
         attrs->type    = PF_BYTEC_SEG;
 
         PObj_custom_mark_SET(SELF);
@@ -111,7 +111,7 @@
 
     VTABLE void *get_pointer() {
         PackFile_Segment * pfseg =
-                (PackFile_Segment*)mem_allocate_zeroed_typed(PackFile_ByteCode);
+                (PackFile_Segment*)mem_gc_allocate_zeroed_typed(INTERP, PackFile_ByteCode);
         Parrot_PackfileRawSegment_attributes * attrs =
                 PARROT_PACKFILERAWSEGMENT(SELF);
         PMC * opcodes = attrs->opcodes;
@@ -119,7 +119,7 @@
 
         pfseg->type     = attrs->type;
         pfseg->size     = VTABLE_get_integer(interp, opcodes);
-        pfseg->data     = mem_allocate_n_typed(pfseg->size, opcode_t);
+        pfseg->data     = mem_gc_allocate_n_typed(INTERP, pfseg->size, opcode_t);
 
         /* Not very efficient... */
         for (i = 0; i < pfseg->size; ++i) {

Modified: branches/ops_pct/src/pmc/parrotinterpreter.pmc
==============================================================================
--- branches/ops_pct/src/pmc/parrotinterpreter.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/parrotinterpreter.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -53,7 +53,7 @@
     /* we block GC runs while cloning since C<d> is not yet running */
     Parrot_block_GC_mark(d);
 
-    d->scheduler = pmc_new(d, enum_class_Scheduler);
+    d->scheduler = Parrot_pmc_new(d, enum_class_Scheduler);
     d->scheduler = VTABLE_share_ro(d, d->scheduler);
 
     /* can't copy directly, unless you want double-frees */
@@ -176,17 +176,7 @@
     new_interp->current_cont = NEED_CONTINUATION;
 }
 
-static int
-recursion_limit(PARROT_INTERP, PMC *self, int l)
-{
-    const int ret           = interp->recursion_limit;
-    UNUSED(self)
-
-    interp->recursion_limit = l;
-    return ret;
-}
-
-pmclass ParrotInterpreter no_ro {
+pmclass ParrotInterpreter no_ro manual_attrs {
     ATTR struct parrot_interp_t *interp; /* this PMC's interpreter */
     ATTR INTVAL                  tid;    /* thread id */
     ATTR PMC                    *args;   /* args passed to this thread */
@@ -200,24 +190,28 @@
 
 =over 4
 
-=item C<void class_init()>
+=item C<yield>
 
-Class initialization.
+Yield the current thread
+
+=item C<recursion_limit(INTVAL l :optional, INTVAL has_l :opt_flag )>
+
+Gets the recursion limit of the interpreter, optionally setting it to something
+new.
 
 =cut
 
 */
 
-    void class_init() {
-        const int typ = enum_class_ParrotInterpreter;
-
-        /* TODO unify and fix signatures */
-        register_nci_method(INTERP, typ,
-                F2DPTR(pt_thread_yield), "yield", "v");
+    METHOD yield() {
+        pt_thread_yield();
+    }
 
-        /* misc functions */
-        register_nci_method(INTERP, typ,
-                F2DPTR(recursion_limit), "recursion_limit", "iJOi");
+    METHOD recursion_limit(INTVAL l :optional, INTVAL has_l :opt_flag) {
+        const INTVAL ret = INTERP->recursion_limit;
+        if (has_l)
+            INTERP->recursion_limit = l;
+        RETURN(INTVAL ret);
     }
 
 /*
@@ -238,7 +232,7 @@
          */
         if (!PMC_data(SELF)) {
             Parrot_ParrotInterpreter_attributes *attrs =
-                mem_allocate_zeroed_typed(Parrot_ParrotInterpreter_attributes);
+                mem_gc_allocate_zeroed_typed(INTERP, Parrot_ParrotInterpreter_attributes);
             PMC_data(SELF) = attrs;
         }
         if (!PMC_interp(SELF)) {
@@ -264,7 +258,7 @@
 
         if (!PMC_data(SELF)) {
             Parrot_ParrotInterpreter_attributes *attrs =
-                mem_allocate_zeroed_typed(Parrot_ParrotInterpreter_attributes);
+                mem_gc_allocate_zeroed_typed(INTERP, Parrot_ParrotInterpreter_attributes);
             PMC_data(SELF) = attrs;
         }
         if (!PMC_interp(SELF)) {
@@ -286,7 +280,7 @@
 
     VTABLE void destroy() {
         if (PMC_data(SELF)) {
-            mem_sys_free(PMC_data(SELF));
+            mem_gc_free(INTERP, PMC_data(SELF));
             PMC_data(SELF) = NULL;
         }
     }
@@ -305,11 +299,11 @@
     VTABLE void set_pointer(void *value) {
 
         /* XXX: init_world in src/global_setup.c needs to create a
-         * ParrotInterpreter through pmc_new_noinit.  If this PMC hasn't been
+         * ParrotInterpreter through Parrot_pmc_new_noinit.  If this PMC hasn't been
          * initialized, cheat by initializing instead. */
         if (!PMC_data(SELF)) {
             Parrot_ParrotInterpreter_attributes *attrs =
-                mem_allocate_zeroed_typed(Parrot_ParrotInterpreter_attributes);
+                mem_gc_allocate_zeroed_typed(INTERP, Parrot_ParrotInterpreter_attributes);
             PMC_data(SELF) = attrs;
             PObj_custom_destroy_SET(SELF);
         }
@@ -559,7 +553,7 @@
                         pc - seg->base.data, NULL);
             }
 
-            return pmc_new(interp, enum_class_Hash);
+            return Parrot_pmc_new(interp, enum_class_Hash);
         }
 
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
@@ -621,7 +615,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         clone_interpreter(PMC_interp(dest),
                           PMC_interp(SELF), PARROT_CLONE_DEFAULT);
@@ -719,7 +713,7 @@
     VTABLE void thaw(PMC *info) {
         if (!PMC_data(SELF)) {
             Parrot_ParrotInterpreter_attributes *attrs =
-                mem_allocate_zeroed_typed(Parrot_ParrotInterpreter_attributes);
+                mem_gc_allocate_zeroed_typed(INTERP, Parrot_ParrotInterpreter_attributes);
             PMC_data(SELF) = attrs;
             PObj_custom_destroy_SET(SELF);
         }

Modified: branches/ops_pct/src/pmc/parrotlibrary.pmc
==============================================================================
--- branches/ops_pct/src/pmc/parrotlibrary.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/parrotlibrary.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -77,7 +77,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest     = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest     = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         PMC_oplib_init(dest) = PMC_oplib_init(SELF);
         PMC_dlhandle(dest)   = PMC_dlhandle(SELF);
 

Modified: branches/ops_pct/src/pmc/parrotthread.pmc
==============================================================================
--- branches/ops_pct/src/pmc/parrotthread.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/parrotthread.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -71,7 +71,7 @@
     interp->flags &= ~PARROT_THR_COPY_INTERP; /* XXX */
     pt_thread_run(interp, thread, sub, args);
 
-    pmc_reuse(interp, thread, enum_class_ParrotRunningThread, 0);
+    Parrot_pmc_reuse(interp, thread, enum_class_ParrotRunningThread, 0);
 
     PObj_custom_mark_CLEAR(thread);
     VTABLE_set_integer_native(interp, thread, tid);
@@ -79,12 +79,6 @@
     return tid;
 }
 
-static INTVAL do_thread_run_clone_default(PARROT_INTERP,
-                                          PMC *thread, PMC *sub, PMC *args) {
-    return do_thread_run(interp, thread, PARROT_CLONE_DEFAULT, sub, args);
-}
-
-
 pmclass ParrotThread extends ParrotInterpreter no_ro {
 
 /*
@@ -103,17 +97,17 @@
 
 */
 
-    void class_init() {
-        const int typ = enum_class_ParrotThread;
-
-        register_nci_method(INTERP, typ,
-                F2DPTR(do_thread_run), "run", "IJOIP@");
+    METHOD run(INTVAL clone_flags, PMC *sub, PMC *args :slurpy) {
+        const INTVAL retval = do_thread_run(INTERP, SELF, clone_flags, sub, args);
+        RETURN(INTVAL retval);
+    }
 
-        /* XXX appropriate name given that this won't clone globals? */
-        register_nci_method(INTERP, typ,
-                F2DPTR(do_thread_run_clone_default), "run_clone", "IJOP@");
+    METHOD run_clone(PMC *sub, PMC *args :slurpy) {
+        const INTVAL retval = do_thread_run(INTERP, SELF, PARROT_CLONE_DEFAULT, sub, args);
+        RETURN(INTVAL retval)
     }
 
+
 /*
 
 =item C<void init()>

Modified: branches/ops_pct/src/pmc/pmc.num
==============================================================================
--- branches/ops_pct/src/pmc/pmc.num	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/pmc.num	Sun Mar  7 19:33:20 2010	(r44743)
@@ -79,3 +79,6 @@
 
 os.pmc    51
 file.pmc    52
+
+oplib.pmc    53
+opcode.pmc    54

Modified: branches/ops_pct/src/pmc/pmcproxy.pmc
==============================================================================
--- branches/ops_pct/src/pmc/pmcproxy.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/pmcproxy.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -79,7 +79,7 @@
     VTABLE void init() {
         Parrot_Class_attributes * const _pmc =
                 (Parrot_Class_attributes *) PMC_data(SELF);
-        PMC          * const new_attribute   = pmc_new(interp, enum_class_Hash);
+        PMC          * const new_attribute   = Parrot_pmc_new(interp, enum_class_Hash);
         STRING       * const name            = CONST_STRING(interp, "proxy");
 
         /* Set flag for custom GC mark. */
@@ -89,16 +89,16 @@
         _pmc->id               = 0;
         _pmc->name             = CONST_STRING(interp, "");
         _pmc->_namespace       = PMCNULL;
-        _pmc->parents          = pmc_new(interp, enum_class_ResizablePMCArray);
-        _pmc->all_parents      = pmc_new(interp, enum_class_ResizablePMCArray);
-        _pmc->roles            = pmc_new(interp, enum_class_ResizablePMCArray);
-        _pmc->methods          = pmc_new(interp, enum_class_Hash);
-        _pmc->vtable_overrides = pmc_new(interp, enum_class_Hash);
-        _pmc->parent_overrides = pmc_new(interp, enum_class_Hash);
-        _pmc->attrib_metadata  = pmc_new(interp, enum_class_Hash);
+        _pmc->parents          = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        _pmc->all_parents      = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        _pmc->roles            = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        _pmc->methods          = Parrot_pmc_new(interp, enum_class_Hash);
+        _pmc->vtable_overrides = Parrot_pmc_new(interp, enum_class_Hash);
+        _pmc->parent_overrides = Parrot_pmc_new(interp, enum_class_Hash);
+        _pmc->attrib_metadata  = Parrot_pmc_new(interp, enum_class_Hash);
         _pmc->attrib_index     = PMCNULL;
         _pmc->attrib_cache     = PMCNULL;
-        _pmc->resolve_method   = pmc_new(interp, enum_class_ResizablePMCArray);
+        _pmc->resolve_method   = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
         /* Set up the attribute storage for the proxy instance */
         VTABLE_set_string_keyed_str(interp, new_attribute, CONST_STRING(interp, "name"), name);
@@ -194,9 +194,9 @@
         Parrot_Class_attributes * const _pmc = PARROT_CLASS(SELF);
 
         if (!PMC_IS_NULL(init))
-            return pmc_new_init(interp, _pmc->id, init);
+            return Parrot_pmc_new_init(interp, _pmc->id, init);
 
-        return pmc_new(interp, _pmc->id);
+        return Parrot_pmc_new(interp, _pmc->id);
     }
 
 /*
@@ -266,6 +266,7 @@
 
         return 0;
     }
+
 /*
 
 =item C<INTVAL isa(STRING *classname)>
@@ -315,7 +316,7 @@
     VTABLE INTVAL does(STRING *role_name) {
         Parrot_Class_attributes *_class  = PARROT_CLASS(SELF);
         INTVAL                   id      = _class->id;
-        PMC                     *proxied = pmc_new(interp, id);
+        PMC                     *proxied = Parrot_pmc_new(interp, id);
 
         if (VTABLE_does(interp, proxied, role_name))
             return 1;
@@ -359,7 +360,7 @@
         STRING * const meth_str    = CONST_STRING(interp, "methods");
         STRING * const parents_str = CONST_STRING(interp, "parents");
 
-        PMC * const metadata = pmc_new(interp, enum_class_Hash);
+        PMC * const metadata = Parrot_pmc_new(interp, enum_class_Hash);
 
         VTABLE_set_pmc_keyed_str(interp, metadata, name_str,
             VTABLE_inspect_str(interp, SELF, name_str));
@@ -382,6 +383,7 @@
 =cut
 
 */
+
     METHOD name() {
         Parrot_Class_attributes * const _pmc     = PARROT_CLASS(SELF);
         STRING       * const ret_name = _pmc->name;
@@ -397,6 +399,7 @@
 =cut
 
 */
+
     METHOD get_namespace() {
         Parrot_Class_attributes * const _pmc          = PARROT_CLASS(SELF);
         PMC          * const ret_namespace = _pmc->_namespace;
@@ -412,6 +415,7 @@
 =cut
 
 */
+
     METHOD new(PMC *args :optional, int got_args :opt_flag) {
         PMC * const obj = VTABLE_instantiate(interp, SELF, args);
         UNUSED(got_args);
@@ -427,6 +431,7 @@
 =cut
 
 */
+
     METHOD methods() {
         PMC * const ret_methods = VTABLE_inspect_str(interp, SELF, CONST_STRING(interp, "methods"));
         RETURN(PMC *ret_methods);
@@ -441,6 +446,7 @@
 =cut
 
 */
+
     METHOD parents() {
         PMC * const ret_parents = VTABLE_inspect_str(interp, SELF, CONST_STRING(interp, "parents"));
         RETURN(PMC *ret_parents);
@@ -456,6 +462,7 @@
 =cut
 
 */
+
     METHOD inspect(STRING *what :optional, int got_what :opt_flag) {
         /* Just delegate to the appropriate vtable method. */
         PMC * const found =

Modified: branches/ops_pct/src/pmc/pointer.pmc
==============================================================================
--- branches/ops_pct/src/pmc/pointer.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/pointer.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -67,7 +67,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new_noinit(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new_noinit(INTERP, SELF->vtable->base_type);
         PObj_custom_mark_SET(dest);
         PMC_data(dest) = PMC_data(SELF);
         return dest;

Modified: branches/ops_pct/src/pmc/resizablebooleanarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/resizablebooleanarray.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/resizablebooleanarray.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -148,8 +148,9 @@
         /* Nothing allocated yet */
         GET_ATTR_bit_array(INTERP, SELF, bit_array);
         if (!bit_array) {
-            SET_ATTR_bit_array(INTERP, SELF,
-                    (unsigned char *)mem_sys_allocate_zeroed(new_size_in_bytes));
+            void *new_bit_array = Parrot_gc_allocate_memory_chunk(INTERP, new_size_in_bytes);
+            memset(new_bit_array, 0, new_size_in_bytes);
+            SET_ATTR_bit_array(INTERP, SELF, (unsigned char *)new_bit_array);
 
         /* The size is different, and doesn't fit within the current
          * allocation */
@@ -157,15 +158,16 @@
         else if (new_size_in_bytes != old_size_in_bytes) {
             unsigned char * old_store = bit_array;
             unsigned char * new_store =
-                (unsigned char *)mem_sys_allocate_zeroed(new_tail_pos);
+                (unsigned char *)Parrot_gc_allocate_memory_chunk(INTERP, new_tail_pos);
             size_t          copy_size =
                 new_size_in_bytes < old_size_in_bytes ? new_size_in_bytes : old_size_in_bytes;
+            memset(new_store, 0, new_tail_pos);
 
             /* Replace old array with new array, and free old array */
             SET_ATTR_bit_array(INTERP, SELF,
                     (unsigned char *)mem_sys_memmove(
                         new_store, old_store, copy_size));
-            mem_sys_free(old_store);
+            mem_gc_free(INTERP, old_store);
         }
     }
 
@@ -249,7 +251,8 @@
 
             /* Allocate an extra allocation unit of space in new array */
             new_mem_size  = ROUND_BYTES(tail_pos+ MIN_ALLOC);
-            new_bit_array = (unsigned char *)mem_sys_allocate_zeroed(new_mem_size);
+            new_bit_array = (unsigned char *)Parrot_gc_allocate_memory_chunk(INTERP, new_mem_size);
+            memset(new_bit_array, 0, new_mem_size);
 
             /* Copy contents of old array to new array, moving the head
              * position forward by one allocation unit (in bytes). */
@@ -259,7 +262,7 @@
 
             /* Replace old array with new array, and free old array */
             SET_ATTR_bit_array(INTERP, SELF, new_bit_array);
-            mem_sys_free(old_bit_array);
+            mem_gc_free(INTERP, old_bit_array);
 
             /* Added one allocation unit to the head position offset */
             SET_ATTR_size(INTERP, SELF, tail_pos + MIN_ALLOC);
@@ -309,7 +312,8 @@
             GET_ATTR_size(INTERP, SELF, tail_pos);
             new_mem_size  = ROUND_BYTES(tail_pos - MIN_ALLOC);
             new_bit_array =
-                (unsigned char *)mem_sys_allocate_zeroed(new_mem_size);
+                (unsigned char *)Parrot_gc_allocate_memory_chunk(INTERP, new_mem_size);
+            memset(new_bit_array, 0, new_mem_size);
 
             /* Copy contents of old array to new array, move the head position
              * offset back by one allocation unit (in bytes) */
@@ -319,7 +323,7 @@
 
             /* Replace old array with new array, and free old array */
             SET_ATTR_bit_array(INTERP, SELF, new_bit_array);
-            mem_sys_free(old_bit_array);
+            mem_gc_free(INTERP, old_bit_array);
 
             /* Removed one allocation unit from the head position offset */
             SET_ATTR_size(INTERP, SELF, tail_pos - MIN_ALLOC);
@@ -373,7 +377,7 @@
         UINTVAL         tail_pos, head_pos;
         unsigned char * my_bit_array, * dest_bit_array;
 
-        PMC * const     dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const     dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         GET_ATTR_bit_array(INTERP, SELF, my_bit_array);
         GET_ATTR_size(INTERP, SELF, tail_pos);
@@ -384,7 +388,7 @@
 
         if (my_bit_array) {
             size_t size_in_bits = tail_pos / BITS_PER_CHAR + 1;
-            dest_bit_array = (unsigned char *)mem_sys_allocate(size_in_bits);
+            dest_bit_array = (unsigned char *)Parrot_gc_allocate_memory_chunk(INTERP, size_in_bits);
             mem_sys_memcopy(dest_bit_array, my_bit_array, size_in_bits);
         }
         else

Modified: branches/ops_pct/src/pmc/resizablefloatarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/resizablefloatarray.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/resizablefloatarray.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -130,8 +130,7 @@
                 cur          &= ~0xfff;
             }
             SET_ATTR_float_array(INTERP, SELF,
-                    (FLOATVAL*)mem_sys_realloc(float_array,
-                    cur * sizeof (FLOATVAL)));
+                    mem_gc_realloc_n_typed(INTERP, float_array, cur, FLOATVAL));
             SET_ATTR_size(INTERP, SELF, size);
             SET_ATTR_resize_threshold(INTERP, SELF, cur);
         }

Modified: branches/ops_pct/src/pmc/resizableintegerarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/resizableintegerarray.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/resizableintegerarray.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -124,7 +124,7 @@
             }
 
             GET_ATTR_int_array(INTERP, SELF, int_array);
-            mem_realloc_n_typed(int_array, cur, INTVAL);
+            int_array = mem_gc_realloc_n_typed(INTERP, int_array, cur, INTVAL);
             SET_ATTR_int_array(INTERP, SELF, int_array);
             SET_ATTR_size(INTERP, SELF, size);
             SET_ATTR_resize_threshold(INTERP, SELF, cur);

Modified: branches/ops_pct/src/pmc/resizablepmcarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/resizablepmcarray.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/resizablepmcarray.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -92,7 +92,8 @@
             if (cur < 8)
                 cur = 8;
 
-            PMC_array(SELF) = mem_realloc_n_typed(PMC_array(SELF), cur, PMC *);
+            PMC_array(SELF) = mem_gc_realloc_n_typed_zeroed(INTERP,
+                    PMC_array(SELF), cur, i, PMC *);
 
             for (; i < cur; i++) {
                 (PMC_array(SELF))[i] = PMCNULL;
@@ -366,7 +367,7 @@
     VTABLE void push_float(FLOATVAL value) {
 
         INTVAL size = PMC_size(SELF);
-        PMC   *val  = pmc_new(INTERP, enum_class_Float);
+        PMC   *val  = Parrot_pmc_new(INTERP, enum_class_Float);
 
         VTABLE_set_number_native(INTERP, val, value);
         SELF.set_pmc_keyed_int(size, val);
@@ -377,7 +378,7 @@
     VTABLE void push_integer(INTVAL value) {
 
         INTVAL size = PMC_size(SELF);
-        PMC   *val  = pmc_new(INTERP, enum_class_Integer);
+        PMC   *val  = Parrot_pmc_new(INTERP, enum_class_Integer);
 
         VTABLE_set_integer_native(INTERP, val, value);
         SELF.set_pmc_keyed_int(size, val);
@@ -397,7 +398,7 @@
     VTABLE void push_string(STRING *value) {
 
         INTVAL size = PMC_size(SELF);
-        PMC   *val  = pmc_new(INTERP, enum_class_String);
+        PMC   *val  = Parrot_pmc_new(INTERP, enum_class_String);
 
         VTABLE_assign_string_native(INTERP, val, value);
         SELF.set_pmc_keyed_int(size, val);
@@ -501,7 +502,7 @@
     VTABLE void unshift_float(FLOATVAL value) {
 
         INTVAL  size = PMC_size(SELF);
-        PMC    *val  = pmc_new(INTERP, enum_class_Float);
+        PMC    *val  = Parrot_pmc_new(INTERP, enum_class_Float);
         PMC   **data;
         INTVAL  i;
 
@@ -521,7 +522,7 @@
     VTABLE void unshift_integer(INTVAL value) {
 
         INTVAL  size = PMC_size(SELF);
-        PMC    *val  = pmc_new(INTERP, enum_class_Integer);
+        PMC    *val  = Parrot_pmc_new(INTERP, enum_class_Integer);
         PMC    **data;
         INTVAL   i;
 
@@ -559,7 +560,7 @@
     VTABLE void unshift_string(STRING *value) {
 
         INTVAL  size = PMC_size(SELF);
-        PMC    *val  = pmc_new(INTERP, enum_class_String);
+        PMC    *val  = Parrot_pmc_new(INTERP, enum_class_String);
         PMC   **data;
         INTVAL  i;
 

Modified: branches/ops_pct/src/pmc/resizablestringarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/resizablestringarray.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/resizablestringarray.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -144,7 +144,7 @@
 
     VTABLE PMC *pop_pmc() {
         STRING *strval = SELF.pop_string();
-        PMC    *value  = pmc_new(INTERP, enum_class_String);
+        PMC    *value  = Parrot_pmc_new(INTERP, enum_class_String);
 
         VTABLE_set_string_native(INTERP, value, strval);
 
@@ -241,8 +241,8 @@
             }
 
             SET_ATTR_str_array(INTERP, SELF,
-                    (STRING **)mem_sys_realloc(
-                        str_array, cur * sizeof (STRING*)));
+                    mem_gc_realloc_n_typed_zeroed(INTERP, str_array,
+                            cur, resize_threshold, STRING*));
             GET_ATTR_str_array(INTERP, SELF, str_array);
 
             for (; i < cur; i++)
@@ -308,7 +308,7 @@
 
     VTABLE PMC *shift_pmc() {
         STRING *strval = SELF.shift_string();
-        PMC    *value  = pmc_new(INTERP, enum_class_String);
+        PMC    *value  = Parrot_pmc_new(INTERP, enum_class_String);
 
         VTABLE_set_string_native(INTERP, value, strval);
 
@@ -374,7 +374,7 @@
 */
 
     VTABLE void push_integer(INTVAL value) {
-        PMC    *ret = pmc_new(INTERP, enum_class_String);
+        PMC    *ret = Parrot_pmc_new(INTERP, enum_class_String);
         STRING *val;
 
         VTABLE_set_integer_native(INTERP, ret, value);
@@ -394,7 +394,7 @@
 */
 
     VTABLE void push_float(FLOATVAL value) {
-        PMC    *ret = pmc_new(INTERP, enum_class_String);
+        PMC    *ret = Parrot_pmc_new(INTERP, enum_class_String);
         STRING *val;
 
         VTABLE_set_number_native(INTERP, ret, value);
@@ -424,7 +424,7 @@
                     "ResizableStringArray: Can't shift from an empty array!");
 
         value = SELF.get_string_keyed_int(0);
-        ret   = pmc_new(INTERP, enum_class_String);
+        ret   = Parrot_pmc_new(INTERP, enum_class_String);
 
         VTABLE_set_string_native(INTERP, ret, value);
         SELF.delete_keyed_int(0);
@@ -486,7 +486,7 @@
 */
 
     VTABLE void unshift_integer(INTVAL value) {
-        PMC    *ret = pmc_new(INTERP, enum_class_String);
+        PMC    *ret = Parrot_pmc_new(INTERP, enum_class_String);
         STRING *val;
 
         VTABLE_set_integer_native(INTERP, ret, value);
@@ -506,7 +506,7 @@
 */
 
     VTABLE void unshift_float(FLOATVAL value) {
-        PMC    *ret = pmc_new(INTERP, enum_class_String);
+        PMC    *ret = Parrot_pmc_new(INTERP, enum_class_String);
         STRING *val;
 
         VTABLE_set_number_native(INTERP, ret, value);

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

Modified: branches/ops_pct/src/pmc/scalar.pmc
==============================================================================
--- branches/ops_pct/src/pmc/scalar.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/scalar.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -20,68 +20,6 @@
 
 #include "pmc/pmc_bigint.h"
 
-static PMC *
-bitwise_left_shift_internal(PARROT_INTERP, PMC *self,
-                            PMC *dest, INTVAL shift_amount)
-{
-    /* This handles both left and right shifts; the sign of shift_amount
-       controls the direction, shifting left if positive and right if negative.
-       If we get an error (which can only happen for left shifts) and
-       PARROT_ERRORS_OVERFLOW_FLAG is set, then we throw an error, else the
-       destination is promoted to a BigInt before shifting.  If dest == self,
-       then the shift is done in place.  */
-    const INTVAL base = VTABLE_get_integer(interp, self);
-    INTVAL result     = 0;
-    int overflow_p    = 0;
-
-    /* Compute the shift. */
-    if (shift_amount >= 8*INTVAL_SIZE) {
-        /* Extreme left shift; no need to do an integer shift first. */
-        overflow_p = 1;
-    }
-    else if (shift_amount >= 0) {
-        /* Left shift. */
-        result = base << shift_amount;
-        overflow_p = (result >> shift_amount) != base;
-    }
-    else if (shift_amount > -8*INTVAL_SIZE) {
-        /* Right shift.  By definition, this can never overflow. */
-        result = base >> -shift_amount;
-    }
-    else {
-        /* Extreme right shift. */
-        result = 0;
-    }
-
-    /* Store the result. */
-    if (! overflow_p) {
-        /* If SELF is the destination, we won't want to create a
-           new PMC, because then we won't have the result in SELF.
-           Only create a new PMC if we aren't saving the result
-           to SELF, or if they are both NULL */
-        if (dest != self || dest == NULL)
-            dest = pmc_new(interp, VTABLE_type(interp, self));
-
-        VTABLE_set_integer_native(interp, dest, result);
-    }
-    else if (PARROT_ERRORS_test(interp, PARROT_ERRORS_OVERFLOW_FLAG)) {
-        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ERR_OVERFLOW,
-            "Integer overflow");
-    }
-    else {
-        /* Overflow; must promote dest to BigInt, and do a BigInt shift. */
-        if (self == dest)
-            pmc_reuse(interp, self, enum_class_BigInt, 0);
-        else
-            dest = pmc_new(interp, enum_class_BigInt);
-
-        VTABLE_set_integer_native(interp, dest, base);
-        VTABLE_i_bitwise_shl_int(interp, dest, shift_amount);
-    }
-
-    return dest;
-}
-
 pmclass scalar {
 
 /*
@@ -101,15 +39,15 @@
 
         if (self_type == enum_class_Boolean)
             /* doesn't morph */
-            pmc_reuse(INTERP, SELF, val_type, 0);
+            Parrot_pmc_reuse(INTERP, SELF, val_type, 0);
 
         if (val_type == enum_class_Undef) {
-            pmc_reuse(INTERP, SELF, val_type, 0);
+            Parrot_pmc_reuse(INTERP, SELF, val_type, 0);
             return;
         }
 
         if (VTABLE_isa(INTERP, value, CONST_STRING(INTERP, "Undef"))) {
-            pmc_reuse(INTERP, SELF, enum_class_Undef, 0);
+            Parrot_pmc_reuse(INTERP, SELF, enum_class_Undef, 0);
             return;
         }
 
@@ -130,7 +68,7 @@
             SELF.set_string_native(v);
             return;
         }
-        pmc_reuse(INTERP, SELF, val_type, 0);
+        Parrot_pmc_reuse(INTERP, SELF, val_type, 0);
         SELF.set_pmc(value);
     }
 
@@ -174,7 +112,7 @@
     MULTI PMC *add(Complex value, PMC *dest) {
         const FLOATVAL a = SELF.get_number();
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, value));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 a + VTABLE_get_number_keyed_int(INTERP, value, 0));
@@ -184,7 +122,7 @@
     }
 
     MULTI PMC *add(DEFAULT value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() + VTABLE_get_number(INTERP, value));
@@ -192,7 +130,7 @@
     }
 
     VTABLE PMC *add_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() + (FLOATVAL)value);
@@ -200,7 +138,7 @@
     }
 
     VTABLE PMC *add_float(FLOATVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() + value);
@@ -210,7 +148,7 @@
     MULTI void i_add(Complex value) {
         const FLOATVAL a = SELF.get_number();
 
-        pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
         VTABLE_set_number_native(INTERP, SELF,
                 a + VTABLE_get_number_keyed_int(INTERP, value, 0));
         VTABLE_set_number_keyed_int(INTERP, SELF, 1,
@@ -257,7 +195,7 @@
 
     MULTI PMC *subtract(Complex value, PMC *dest) {
         const FLOATVAL a = SELF.get_number();
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, value));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 a - VTABLE_get_number_keyed_int(INTERP, value, 0));
@@ -267,14 +205,14 @@
     }
 
     MULTI PMC *subtract(DEFAULT value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() - VTABLE_get_number(INTERP, value));
         return dest;
     }
 
     VTABLE PMC *subtract_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() - (FLOATVAL)value);
@@ -282,7 +220,7 @@
     }
 
     VTABLE PMC *subtract_float(FLOATVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() - value);
@@ -292,7 +230,7 @@
     MULTI void i_subtract(Complex value) {
         const FLOATVAL a = SELF.get_number();
 
-        pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
         VTABLE_set_number_native(INTERP, SELF,
                 a - VTABLE_get_number_keyed_int(INTERP, value, 0));
         VTABLE_set_number_keyed_int(INTERP, SELF, 1,
@@ -334,7 +272,7 @@
     }
 
     MULTI PMC *multiply(DEFAULT value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
             SELF.get_number() * VTABLE_get_number(INTERP, value));
@@ -342,7 +280,7 @@
     }
 
     VTABLE PMC *multiply_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
             SELF.get_number() * value);
@@ -350,7 +288,7 @@
     }
 
     VTABLE PMC *multiply_float(FLOATVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
             SELF.get_number() * value);
@@ -406,7 +344,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest, SELF.get_number() / d);
         return dest;
@@ -417,7 +355,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest, SELF.get_number() / value);
         return dest;
@@ -428,7 +366,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest, SELF.get_number() / value);
         return dest;
@@ -489,7 +427,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         d    = floor(SELF.get_number() / d);
 
         VTABLE_set_integer_native(INTERP, dest, (INTVAL)d);
@@ -501,7 +439,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 floor(SELF.get_number() / value));
@@ -513,7 +451,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 floor(SELF.get_number() / value));
@@ -579,7 +517,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 floatval_mod(SELF.get_number(), d));
@@ -591,7 +529,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 floatval_mod(SELF.get_number(), (FLOATVAL)value));
@@ -603,7 +541,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 floatval_mod(SELF.get_number(), value));
@@ -641,72 +579,6 @@
 
 /*
 
-=item C<PMC *pow(PMC *value, PMC *dest)>
-
-=item C<PMC *pow_int(INTVAL value, PMC *dest)>
-
-=item C<PMC *pow_float(FLOATVAL value, PMC *dest)>
-
-Calculates  C<SELF pow value> and returns
-the result in C<dest>. See also ops/math.ops.
-
-=item C<void i_pow(PMC *value)>
-
-=item C<void i_pow_int(INTVAL value)>
-
-=item C<void i_pow_float(FLOATVAL value)>
-
-Calculates pow inplace
-
-=cut
-
-*/
-
-    MULTI PMC *pow(PMC *value, PMC *dest) {
-        const FLOATVAL d = VTABLE_get_number(INTERP, value);
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_number_native(INTERP, dest, pow(SELF.get_number(), d));
-        return dest;
-    }
-
-    VTABLE PMC *pow_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_number_native(INTERP, dest,
-                pow(SELF.get_number(), (double)value));
-
-        return dest;
-    }
-
-    VTABLE PMC *pow_float(FLOATVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_number_native(INTERP, dest,
-                pow(SELF.get_number(), value));
-        return dest;
-    }
-
-    VTABLE void i_pow(PMC *value) {
-        const FLOATVAL d = VTABLE_get_number(INTERP, value);
-
-        VTABLE_set_number_native(INTERP, SELF,
-                pow(SELF.get_number(), d));
-    }
-
-    VTABLE void i_pow_int(INTVAL value) {
-        VTABLE_set_number_native(INTERP, SELF,
-                pow(SELF.get_number(), (float)value));
-    }
-
-    VTABLE void i_pow_float(FLOATVAL value) {
-        VTABLE_set_number_native(INTERP, SELF,
-                pow(SELF.get_number(), value));
-    }
-
-/*
-
 =item C<PMC *neg(PMC *dest)>
 
 =item C<void i_neg()>
@@ -720,7 +592,7 @@
     VTABLE PMC *neg(PMC *dest) {
         const INTVAL a = -SELF.get_integer();
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_integer_native(INTERP, dest, a);
         return dest;
@@ -734,311 +606,6 @@
 
 =back
 
-=head2 Bitwise Methods
-
-=over 4
-
-=item C<PMC *bitwise_or(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_or_int(INTVAL value, PMC *dest)>
-
-Returns in C<*dest> the bitwise C<OR> of the scalar and C<value>.
-
-=item C<void i_bitwise_or(PMC *value)>
-
-=item C<void i_bitwise_or_int(INTVAL value)>
-
-Inplace bitwise or.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_or(PMC *value, PMC *dest) {
-        const INTVAL result = SELF.get_integer() | VTABLE_get_integer(INTERP, value);
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_integer_native(INTERP, dest, result);
-        return dest;
-    }
-
-
-    VTABLE PMC *bitwise_or_int(INTVAL value, PMC *dest) {
-        const INTVAL result = SELF.get_integer() | value;
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_integer_native(INTERP, dest, result);
-        return dest;
-    }
-
-    VTABLE void i_bitwise_or(PMC *value) {
-        const INTVAL result =
-            SELF.get_integer() | VTABLE_get_integer(INTERP, value);
-
-        SELF.set_integer_native(result);
-    }
-
-
-    VTABLE void i_bitwise_or_int(INTVAL value) {
-        const INTVAL result = SELF.get_integer() | value;
-        SELF.set_integer_native(result);
-    }
-
-/*
-
-=item C<PMC *bitwise_and(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_and_int(INTVAL value, PMC *dest)>
-
-Returns in C<*dest> the bitwise C<AND> of the scalar and C<value>.
-
-=item C<void i_bitwise_and(PMC *value)>
-
-=item C<void i_bitwise_and_int(INTVAL value)>
-
-Inplace bitwise and.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_and(PMC *value, PMC *dest) {
-        const INTVAL result =
-            SELF.get_integer() & VTABLE_get_integer(INTERP, value);
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_integer_native(INTERP, dest, result);
-        return dest;
-    }
-
-    VTABLE PMC *bitwise_and_int(INTVAL value, PMC *dest) {
-        const INTVAL result = SELF.get_integer() & value;
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_integer_native(INTERP, dest, result);
-        return dest;
-    }
-
-    VTABLE void i_bitwise_and(PMC *value) {
-        const INTVAL result =
-            SELF.get_integer() & VTABLE_get_integer(INTERP, value);
-        SELF.set_integer_native(result);
-    }
-
-
-    VTABLE void i_bitwise_and_int(INTVAL value) {
-        const INTVAL result = SELF.get_integer() & value;
-        SELF.set_integer_native(result);
-    }
-
-/*
-
-=item C<void bitwise_xor(PMC *value, PMC *dest)>
-
-=item C<void bitwise_xor_int(INTVAL value, PMC *dest)>
-
-Returns in C<*dest> the bitwise C<XOR> of the scalar and C<*value>.
-
-=item C<void i_bitwise_xor(PMC *value)>
-
-=item C<void i_bitwise_xor_int(INTVAL value)>
-
-Inplace bitwise and.
-
-=cut
-
-*/
-
-    MULTI PMC *bitwise_xor(PMC *value, PMC *dest) {
-        const INTVAL result =
-            SELF.get_integer() ^ VTABLE_get_integer(INTERP, value);
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_integer_native(INTERP, dest, result);
-        return dest;
-    }
-
-    VTABLE PMC *bitwise_xor_int(INTVAL value, PMC *dest) {
-        const INTVAL result = SELF.get_integer() ^ value;
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_integer_native(INTERP, dest, result);
-        return dest;
-    }
-
-    VTABLE void i_bitwise_xor(PMC *value) {
-        const INTVAL result =
-            SELF.get_integer() ^ VTABLE_get_integer(INTERP, value);
-        SELF.set_integer_native(result);
-    }
-
-    VTABLE void i_bitwise_xor_int(INTVAL value) {
-        const INTVAL result = SELF.get_integer() ^ value;
-        SELF.set_integer_native(result);
-    }
-
-/*
-
-=item C<PMC *bitwise_not(PMC *dest)>
-
-=item C<void i_bitwise_not()>
-
-Returns in C<*dest> the bitwise negation of the scalar and C<value>.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_not(PMC *dest) {
-        const INTVAL a = ~SELF.get_integer();
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_integer_native(INTERP, dest, a);
-        return dest;
-    }
-
-    VTABLE void i_bitwise_not() {
-        VTABLE_set_integer_native(INTERP, SELF, ~SELF.get_integer());
-    }
-
-/*
-
-=item C<PMC *bitwise_shr(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_shr_int(INTVAL value, PMC *dest)>
-
-Returns in C<*dest> the arithmetic shift right of the scalar by C<value>.
-A negative C<value> shifts left.
-The destination may become a C<BigInt> as a result (but only if the shift amount
-is less than zero).
-
-=item C<void i_bitwise_shr(PMC *value)>
-
-=item C<void i_bitwise_shr_int(INTVAL value)>
-
-Inplace shift right.  A negative C<value> shifts left.
-SELF may become a C<BigInt> as a result (but only if the shift amount is less
-than zero).
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_shr(PMC *value, PMC *dest) {
-        return bitwise_left_shift_internal(INTERP, SELF, dest,
-                                           -VTABLE_get_integer(INTERP, value));
-    }
-
-    VTABLE PMC *bitwise_shr_int(INTVAL value, PMC *dest) {
-        return bitwise_left_shift_internal(INTERP, SELF, dest, -value);
-    }
-
-    VTABLE void i_bitwise_shr(PMC *value) {
-        bitwise_left_shift_internal(INTERP, SELF, SELF,
-                                    -VTABLE_get_integer(INTERP, value));
-    }
-
-    VTABLE void i_bitwise_shr_int(INTVAL value) {
-        bitwise_left_shift_internal(INTERP, SELF, SELF, -value);
-    }
-
-/*
-
-=item C<PMC *bitwise_lsr(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_lsr_int(INTVAL value, PMC *dest)>
-
-Returns in C<*dest> the logical shift right of the scalar by C<*value>.
-
-=item C<void i_bitwise_lsr(PMC *value)>
-
-=item C<void i_bitwise_lsr_int(INTVAL value)>
-
-Inplace shift right.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_lsr(PMC *value, PMC *dest) {
-        const INTVAL result = (UINTVAL)SELF.get_integer() >>
-            VTABLE_get_integer(INTERP, value);
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_integer_native(INTERP, dest, result);
-        return dest;
-    }
-
-    VTABLE PMC *bitwise_lsr_int(INTVAL value, PMC *dest) {
-        const INTVAL result = (UINTVAL)SELF.get_integer() >> value;
-
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-
-        VTABLE_set_integer_native(INTERP, dest, result);
-        return dest;
-    }
-
-    VTABLE void i_bitwise_lsr(PMC *value) {
-        const INTVAL result = (UINTVAL)SELF.get_integer() >>
-                VTABLE_get_integer(INTERP, value);
-        SELF.set_integer_native(result);
-    }
-
-    VTABLE void i_bitwise_lsr_int(INTVAL value) {
-        const INTVAL result = (UINTVAL)SELF.get_integer() >> value;
-        SELF.set_integer_native(result);
-    }
-
-/*
-
-=item C<PMC *bitwise_shl(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_shl_int(INTVAL value, PMC *dest)>
-
-Returns in C<*dest> the shift left of the scalar by C<*value>.  A negative
-C<value> shifts right.  The destination may become a C<BigInt> as a result.
-
-=item C<void i_bitwise_shl(PMC *value)>
-
-=item C<void i_bitwise_shl_int(INTVAL value)>
-
-Inplace shift left.  A negative C<value> shifts right.  SELF may become a
-C<BigInt> as a result.
-
-=cut
-
-*/
-
-    VTABLE PMC *bitwise_shl(PMC *value, PMC *dest) {
-        return bitwise_left_shift_internal(INTERP, SELF, dest,
-                                           VTABLE_get_integer(INTERP, value));
-    }
-
-    VTABLE PMC *bitwise_shl_int(INTVAL value, PMC *dest) {
-        return bitwise_left_shift_internal(INTERP, SELF, dest, value);
-    }
-
-    VTABLE void i_bitwise_shl(PMC *value) {
-        bitwise_left_shift_internal(INTERP, SELF, SELF,
-                                    VTABLE_get_integer(INTERP, value));
-    }
-
-    VTABLE void i_bitwise_shl_int(INTVAL value) {
-        bitwise_left_shift_internal(INTERP, SELF, SELF, value);
-    }
-
-/*
-
-=back
-
 =head2 String Methods
 
 =over 4
@@ -1063,7 +630,7 @@
         STRING * const s = Parrot_str_concat(INTERP, SELF.get_string(),
             VTABLE_get_string(INTERP, value), 0);
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_string_native(INTERP, dest, s);
         return dest;
@@ -1073,7 +640,7 @@
         STRING * const s = Parrot_str_concat(INTERP,
             SELF.get_string(), value, 0);
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_string_native(INTERP, dest, s);
         return dest;
@@ -1112,7 +679,7 @@
         STRING * const s = SELF.get_string();
         const UINTVAL  n = (UINTVAL)VTABLE_get_integer(INTERP, value);
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_string_native(INTERP, dest,
             Parrot_str_repeat(INTERP, s, n));
@@ -1123,7 +690,7 @@
         STRING * const s = SELF.get_string();
         const UINTVAL  n = value;
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_string_native(INTERP, dest,
             Parrot_str_repeat(INTERP, s, n));
@@ -1295,7 +862,7 @@
         else if (value_bool && ! my_bool)
             return value;
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         VTABLE_set_bool(INTERP, dest, 0);
         return dest;
     }
@@ -1316,7 +883,7 @@
     VTABLE PMC *logical_not(PMC *dest) {
         const INTVAL a = ! SELF.get_bool();
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_bool(INTERP, dest, a);
         return dest;
@@ -1367,7 +934,7 @@
 */
     VTABLE PMC *share_ro() {
         PMC         *ret  = pt_shared_fixup(INTERP, SELF);
-        PMC * const _true = pmc_new(INTERP, enum_class_Integer);
+        PMC * const _true = Parrot_pmc_new(INTERP, enum_class_Integer);
 
         VTABLE_set_integer_native(INTERP, _true, 1);
 

Modified: branches/ops_pct/src/pmc/scheduler.pmc
==============================================================================
--- branches/ops_pct/src/pmc/scheduler.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/scheduler.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -57,11 +57,11 @@
         /* Set up the core struct. */
         core_struct->id          = 0;
         core_struct->max_tid     = 0;
-        core_struct->task_list   = pmc_new(interp, enum_class_Hash);
-        core_struct->task_index  = pmc_new(interp, enum_class_ResizableIntegerArray);
-        core_struct->wait_index  = pmc_new(interp, enum_class_ResizablePMCArray);
-        core_struct->handlers    = pmc_new(interp, enum_class_ResizablePMCArray);
-        core_struct->messages    = pmc_new(interp, enum_class_ResizablePMCArray);
+        core_struct->task_list   = Parrot_pmc_new(interp, enum_class_Hash);
+        core_struct->task_index  = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
+        core_struct->wait_index  = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        core_struct->handlers    = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        core_struct->messages    = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
         core_struct->interp      = INTERP;
         MUTEX_INIT(core_struct->msg_lock);
     }

Modified: branches/ops_pct/src/pmc/sockaddr.pmc
==============================================================================
--- branches/ops_pct/src/pmc/sockaddr.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/sockaddr.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -46,7 +46,8 @@
         Parrot_Sockaddr_attributes * const pdata_struct =
             (Parrot_Sockaddr_attributes *) PMC_data(SELF);
 
-        pdata_struct->pointer = mem_allocate_zeroed_typed(struct sockaddr_in);
+        pdata_struct->pointer = mem_gc_allocate_zeroed_typed(INTERP,
+                struct sockaddr_in);
         PObj_custom_destroy_SET(SELF);
     }
 
@@ -64,7 +65,7 @@
         Parrot_Sockaddr_attributes * const data = PARROT_SOCKADDR(SELF);
 
         if (data) {
-            mem_sys_free(data->pointer);
+            mem_gc_free(INTERP, data->pointer);
             data->pointer = NULL;
         }
     }
@@ -80,7 +81,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         memcpy(PARROT_SOCKADDR(dest)->pointer, PARROT_SOCKADDR(SELF)->pointer,
                 sizeof (struct sockaddr_in));
         return dest;

Modified: branches/ops_pct/src/pmc/socket.pmc
==============================================================================
--- branches/ops_pct/src/pmc/socket.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/socket.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -20,7 +20,7 @@
 
 #include "../src/io/io_private.h"
 
-pmclass Socket extends Handle auto_attrs {
+pmclass Socket extends Handle provides socket auto_attrs {
     ATTR PMC *local;           /* Local addr                   */
     ATTR PMC *remote;          /* Remote addr                  */
 
@@ -67,21 +67,6 @@
 
 /*
 
-=item C<INTVAL does(STRING * role)>
-
-=cut
-
-*/
-
-    VTABLE INTVAL does(STRING * role) {
-        Parrot_Socket_attributes * const attrs = PARROT_SOCKET(SELF);
-        if (Parrot_str_equal(interp, role, CONST_STRING(interp, "socket")))
-            return 1;
-        return SUPER(role);
-    }
-
-/*
-
 =item C<void mark()>
 
 Mark active socket handle data as live.

Modified: branches/ops_pct/src/pmc/string.pmc
==============================================================================
--- branches/ops_pct/src/pmc/string.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/string.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2003-2009, Parrot Foundation.
+Copyright (C) 2003-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -71,8 +71,8 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
-        VTABLE_set_string_native(INTERP, dest, Parrot_str_copy(INTERP, SELF.get_string()));
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
+        VTABLE_set_string_native(INTERP, dest, SELF.get_string());
         return dest;
     }
 
@@ -87,8 +87,9 @@
 */
 
     VTABLE INTVAL get_integer() {
-        STRING * const s = SELF.get_string();
-        return Parrot_str_to_int(INTERP, s);
+        STRING *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_to_int(INTERP, str_val);
     }
 
 /*
@@ -102,25 +103,9 @@
 */
 
     VTABLE FLOATVAL get_number() {
-        STRING * const s = SELF.get_string();
-        return Parrot_str_to_num(INTERP, s);
-    }
-
-/*
-
-=item C<PMC *get_bignum()>
-
-Returns the big numbers representation of the string.
-
-=cut
-
-*/
-
-    VTABLE PMC *get_bignum() {
-        STRING * const s   = SELF.get_string();
-        PMC    * const ret = pmc_new(INTERP, enum_class_BigInt);
-        VTABLE_set_string_native(INTERP, ret, s);
-        return ret;
+        STRING *str_val;
+        GET_ATTR_str_val(interp, SELF, str_val);
+        return Parrot_str_to_num(INTERP, str_val);
     }
 
 /*
@@ -136,6 +121,7 @@
     VTABLE STRING *get_string() {
         STRING *str_val;
         GET_ATTR_str_val(INTERP, SELF, str_val);
+
         return str_val ? Parrot_str_copy(INTERP, str_val) : NULL;
     }
 
@@ -150,8 +136,9 @@
 */
 
     VTABLE INTVAL get_bool() {
-        STRING * const s = SELF.get_string();
-        return Parrot_str_boolean(INTERP, s);
+        STRING *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_boolean(INTERP, str_val);
     }
 
 /*
@@ -200,9 +187,8 @@
 */
 
     VTABLE void set_string_native(STRING *value) {
-        /* in lieu of a STRINGNULL, promote any NULL STRINGs to empty ones */
         if (!value)
-            value = Parrot_str_new(INTERP, NULL, 0);
+            value = STRINGNULL;
 
         /* Only allow constant PMCs to embed constant strings */
         if (PObj_constant_TEST(SELF) && !PObj_constant_TEST(value)) {
@@ -227,9 +213,10 @@
 */
 
     VTABLE void assign_string_native(STRING *value) {
-        if (!STRING_IS_NULL(value))
+        if (!STRING_IS_NULL(value)) {
             SET_ATTR_str_val(INTERP, SELF,
-                    Parrot_str_set(INTERP, SELF.get_string(), value));
+                Parrot_str_set(INTERP, SELF.get_string(), value));
+        }
         else
             SET_ATTR_str_val(INTERP, SELF, NULL);
     }
@@ -250,172 +237,6 @@
 
 /*
 
-=item C<PMC *bitwise_ors(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_ors_str(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_ands(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_ands_str(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_xors(PMC *value, PMC *dest)>
-
-=item C<PMC *bitwise_xors_str(PMC *value, PMC *dest)>
-
-=item C<void bitwise_nots(PMC *value)>
-
-These functions perform bitwise operations on entire
-strings, and place the result in C<dest>.
-
-=item C<void i_bitwise_ors(PMC *value)>
-
-=item C<void i_bitwise_ors_str(PMC *value)>
-
-=item C<void i_bitwise_ands(PMC *value)>
-
-=item C<void i_bitwise_ands_str(PMC *value)>
-
-=item C<void i_bitwise_xors(PMC *value)>
-
-=item C<void i_bitwise_xors_str(PMC *value)>
-
-=item C<void i_bitwise_nots(PMC *value)>
-
-These functions perform bitwise operations on entire
-strings in place.
-
-=cut
-
-*/
-    VTABLE PMC *bitwise_ors(PMC *value, PMC *dest) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
-        STRING * const v = VTABLE_get_string(INTERP, value);
-
-        if (!dest)
-            dest = pmc_new(INTERP, SELF->vtable->base_type);
-
-        VTABLE_set_string_native(INTERP, dest,
-            Parrot_str_bitwise_or(INTERP, s, v, NULL));
-
-        return dest;
-    }
-
-    VTABLE PMC *bitwise_ors_str(STRING *value, PMC *dest) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
-
-        if (!dest)
-            dest = pmc_new(INTERP, SELF->vtable->base_type);
-
-        VTABLE_set_string_native(INTERP, dest,
-            Parrot_str_bitwise_or(INTERP, s, value, NULL));
-
-        return dest;
-    }
-
-    VTABLE void i_bitwise_ors(PMC *value) {
-        STRING        *s = VTABLE_get_string(INTERP, SELF);
-        STRING * const v = VTABLE_get_string(INTERP, value);
-        SELF.set_string_native(Parrot_str_bitwise_or(INTERP, s, v, &s));
-    }
-
-    VTABLE void i_bitwise_ors_str(STRING *value) {
-        STRING *s = VTABLE_get_string(INTERP, SELF);
-        SELF.set_string_native(Parrot_str_bitwise_or(INTERP, s, value, &s));
-    }
-
-    VTABLE PMC *bitwise_ands(PMC *value, PMC *dest) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
-        STRING * const v = VTABLE_get_string(INTERP, value);
-
-        if (!dest)
-            dest = pmc_new(INTERP, SELF->vtable->base_type);
-
-        VTABLE_set_string_native(INTERP, dest,
-            Parrot_str_bitwise_and(INTERP, s, v, NULL));
-
-        return dest;
-    }
-
-    VTABLE PMC *bitwise_ands_str(STRING *value, PMC *dest) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
-
-        if (!dest)
-            dest = pmc_new(INTERP, SELF->vtable->base_type);
-
-        VTABLE_set_string_native(INTERP, dest,
-            Parrot_str_bitwise_and(INTERP, s, value, NULL));
-
-        return dest;
-    }
-
-
-    VTABLE void i_bitwise_ands(PMC *value) {
-        STRING        *s = VTABLE_get_string(INTERP, SELF);
-        STRING * const v = VTABLE_get_string(INTERP, value);
-        SELF.set_string_native(Parrot_str_bitwise_and(INTERP, s, v, &s));
-    }
-
-    VTABLE void i_bitwise_ands_str(STRING *value) {
-        STRING *s = VTABLE_get_string(INTERP, SELF);
-        SELF.set_string_native(Parrot_str_bitwise_and(INTERP, s, value, &s));
-    }
-
-    VTABLE PMC *bitwise_xors(PMC *value, PMC *dest) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
-        STRING * const v = VTABLE_get_string(INTERP, value);
-
-        if (!dest)
-            dest = pmc_new(INTERP, SELF->vtable->base_type);
-
-        VTABLE_set_string_native(INTERP, dest,
-            Parrot_str_bitwise_xor(INTERP, s, v, NULL));
-
-        return dest;
-    }
-
-    VTABLE PMC *bitwise_xors_str(STRING *value, PMC *dest) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
-
-        if (!dest)
-            dest = pmc_new(INTERP, SELF->vtable->base_type);
-
-        VTABLE_set_string_native(INTERP, dest,
-            Parrot_str_bitwise_xor(INTERP, s, value, NULL));
-
-        return dest;
-    }
-
-    VTABLE void i_bitwise_xors(PMC *value) {
-        STRING        *s = VTABLE_get_string(INTERP, SELF);
-        STRING * const v = VTABLE_get_string(INTERP, value);
-        SELF.set_string_native(Parrot_str_bitwise_xor(INTERP, s, v, &s));
-    }
-
-    VTABLE void i_bitwise_xors_str(STRING *value) {
-        STRING *s = VTABLE_get_string(INTERP, SELF);
-        SELF.set_string_native(Parrot_str_bitwise_xor(INTERP, s, value, &s));
-    }
-
-    VTABLE PMC *bitwise_nots(PMC *dest) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
-
-        if (!dest)
-            dest = pmc_new(INTERP, SELF->vtable->base_type);
-
-        VTABLE_set_string_native(INTERP, dest,
-            Parrot_str_bitwise_not(INTERP, s, NULL));
-
-        return dest;
-    }
-
-    VTABLE void i_bitwise_nots() {
-        STRING *s = VTABLE_get_string(INTERP, SELF);
-        VTABLE_set_string_native(
-            INTERP, SELF, Parrot_str_bitwise_not(INTERP, s, &s));
-    }
-
-/*
-
 =item C<INTVAL is_equal(PMC *value)>
 
 Compares the string with C<value>; returns true if
@@ -425,9 +246,10 @@
 
 */
     VTABLE INTVAL is_equal(PMC *value) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
+        STRING *str_val;
         STRING * const v = VTABLE_get_string(INTERP, value);
-        return (INTVAL)(Parrot_str_equal(INTERP, s, v));
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return (INTVAL)(Parrot_str_equal(INTERP, str_val, v));
     }
 
     MULTI INTVAL is_equal(PMC *value) {
@@ -446,8 +268,13 @@
 */
 
     VTABLE INTVAL is_equal_num(PMC *value) {
-        const FLOATVAL sf = Parrot_str_to_num(INTERP, VTABLE_get_string(INTERP, SELF));
+        STRING        *str_val;
+        FLOATVAL       sf;
         const FLOATVAL vf = VTABLE_get_number(INTERP, value);
+
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        sf = Parrot_str_to_num(INTERP, str_val);
+
         return (INTVAL)(sf == vf);
     }
 
@@ -462,9 +289,10 @@
 */
 
     VTABLE INTVAL is_equal_string(PMC *value) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
+        STRING *str_val;
         STRING * const v = VTABLE_get_string(INTERP, value);
-        return Parrot_str_equal(INTERP, s, v);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_equal(INTERP, str_val, v);
     }
 
 /*
@@ -479,9 +307,10 @@
 
 */
     VTABLE INTVAL cmp(PMC *value) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
+        STRING *str_val;
         STRING * const v = VTABLE_get_string(INTERP, value);
-        return Parrot_str_compare(INTERP, s, v);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_compare(INTERP, str_val, v);
     }
 
 /*
@@ -496,8 +325,11 @@
 
 */
     VTABLE INTVAL cmp_num(PMC *value) {
-        const FLOATVAL sf = Parrot_str_to_num(INTERP, VTABLE_get_string(INTERP, SELF));
+        STRING        *str_val;
+        FLOATVAL       sf;
         const FLOATVAL vf = VTABLE_get_number(INTERP, value);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        sf = Parrot_str_to_num(INTERP, str_val);
 
         if (sf < vf)
             return (INTVAL)(-1);
@@ -520,9 +352,10 @@
 
 */
     VTABLE INTVAL cmp_string(PMC *value) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
+        STRING        *str_val;
         STRING * const v = VTABLE_get_string(INTERP, value);
-        return Parrot_str_compare(INTERP, s, v);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_compare(INTERP, str_val, v);
     }
 
 /*
@@ -536,8 +369,9 @@
 
 */
     VTABLE void substr(INTVAL offset, INTVAL length, PMC *dest) {
-        STRING * const s  = VTABLE_get_string(INTERP, SELF);
-        STRING * const s2 = Parrot_str_substr(INTERP, s, offset, length, NULL, 0);
+        STRING *str_val, *s2;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        s2 = Parrot_str_substr(INTERP, str_val, offset, length, NULL, 0);
         VTABLE_set_string_native(INTERP, dest, s2);
     }
 
@@ -552,8 +386,9 @@
 
 */
     VTABLE STRING *substr_str(INTVAL offset, INTVAL length) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
-        return Parrot_str_substr(INTERP, s, offset, length, NULL, 0);
+        STRING *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_substr(INTERP, str_val, offset, length, NULL, 0);
     }
 
 /*
@@ -568,9 +403,14 @@
 */
 
     VTABLE INTVAL exists_keyed(PMC *key) {
-        const INTVAL n = Parrot_str_byte_length(INTERP, VTABLE_get_string(INTERP, SELF));
+        STRING      *str_val;
+        INTVAL       n;
         const INTVAL k = VTABLE_get_integer(INTERP, key);
-        return (INTVAL)((k>=0 && k<=n) || (k<0 && -k<=n));
+
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        n = Parrot_str_byte_length(INTERP, str_val);
+
+        return (INTVAL)((k >= 0 && k <= n) || (k < 0 && -k <= n));
     }
 
 /*
@@ -601,8 +441,9 @@
     }
 
     VTABLE STRING *get_string_keyed_int(INTVAL pos) {
-        STRING * const s = SELF.get_string();
-        return Parrot_str_substr(INTERP, s, pos, 1, NULL, 0);
+        STRING      *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_substr(INTERP, str_val, pos, 1, NULL, 0);
     }
 
     VTABLE INTVAL get_integer_keyed(PMC *key) {
@@ -610,8 +451,9 @@
     }
 
     VTABLE INTVAL get_integer_keyed_int(INTVAL pos) {
-        STRING * const s = SELF.get_string();
-        return string_ord(INTERP, s, pos);
+        STRING      *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return string_ord(INTERP, str_val, pos);
     }
 
     VTABLE PMC *get_pmc_keyed(PMC *key) {
@@ -619,7 +461,7 @@
     }
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL pos) {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_string_native(INTERP, dest, SELF.get_string_keyed_int(pos));
         return dest;
     }
@@ -629,10 +471,10 @@
     }
 
     VTABLE void set_string_keyed_int(INTVAL pos, STRING * const value) {
-        STRING * const s   = SELF.get_string();
-        const INTVAL   len = Parrot_str_byte_length(INTERP, value);
-        Parrot_str_replace(INTERP, s, pos, len, value, NULL);
-        VTABLE_set_string_native(INTERP, SELF, s);
+        STRING      *str_val;
+        const INTVAL len = Parrot_str_byte_length(INTERP, value);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        Parrot_str_replace(INTERP, str_val, pos, len, value, &str_val);
     }
 
     VTABLE void set_integer_keyed(PMC *key, INTVAL value) {
@@ -640,10 +482,10 @@
     }
 
     VTABLE void set_integer_keyed_int(INTVAL pos, INTVAL value) {
-        STRING * const s = SELF.get_string();
+        STRING      *str_val;
         STRING * const c = string_chr(INTERP, (UINTVAL) value);
-        Parrot_str_replace(INTERP, s, pos, 1, c, NULL);
-        VTABLE_set_string_native(INTERP, SELF, s);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        Parrot_str_replace(INTERP, str_val, pos, 1, c, &str_val);
     }
 
     VTABLE void set_pmc_keyed(PMC *key, PMC *value) {
@@ -694,7 +536,7 @@
 */
 
     METHOD to_int(INTVAL base) {
-        PMC *result = pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp,
+        PMC *result = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp,
                         enum_class_Integer));
 
         /* TODO verify encoding */
@@ -763,11 +605,13 @@
 */
 
     VTABLE INTVAL elements() {
-        return Parrot_str_byte_length(INTERP, VTABLE_get_string(INTERP, SELF));
+        STRING *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_byte_length(INTERP, str_val);
     }
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_StringIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_StringIterator, SELF);
     }
 
 /*
@@ -786,8 +630,10 @@
 
 */
     VTABLE void freeze(PMC *info) {
+        STRING *str_val;
         SUPER(info);
-        VTABLE_push_string(INTERP, info, VTABLE_get_string(INTERP, SELF));
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        VTABLE_push_string(INTERP, info, str_val);
     }
 
 /*
@@ -820,8 +666,11 @@
 */
 
     METHOD lower() {
-        STRING * const s   = Parrot_str_downcase(INTERP,
-            VTABLE_get_string(INTERP, SELF));
+        STRING *str_val;
+        STRING *s;
+
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        s = Parrot_str_downcase(INTERP, str_val);
 
         RETURN(STRING *s);
     }

Modified: branches/ops_pct/src/pmc/stringhandle.pmc
==============================================================================
--- branches/ops_pct/src/pmc/stringhandle.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/stringhandle.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -94,7 +94,7 @@
 
     VTABLE PMC *clone() {
         Parrot_StringHandle_attributes * const old_struct  = PARROT_STRINGHANDLE(SELF);
-        PMC * const copy = pmc_new(INTERP, enum_class_StringHandle);
+        PMC * const copy = Parrot_pmc_new(INTERP, enum_class_StringHandle);
         Parrot_StringHandle_attributes * const data_struct = PARROT_STRINGHANDLE(copy);
 
         if (old_struct->stringhandle != NULL)

Modified: branches/ops_pct/src/pmc/stringiterator.pmc
==============================================================================
--- branches/ops_pct/src/pmc/stringiterator.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/stringiterator.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -73,7 +73,7 @@
         Parrot_StringIterator_attributes * const attrs =
                 PARROT_STRINGITERATOR(SELF);
         PMC                              * const clone =
-                pmc_new_init(INTERP, enum_class_StringIterator, attrs->string);
+                Parrot_pmc_new_init(INTERP, enum_class_StringIterator, attrs->string);
         Parrot_StringIterator_attributes * const clone_attrs =
                 PARROT_STRINGITERATOR(clone);
 
@@ -184,7 +184,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
                 "StopIteration");
 
-        ret = pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp, enum_class_String));
+        ret = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp, enum_class_String));
         VTABLE_set_string_native(INTERP, ret,
                 VTABLE_get_string_keyed_int(INTERP, attrs->string, attrs->pos++));
         return ret;
@@ -248,7 +248,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
                 "StopIteration");
 
-        ret = pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp, enum_class_String));
+        ret = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp, enum_class_String));
         VTABLE_set_string_native(INTERP, ret,
                 VTABLE_get_string_keyed_int(INTERP, attrs->string, --attrs->pos));
         return ret;

Modified: branches/ops_pct/src/pmc/sub.pmc
==============================================================================
--- branches/ops_pct/src/pmc/sub.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/sub.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -184,7 +184,8 @@
         if (VTABLE_exists_keyed_str(INTERP, init, field)) {
             PMC   *tmp = VTABLE_get_pmc_keyed_str(INTERP, init, field);
             /* Allocate structure to store argument information in. */
-            attrs->arg_info = mem_allocate_zeroed_typed(Parrot_sub_arginfo);
+            attrs->arg_info = mem_gc_allocate_zeroed_typed(INTERP,
+                    Parrot_sub_arginfo);
             /*
             Hash.get_integer_keyed_str return 0 if key doesn't exists.
             So, don't check existence of key, just use it.
@@ -222,7 +223,7 @@
 
         if (sub) {
             if (sub->arg_info)
-                mem_sys_free(sub->arg_info);
+                mem_gc_free(INTERP, sub->arg_info);
         }
     }
 
@@ -388,7 +389,7 @@
          * create new context, place it in interpreter */
         context = Parrot_pcc_get_signature(INTERP, caller_ctx);
         if (PMC_IS_NULL(context))
-            context = pmc_new(INTERP, enum_class_CallContext);
+            context = Parrot_pmc_new(INTERP, enum_class_CallContext);
         CURRENT_CONTEXT(INTERP) = context;
         Parrot_pcc_set_caller_ctx(INTERP, context, caller_ctx);
         Parrot_pcc_allocate_registers(INTERP, context, sub->n_regs_used);
@@ -425,7 +426,7 @@
          *      and factor out common code with coroutine pmc
          */
         if (!PMC_IS_NULL(sub->lex_info)) {
-            Parrot_pcc_set_lex_pad(interp, context, pmc_new_init(INTERP,
+            Parrot_pcc_set_lex_pad(interp, context, Parrot_pmc_new_init(INTERP,
                     Parrot_get_ctx_HLL_type(interp, enum_class_LexPad),
                     sub->lex_info));
             VTABLE_set_pointer(INTERP, Parrot_pcc_get_lex_pad(interp, context), context);
@@ -458,7 +459,7 @@
                     Parrot_pcc_set_sub(interp, dummy, outer_pmc);
 
                     if (!PMC_IS_NULL(outer_sub->lex_info)) {
-                        Parrot_pcc_set_lex_pad(interp, dummy, pmc_new_init(INTERP,
+                        Parrot_pcc_set_lex_pad(interp, dummy, Parrot_pmc_new_init(INTERP,
                                Parrot_get_ctx_HLL_type(interp, enum_class_LexPad),
                                outer_sub->lex_info));
                         VTABLE_set_pointer(INTERP, Parrot_pcc_get_lex_pad(interp, dummy), dummy);
@@ -506,7 +507,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC        * const ret = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC        * const ret = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         Parrot_Sub_attributes *dest_sub;
         Parrot_Sub_attributes *sub;
 
@@ -761,7 +762,7 @@
     {
         /* Create a hash, then use inspect_str to get all of the data to
          * fill it up with. */
-        PMC    * const metadata           = pmc_new(interp, enum_class_Hash);
+        PMC    * const metadata           = Parrot_pmc_new(interp, enum_class_Hash);
         STRING * const pos_required_str   = CONST_STRING(interp, "pos_required");
         STRING * const pos_optional_str   = CONST_STRING(interp, "pos_optional");
         STRING * const named_required_str = CONST_STRING(interp, "named_required");
@@ -843,7 +844,8 @@
             const opcode_t *pc = sub->seg->base.data + sub->start_offs;
 
             /* Allocate structure to store argument information in. */
-            sub->arg_info = mem_allocate_zeroed_typed(Parrot_sub_arginfo);
+            sub->arg_info = mem_gc_allocate_zeroed_typed(INTERP,
+                    Parrot_sub_arginfo);
 
             /* If the first instruction is a get_params... */
             if (*pc == PARROT_OP_get_params_pc) {
@@ -908,7 +910,7 @@
                 "Unknown introspection value '%S'", what);
         }
 
-        retval = pmc_new(INTERP, enum_class_Integer);
+        retval = Parrot_pmc_new(INTERP, enum_class_Integer);
         VTABLE_set_integer_native(INTERP, retval, count_found);
         return retval;
     }
@@ -1064,7 +1066,7 @@
         if (PMC_IS_NULL(sub->lex_info)) {
             const INTVAL lex_info_id = Parrot_get_ctx_HLL_type(interp,
                                            enum_class_LexInfo);
-            sub->lex_info = pmc_new_init(interp, lex_info_id, SELF);
+            sub->lex_info = Parrot_pmc_new_init(interp, lex_info_id, SELF);
         }
 
         /* If we've got a context around for the outer sub, set it as the

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

Modified: branches/ops_pct/src/pmc/undef.pmc
==============================================================================
--- branches/ops_pct/src/pmc/undef.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/undef.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -41,7 +41,7 @@
 
     VTABLE void set_pmc(PMC *other) {
         if (!PObj_is_object_TEST(other)) {
-            pmc_reuse(INTERP, SELF, other->vtable->base_type, 0);
+            Parrot_pmc_reuse(INTERP, SELF, other->vtable->base_type, 0);
             VTABLE_set_pmc(INTERP, SELF, other);
         }
         else {
@@ -127,7 +127,7 @@
 */
 
     VTABLE void set_integer_native(INTVAL value) {
-        pmc_reuse(INTERP, SELF, enum_class_Integer, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Integer, 0);
         VTABLE_set_integer_native(INTERP, SELF, value);
     }
 
@@ -156,7 +156,7 @@
 */
 
     VTABLE void set_number_native(FLOATVAL value) {
-        pmc_reuse(INTERP, SELF, enum_class_Float, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Float, 0);
         VTABLE_set_number_native(INTERP, SELF, value);
     }
 
@@ -188,7 +188,7 @@
 */
 
     VTABLE void set_string_native(STRING *value) {
-        pmc_reuse(interp, SELF, enum_class_String, 0);
+        Parrot_pmc_reuse(interp, SELF, enum_class_String, 0);
         VTABLE_set_string_native(INTERP, SELF, value);
     }
 
@@ -217,7 +217,7 @@
 */
 
     VTABLE PMC *logical_not(PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         VTABLE_set_bool(INTERP, dest, 1);
         return dest;
     }
@@ -264,7 +264,7 @@
 */
 
     VTABLE PMC *clone() {
-        return pmc_new(INTERP, SELF->vtable->base_type);
+        return Parrot_pmc_new(INTERP, SELF->vtable->base_type);
     }
 
 /*

Modified: branches/ops_pct/src/pmc/unmanagedstruct.pmc
==============================================================================
--- branches/ops_pct/src/pmc/unmanagedstruct.pmc	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc/unmanagedstruct.pmc	Sun Mar  7 19:33:20 2010	(r44743)
@@ -386,7 +386,7 @@
             PMC *sig = VTABLE_getprop(interp, ptr, signature_str);
             if (VTABLE_defined(interp, sig)) {
                 STRING *sig_str = VTABLE_get_string(interp, sig);
-                ret             = pmc_new(interp, enum_class_NCI);
+                ret             = Parrot_pmc_new(interp, enum_class_NCI);
                 VTABLE_set_pointer_keyed_str(interp, ret, sig_str,
                             *(PMC **)p);
             }
@@ -703,7 +703,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC *clone = pmc_new(INTERP, enum_class_UnManagedStruct);
+        PMC *clone = Parrot_pmc_new(INTERP, enum_class_UnManagedStruct);
         mem_sys_memmove(PMC_data(clone), PMC_data(SELF),
                 sizeof (Parrot_UnManagedStruct_attributes));
         PARROT_UNMANAGEDSTRUCT(clone)->init =

Modified: branches/ops_pct/src/pmc_freeze.c
==============================================================================
--- branches/ops_pct/src/pmc_freeze.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/pmc_freeze.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -31,6 +31,8 @@
 
 #define THAW_BLOCK_GC_SIZE 100000
 
+/* HEADERIZER HFILE: include/parrot/pmc_freeze.h */
+
 /*
 
 =head2 Public Interface
@@ -52,11 +54,39 @@
 Parrot_freeze(PARROT_INTERP, ARGIN(PMC *pmc))
 {
     ASSERT_ARGS(Parrot_freeze)
-    PMC *image = pmc_new(interp, enum_class_ImageIO);
+    PMC *image = Parrot_pmc_new(interp, enum_class_ImageIO);
     VTABLE_set_pmc(interp, image, pmc);
     return VTABLE_get_string(interp, image);
 }
 
+/*
+
+=item C<UINTVAL Parrot_freeze_size(PARROT_INTERP, PMC *pmc)>
+
+Get the size of an image to be frozen without allocating a large buffer.
+
+Used in C<Packfile_Constant_pack_size>.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+UINTVAL
+Parrot_freeze_size(PARROT_INTERP, ARGIN(PMC *pmc))
+{
+    ASSERT_ARGS(Parrot_freeze_size)
+    UINTVAL int_result;
+    PMC    *pmc_result;
+    PMC    *visitor = Parrot_pmc_new(interp, enum_class_ImageIOSize);
+    VTABLE_set_pmc(interp, visitor, pmc);
+    pmc_result = VTABLE_get_pmc(interp, visitor);
+    int_result = VTABLE_get_integer(interp, pmc_result);
+    return int_result;
+}
+
 
 /*
 
@@ -82,7 +112,7 @@
 {
     ASSERT_ARGS(Parrot_thaw)
 
-    PMC        *info     = pmc_new(interp, enum_class_ImageIO);
+    PMC        *info     = Parrot_pmc_new(interp, enum_class_ImageIO);
     int         gc_block = 0;
     PMC        *result;
 
@@ -103,8 +133,8 @@
         gc_block = 1;
     }
 
-    VTABLE_set_pointer(interp, info, &result);
     VTABLE_set_string_native(interp, info, image);
+    result = VTABLE_get_pmc(interp, info);
 
     if (gc_block) {
         Parrot_unblock_GC_mark(interp);
@@ -158,6 +188,72 @@
     return VTABLE_clone(interp, pmc);
 }
 
+/*
+
+=item C<void Parrot_visit_loop_visit(PARROT_INTERP, PMC *info)>
+
+Iterate a visitor PMC visiting each encountered target PMC.
+
+=cut
+
+*/
+
+void
+Parrot_visit_loop_visit(PARROT_INTERP, ARGIN(PMC *info)) {
+    ASSERT_ARGS(Parrot_visit_loop_visit)
+
+    INTVAL      i;
+    PMC * const todo    = VTABLE_get_iter(interp, info);
+
+    /* can't cache upper limit, visit may append items */
+    for (i = 0; i < VTABLE_elements(interp, todo); i++) {
+        PMC *current = VTABLE_get_pmc_keyed_int(interp, todo, i);
+        if (!current)
+            Parrot_ex_throw_from_c_args(interp, NULL, 1,
+                    "NULL current PMC in visit_loop_todo_list");
+
+        PARROT_ASSERT(current->vtable);
+
+        VTABLE_visit(interp, current, info);
+
+        VISIT_PMC(interp, info, PMC_metadata(current));
+    }
+}
+
+/*
+
+=item C<void Parrot_visit_loop_thawfinish(PARROT_INTERP, PMC *info)>
+
+Iterate a visitor PMC thawfinishing each encountered target PMC.
+
+=cut
+
+*/
+
+void
+Parrot_visit_loop_thawfinish(PARROT_INTERP, ARGIN(PMC *info)) {
+    ASSERT_ARGS(Parrot_visit_loop_thawfinish)
+
+    /* call thawfinish for each processed PMC */
+    /*
+     * Thaw in reverse order. We have to fully thaw younger PMCs
+     * before use them in older.
+     *
+     * XXX There are no younger or older pmcs in a directed graph
+     *     that allows cycles. Any code that requires a specific
+     *      order here is likely broken.
+     */
+
+    PMC * const todo    = VTABLE_get_iter(interp, info);
+    const INTVAL n = VTABLE_elements(interp, todo);
+    int          i;
+
+    for (i = n-1; i >= 0; --i) {
+        PMC *current = VTABLE_get_pmc_keyed_int(interp, todo, i);
+        if (!PMC_IS_NULL(current))
+            VTABLE_thawfinish(interp, current, info);
+    }
+}
 
 /*
 

Modified: branches/ops_pct/src/runcore/cores.c
==============================================================================
--- branches/ops_pct/src/runcore/cores.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/runcore/cores.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -405,7 +405,7 @@
 {
     ASSERT_ARGS(Parrot_runcore_slow_init)
 
-    Parrot_runcore_t *coredata = mem_allocate_typed(Parrot_runcore_t);
+    Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
     coredata->name             = CONST_STRING(interp, "slow");
     coredata->id               = PARROT_SLOW_CORE;
     coredata->opinit           = PARROT_CORE_OPLIB_INIT;
@@ -435,7 +435,7 @@
 {
     ASSERT_ARGS(Parrot_runcore_fast_init)
 
-    Parrot_runcore_t *coredata = mem_allocate_typed(Parrot_runcore_t);
+    Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
     coredata->name             = CONST_STRING(interp, "fast");
     coredata->id               = PARROT_FAST_CORE;
     coredata->opinit           = PARROT_CORE_OPLIB_INIT;
@@ -465,7 +465,7 @@
 {
     ASSERT_ARGS(Parrot_runcore_switch_init)
 
-    Parrot_runcore_t *coredata = mem_allocate_typed(Parrot_runcore_t);
+    Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
     coredata->name             = CONST_STRING(interp, "switch");
     coredata->id               = PARROT_SWITCH_CORE;
     coredata->opinit           = PARROT_CORE_SWITCH_OPLIB_INIT;
@@ -495,7 +495,7 @@
 {
     ASSERT_ARGS(Parrot_runcore_exec_init)
 
-    Parrot_runcore_t *coredata = mem_allocate_typed(Parrot_runcore_t);
+    Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
     coredata->name             = CONST_STRING(interp, "exec");
     coredata->id               = PARROT_EXEC_CORE;
     coredata->opinit           = PARROT_CORE_OPLIB_INIT;
@@ -523,7 +523,7 @@
 {
     ASSERT_ARGS(Parrot_runcore_gc_debug_init)
 
-    Parrot_runcore_t *coredata = mem_allocate_typed(Parrot_runcore_t);
+    Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
     coredata->name             = CONST_STRING(interp, "gc_debug");
     coredata->id               = PARROT_GC_DEBUG_CORE;
     coredata->opinit           = PARROT_CORE_OPLIB_INIT;
@@ -553,7 +553,7 @@
 {
     ASSERT_ARGS(Parrot_runcore_debugger_init)
 
-    Parrot_runcore_t *coredata = mem_allocate_typed(Parrot_runcore_t);
+    Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
     coredata->name             = CONST_STRING(interp, "debugger");
     coredata->id               = PARROT_DEBUGGER_CORE;
     coredata->opinit           = PARROT_CORE_OPLIB_INIT;
@@ -585,7 +585,7 @@
 {
     ASSERT_ARGS(Parrot_runcore_cgp_init)
 
-    Parrot_runcore_t *coredata = mem_allocate_typed(Parrot_runcore_t);
+    Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
     coredata->name             = CONST_STRING(interp, "cgp");
     coredata->id               = PARROT_CGP_CORE;
     coredata->opinit           = PARROT_CORE_CGP_OPLIB_INIT;
@@ -618,7 +618,7 @@
 {
     ASSERT_ARGS(Parrot_runcore_cgoto_init)
 
-    Parrot_runcore_t *coredata = mem_allocate_typed(Parrot_runcore_t);
+    Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
     coredata->name             = CONST_STRING(interp, "cgoto");
     coredata->id               = PARROT_CGOTO_CORE;
     coredata->opinit           = PARROT_CORE_CG_OPLIB_INIT;
@@ -930,6 +930,7 @@
 
         Parrot_pcc_set_pc(interp, CURRENT_CONTEXT(interp), pc);
         DO_OP(pc, interp);
+        interp->pdb->cur_opcode = pc;
 
         if (interp->pdb->state & PDB_STOPPED) {
             Parrot_debugger_start(interp, pc);
@@ -999,16 +1000,8 @@
         const size_t N  = interp->code->base.size;
         size_t       i, n_pics;
 
-/* Parrot_memalign_if_possible in OpenBSD allocates 256 if you ask for 312
-   -- Need to verify this, it may have been a bug elsewhere. If it works now,
-   we can remove the mem_sys_allocate_zeroed line below. */
-
-#if 0
-        void **temp = (void **)mem_sys_allocate_zeroed(N * sizeof (void *));
-#else
         void **temp = (void **)Parrot_memalign_if_possible(256,
                 N * sizeof (void *));
-#endif
         /* calc and remember pred_offset */
         CONTEXT(interp)->pred_offset = pc - (opcode_t *)temp;
 
@@ -1057,10 +1050,10 @@
     ASSERT_ARGS(load_prederef)
     const oplib_init_f init_func = get_core_op_lib_init(interp, runcore);
 
-    int (*get_op)(const char * name, int full);
+    int (*get_op)(PARROT_INTERP, const char * name, int full);
 
     get_op          = interp->op_lib->op_code;
-    interp->op_lib  = init_func(1);
+    interp->op_lib  = init_func(interp, 1);
 
     /* preserve the get_op function */
     interp->op_lib->op_code = get_op;

Modified: branches/ops_pct/src/runcore/main.c
==============================================================================
--- branches/ops_pct/src/runcore/main.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/runcore/main.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -10,20 +10,6 @@
 
 The runcore API handles running the operations.
 
-The predereferenced code chunk is pre-initialized with the opcode
-function pointers, addresses, or opnumbers of the C<prederef__>
-opcode. This opcode then calls the C<do_prederef()> function, which then
-fills in the real function, address or op number.
-
-Because the C<prederef__> opcode returns the same C<pc_prederef> it was
-passed, the runops loop will re-execute the same location, which will
-then have the pointer to the real C<prederef> opfunc and C<prederef>
-args.
-
-Pointer arithmetic is used to determine the index into the bytecode
-corresponding to the currect opcode. The bytecode and prederef arrays
-have the same number of elements because there is a one-to-one mapping.
-
 =head2 Functions
 
 =over 4
@@ -55,7 +41,9 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-static void dynop_register_switch(size_t n_old, size_t n_new);
+static void dynop_register_switch(PARROT_INTERP, size_t n_old, size_t n_new)
+        __attribute__nonnull__(1);
+
 static void dynop_register_xx(PARROT_INTERP,
     size_t n_old,
     size_t n_new,
@@ -74,24 +62,14 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void prederef_args(
-    ARGMOD(void **pc_prederef),
-    PARROT_INTERP,
-    ARGIN(const opcode_t *pc),
-    ARGIN(const op_info_t *opinfo))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        FUNC_MODIFIES(*pc_prederef);
-
 static void stop_prederef(PARROT_INTERP)
         __attribute__nonnull__(1);
 
 static void turn_ev_check(PARROT_INTERP, int on)
         __attribute__nonnull__(1);
 
-#define ASSERT_ARGS_dynop_register_switch __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_dynop_register_switch __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_dynop_register_xx __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_get_dynamic_op_lib_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -99,11 +77,6 @@
 #define ASSERT_ARGS_notify_func_table __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(table))
-#define ASSERT_ARGS_prederef_args __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(pc_prederef) \
-    , PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(pc) \
-    , PARROT_ASSERT_ARG(opinfo))
 #define ASSERT_ARGS_stop_prederef __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_turn_ev_check __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -166,11 +139,12 @@
 Parrot_runcore_register(PARROT_INTERP, ARGIN(Parrot_runcore_t *coredata))
 {
     ASSERT_ARGS(Parrot_runcore_register)
-    size_t num_cores = ++interp->num_cores;
+    size_t i = interp->num_cores++;
 
-    mem_realloc_n_typed(interp->cores, num_cores, Parrot_runcore_t *);
+    interp->cores = mem_gc_realloc_n_typed_zeroed(interp, interp->cores,
+            interp->num_cores, i, Parrot_runcore_t *);
 
-    interp->cores[num_cores - 1] = coredata;
+    interp->cores[i] = coredata;
 
     return 1;
 }
@@ -213,195 +187,6 @@
 
 /*
 
-=item C<static void prederef_args(void **pc_prederef, PARROT_INTERP, const
-opcode_t *pc, const op_info_t *opinfo)>
-
-Called from C<do_prederef()> to deal with any arguments.
-
-C<pc_prederef> is the current opcode.
-
-=cut
-
-*/
-
-static void
-prederef_args(ARGMOD(void **pc_prederef), PARROT_INTERP,
-        ARGIN(const opcode_t *pc), ARGIN(const op_info_t *opinfo))
-{
-    ASSERT_ARGS(prederef_args)
-    const PackFile_ConstTable * const const_table = interp->code->const_table;
-
-    const int regs_n = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_NUM);
-    const int regs_i = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_INT);
-    const int regs_p = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_PMC);
-    const int regs_s = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_STR);
-
-    /* prederef var part too */
-    const int m = opinfo->op_count;
-    int       n = opinfo->op_count;
-    int       i;
-
-    ADD_OP_VAR_PART(interp, interp->code, pc, n);
-    for (i = 1; i < n; i++) {
-        const opcode_t arg = pc[i];
-        int type;
-        if (i >= m) {
-            PMC * const sig = (PMC*) pc_prederef[1];
-            type = VTABLE_get_integer_keyed_int(interp, sig, i - m);
-            type &= (PARROT_ARG_TYPE_MASK | PARROT_ARG_CONSTANT);
-        }
-        else
-            type = opinfo->types[i - 1];
-
-        switch (type) {
-
-          case PARROT_ARG_KI:
-          case PARROT_ARG_I:
-            if (arg < 0 || arg >= regs_i)
-                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INTERP_ERROR,
-                    "Illegal register number");
-
-            pc_prederef[i] = (void *)REG_OFFS_INT(arg);
-            break;
-
-          case PARROT_ARG_N:
-            if (arg < 0 || arg >= regs_n)
-                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INTERP_ERROR,
-                    "Illegal register number");
-
-            pc_prederef[i] = (void *)REG_OFFS_NUM(arg);
-            break;
-
-          case PARROT_ARG_K:
-          case PARROT_ARG_P:
-            if (arg < 0 || arg >= regs_p)
-                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INTERP_ERROR,
-                    "Illegal register number");
-
-            pc_prederef[i] = (void *)REG_OFFS_PMC(arg);
-            break;
-
-          case PARROT_ARG_S:
-            if (arg < 0 || arg >= regs_s)
-                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INTERP_ERROR,
-                    "Illegal register number");
-
-            pc_prederef[i] = (void *)REG_OFFS_STR(arg);
-            break;
-
-          case PARROT_ARG_KIC:
-          case PARROT_ARG_IC:
-            pc_prederef[i] = (void *)pc[i];
-            break;
-
-          case PARROT_ARG_NC:
-            if (arg < 0 || arg >= const_table->const_count)
-                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INTERP_ERROR,
-                    "Illegal constant number");
-
-            pc_prederef[i] = (void *)&const_table->constants[arg]->u.number;
-            break;
-
-          case PARROT_ARG_SC:
-            if (arg < 0 || arg >= const_table->const_count)
-                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INTERP_ERROR,
-                    "Illegal constant number");
-
-            pc_prederef[i] = (void *)const_table->constants[arg]->u.string;
-            break;
-
-          case PARROT_ARG_PC:
-          case PARROT_ARG_KC:
-            if (arg < 0 || arg >= const_table->const_count)
-                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INTERP_ERROR,
-                    "Illegal constant number");
-
-            pc_prederef[i] = (void *)const_table->constants[arg]->u.key;
-            break;
-          default:
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ARG_OP_NOT_HANDLED,
-                "Unhandled argtype 0x%x\n", type);
-            break;
-        }
-    }
-}
-
-
-/*
-
-=item C<void do_prederef(void **pc_prederef, PARROT_INTERP, Parrot_runcore_t
-*runcore)>
-
-This is called from within the run cores to predereference the current
-opcode.
-
-C<pc_prederef> is the current opcode, and C<type> is the run core type.
-
-=cut
-
-*/
-
-void
-do_prederef(ARGIN(void **pc_prederef), PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore))
-{
-    ASSERT_ARGS(do_prederef)
-    const size_t     offset = pc_prederef - interp->code->prederef.code;
-    opcode_t * const pc     = ((opcode_t *)interp->code->base.data) + offset;
-    const op_info_t *opinfo;
-    size_t           n;
-
-    if (*pc < 0 || *pc >= (opcode_t)interp->op_count)
-        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INTERP_ERROR,
-            "Illegal opcode");
-
-    opinfo = &interp->op_info_table[*pc];
-
-    prederef_args(pc_prederef, interp, pc, opinfo);
-
-    if (PARROT_RUNCORE_PREDEREF_OPS_TEST(runcore)) {
-        *pc_prederef = PARROT_RUNCORE_CGOTO_OPS_TEST(runcore)
-            ? ((void **)interp->op_lib->op_func_table)[*pc]
-            : (void**)*pc;
-    }
-    else
-        Parrot_ex_throw_from_c_args(interp, NULL, 1,
-            "Tried to prederef wrong core");
-
-    /* now remember backward branches, invoke and similar opcodes */
-    n = opinfo->op_count;
-
-    if (((opinfo->jump & PARROT_JUMP_RELATIVE)
-    &&    opinfo->types[n - 2] == PARROT_ARG_IC
-    &&    pc[n - 1] < 0)                          /* relative backward branch */
-    ||   (opinfo->jump & PARROT_JUMP_ADDRESS)) {
-        Prederef * const pi = &interp->code->prederef;
-
-        /* first time prederef.branches == NULL:
-         * estimate size to 1/16th of opcodes */
-        if (!pi->branches) {
-            size_t nb = interp->code->base.size / 16;
-            if (nb < 8)
-                nb = (size_t)8;
-
-            pi->branches    = mem_allocate_n_typed(nb, Prederef_branch);
-            pi->n_allocated = nb;
-            pi->n_branches  = 0;
-        }
-        else if (pi->n_branches >= pi->n_allocated) {
-            pi->n_allocated = (size_t) (pi->n_allocated * 1.5);
-            mem_realloc_n_typed(pi->branches, pi->n_allocated, Prederef_branch);
-        }
-
-        pi->branches[pi->n_branches].offs = offset;
-        pi->branches[pi->n_branches].op   = *pc_prederef;
-
-        ++pi->n_branches;
-    }
-}
-
-
-/*
-
 =item C<static void turn_ev_check(PARROT_INTERP, int on)>
 
 Turn on or off event checking for prederefed cores.
@@ -478,10 +263,10 @@
 stop_prederef(PARROT_INTERP)
 {
     ASSERT_ARGS(stop_prederef)
-    interp->op_func_table = PARROT_CORE_OPLIB_INIT(1)->op_func_table;
+    interp->op_func_table = PARROT_CORE_OPLIB_INIT(interp, 1)->op_func_table;
 
     if (interp->evc_func_table) {
-        mem_sys_free(interp->evc_func_table);
+        mem_gc_free(interp, interp->evc_func_table);
         interp->evc_func_table = NULL;
     }
 
@@ -577,7 +362,7 @@
     ASSERT_ARGS(Parrot_setup_event_func_ptrs)
     const size_t       n         = interp->op_count;
     const oplib_init_f init_func = get_core_op_lib_init(interp, interp->run_core);
-    op_lib_t * const   lib       = init_func(1);
+    op_lib_t * const   lib       = init_func(interp, 1);
 
     /* remember op_func_table */
     interp->save_func_table      = lib->op_func_table;
@@ -589,7 +374,7 @@
     if (!interp->evc_func_table) {
         size_t i;
 
-        interp->evc_func_table = mem_allocate_n_typed(n, op_func_t);
+        interp->evc_func_table = mem_gc_allocate_n_zeroed_typed(interp, n, op_func_t);
 
         for (i = 0; i < n; ++i)
             interp->evc_func_table[i] = (op_func_t)
@@ -623,11 +408,11 @@
         if (destroy)
             (*destroy)(interp, core);
 
-        mem_sys_free(core);
+        mem_gc_free(interp, core);
     }
 
     if (interp->cores)
-        mem_sys_free(interp->cores);
+        mem_gc_free(interp, interp->cores);
 
     interp->cores    = NULL;
     interp->run_core = NULL;
@@ -637,20 +422,20 @@
         return;
 
 #ifdef HAVE_COMPUTED_GOTO
-    cg_lib = PARROT_CORE_CGP_OPLIB_INIT(1);
+    cg_lib = PARROT_CORE_CGP_OPLIB_INIT(interp, 1);
 
     if (cg_lib->op_func_table)
-        mem_sys_free(cg_lib->op_func_table);
+        mem_gc_free(interp, cg_lib->op_func_table);
     cg_lib->op_func_table = NULL;
 
-    cg_lib = PARROT_CORE_CG_OPLIB_INIT(1);
+    cg_lib = PARROT_CORE_CG_OPLIB_INIT(interp, 1);
     if (cg_lib->op_func_table)
-        mem_sys_free(cg_lib->op_func_table);
+        mem_gc_free(interp, cg_lib->op_func_table);
     cg_lib->op_func_table = NULL;
 #endif
 
-    mem_sys_free(interp->op_info_table);
-    mem_sys_free(interp->op_func_table);
+    mem_gc_free(interp, interp->op_info_table);
+    mem_gc_free(interp, interp->op_func_table);
     interp->op_info_table = NULL;
     interp->op_func_table = NULL;
 }
@@ -697,14 +482,14 @@
     }
 
     if (!interp->all_op_libs)
-        interp->all_op_libs = (op_lib_t **)mem_sys_allocate(
-                sizeof (op_lib_t *) * (interp->n_libs + 1));
+        interp->all_op_libs = mem_gc_allocate_n_zeroed_typed(interp,
+                interp->n_libs + 1, op_lib_t*);
     else
-        mem_realloc_n_typed(interp->all_op_libs, interp->n_libs + 1,
-                op_lib_t *);
+        interp->all_op_libs = mem_gc_realloc_n_typed_zeroed(interp, interp->all_op_libs,
+                interp->n_libs + 1, interp->n_libs, op_lib_t *);
 
     init_func = get_dynamic_op_lib_init(interp, lib_pmc);
-    lib       = init_func(1);
+    lib       = init_func(interp, 1);
 
     interp->all_op_libs[interp->n_libs++] = lib;
 
@@ -722,22 +507,22 @@
     n_old = interp->op_count;
     n_new = lib->op_count;
     n_tot = n_old + n_new;
-    core  = PARROT_CORE_OPLIB_INIT(1);
+    core  = PARROT_CORE_OPLIB_INIT(interp, 1);
 
     PARROT_ASSERT(interp->op_count == core->op_count);
 
-    new_evc_func_table = (op_func_t *)mem_sys_realloc(interp->evc_func_table,
-            sizeof (op_func_t) * n_tot);
+    new_evc_func_table = mem_gc_realloc_n_typed_zeroed(interp,
+            interp->evc_func_table, n_tot, n_old, op_func_t);
     if (core->flags & OP_FUNC_IS_ALLOCATED) {
-        new_func_table = (op_func_t *)mem_sys_realloc(core->op_func_table,
-                sizeof (op_func_t) * n_tot);
-        new_info_table = (op_info_t *)mem_sys_realloc(core->op_info_table,
-                sizeof (op_info_t) * n_tot);
+        new_func_table = mem_gc_realloc_n_typed_zeroed(interp,
+                core->op_func_table, n_tot, n_old, op_func_t);
+        new_info_table = mem_gc_realloc_n_typed_zeroed(interp,
+                core->op_info_table, n_tot, n_old, op_info_t);
     }
     else {
         /* allocate new op_func and info tables */
-        new_func_table = mem_allocate_n_typed(n_tot, op_func_t);
-        new_info_table = mem_allocate_n_typed(n_tot, op_info_t);
+        new_func_table = mem_gc_allocate_n_zeroed_typed(interp, n_tot, op_func_t);
+        new_info_table = mem_gc_allocate_n_zeroed_typed(interp, n_tot, op_info_t);
 
         /* copy old */
         for (i = 0; i < n_old; ++i) {
@@ -763,7 +548,7 @@
     interp->save_func_table = new_func_table;
 
     /* deinit core, so that it gets rehashed */
-    (void) PARROT_CORE_OPLIB_INIT(0);
+    (void) PARROT_CORE_OPLIB_INIT(interp, 0);
 
     /* set table */
     core->op_func_table = interp->op_func_table = new_func_table;
@@ -777,7 +562,7 @@
     dynop_register_xx(interp, n_old, n_new, PARROT_CORE_CG_OPLIB_INIT);
 #endif
 
-    dynop_register_switch(n_old, n_new);
+    dynop_register_switch(interp, n_old, n_new);
 }
 
 
@@ -799,25 +584,24 @@
     ASSERT_ARGS(dynop_register_xx)
     const size_t n_tot    = n_old + n_new;
     op_func_t   *ops_addr = NULL;
-    op_lib_t    *cg_lib   = init_func(1);
-    op_lib_t    *new_lib;
+    op_lib_t    *cg_lib   = init_func(interp, 1);
 
 #if 0
     /* related to CG and CGP ops issue below */
+    op_lib_t    *new_lib;
     STRING *op_variant;
-#endif
-
     oplib_init_f new_init_func;
     PMC *lib_variant;
+#endif
 
     if (cg_lib->flags & OP_FUNC_IS_ALLOCATED) {
-        ops_addr = (op_func_t *)mem_sys_realloc(cg_lib->op_func_table,
-                n_tot * sizeof (op_func_t));
+        ops_addr = mem_gc_realloc_n_typed_zeroed(interp,
+                cg_lib->op_func_table, n_tot, n_old, op_func_t);
     }
     else {
         size_t i;
 
-        ops_addr      = mem_allocate_n_typed(n_tot, op_func_t);
+        ops_addr      = mem_gc_allocate_n_zeroed_typed(interp, n_tot, op_func_t);
         cg_lib->flags = OP_FUNC_IS_ALLOCATED;
 
         for (i = 0; i < n_old; ++i)
@@ -890,13 +674,14 @@
     /* tell the cg_core about the new jump table */
     cg_lib->op_func_table = ops_addr;
     cg_lib->op_count      = n_tot;
-    init_func((long) ops_addr);
+    init_func(interp, (long) ops_addr);
 }
 
 
 /*
 
-=item C<static void dynop_register_switch(size_t n_old, size_t n_new)>
+=item C<static void dynop_register_switch(PARROT_INTERP, size_t n_old, size_t
+n_new)>
 
 Used only at the end of dynop_register.  Sums the old and new op_counts
 storing the result into the operations count field of the interpreter
@@ -907,10 +692,10 @@
 */
 
 static void
-dynop_register_switch(size_t n_old, size_t n_new)
+dynop_register_switch(PARROT_INTERP, size_t n_old, size_t n_new)
 {
     ASSERT_ARGS(dynop_register_switch)
-    op_lib_t * const lib = PARROT_CORE_SWITCH_OPLIB_INIT(1);
+    op_lib_t * const lib = PARROT_CORE_SWITCH_OPLIB_INIT(interp, 1);
     lib->op_count        = n_old + n_new;
 }
 
@@ -931,7 +716,7 @@
     ASSERT_ARGS(notify_func_table)
     const oplib_init_f init_func = get_core_op_lib_init(interp, interp->run_core);
 
-    init_func((long) table);
+    init_func(interp, (long) table);
 
     if (PARROT_RUNCORE_FUNC_TABLE_TEST(interp->run_core)) {
         PARROT_ASSERT(table);

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

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

Modified: branches/ops_pct/src/string/api.c
==============================================================================
--- branches/ops_pct/src/string/api.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/string/api.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -179,18 +179,6 @@
         PObj_COW_SET(s);
         STRUCT_COPY(d, s);
         PObj_sysmem_CLEAR(d);
-#if 0
-        /* XXX FIXME hack to avoid cross-interpreter issue until it
-         * is fixed correctly. */
-        if (n_interpreters > 1 && PObj_is_movable_TESTALL(s) &&
-                !Parrot_gc_ptr_in_memory_pool(interp, Buffer_bufstart(s))) {
-            Parrot_str_write_COW(interp, d);
-            Parrot_io_eprintf(interp, "cross-interpreter copy of "
-                                     "relocatable string '%Ss' into tid %d\n",
-                        d,
-                        interp->thread_data->tid);
-        }
-#endif
     }
     return d;
 }
@@ -288,7 +276,8 @@
     if (interp->parent_interpreter) {
         interp->hash_seed = interp->parent_interpreter->hash_seed;
     }
-    else {
+    /* interp is initialized from zeroed memory, so this is fine */
+    else if (interp->hash_seed == 0) {
         /* TT #64 - use an entropy source once available */
         Parrot_srand(Parrot_intval_time());
         interp->hash_seed = Parrot_uint_rand(0);
@@ -313,7 +302,7 @@
                        PObj_constant_FLAG);
 
     interp->const_cstring_table =
-        mem_allocate_n_zeroed_typed(n_parrot_cstrings, STRING *);
+        mem_gc_allocate_n_zeroed_typed(interp, n_parrot_cstrings, STRING *);
 
     for (i = 0; i < n_parrot_cstrings; ++i) {
         DECL_CONST_CAST;
@@ -346,7 +335,7 @@
     ASSERT_ARGS(Parrot_str_finish)
     /* all are shared between interpreters */
     if (!interp->parent_interpreter) {
-        mem_sys_free(interp->const_cstring_table);
+        mem_internal_free(interp->const_cstring_table);
         interp->const_cstring_table = NULL;
         Parrot_charsets_encodings_deinit(interp);
         parrot_hash_destroy(interp, interp->const_cstring_hash);
@@ -507,21 +496,9 @@
     ASSERT_ARGS(Parrot_str_concat)
     if (a && a->strlen) {
         if (b && b->strlen) {
-            const ENCODING *enc;
-            const CHARSET  *cs = string_rep_compatible(interp, a, b, &enc);
-            STRING         *result;
-
-            if (!cs) {
-                cs  = a->charset;
-                enc = a->encoding;
-            }
-            result = Parrot_str_new_init(interp, NULL, a->bufused + b->bufused,
-                        enc, cs, 0);
-
-            result = Parrot_str_append(interp, result, a);
-            result = Parrot_str_append(interp, result, b);
-
-            return result;
+            STRING *result = Parrot_str_copy(interp, a);
+            Parrot_str_write_COW(interp, result);
+            return Parrot_str_append(interp, result, b);
         }
 
         return Parrot_str_copy(interp, a);
@@ -584,10 +561,10 @@
     }
     else {
         /* upgrade strings for concatenation */
-        enc = (a->encoding == Parrot_utf16_encoding_ptr ||
-                  b->encoding == Parrot_utf16_encoding_ptr ||
-                  a->encoding == Parrot_ucs2_encoding_ptr ||
-                  b->encoding == Parrot_ucs2_encoding_ptr)
+        enc = (a->encoding == Parrot_utf16_encoding_ptr
+           ||  b->encoding == Parrot_utf16_encoding_ptr
+           ||  a->encoding == Parrot_ucs2_encoding_ptr
+           ||  b->encoding == Parrot_ucs2_encoding_ptr)
               ? Parrot_utf16_encoding_ptr
               : Parrot_utf8_encoding_ptr;
 
@@ -2506,7 +2483,7 @@
     if (!s)
         return NULL;
     else {
-        char * const p = (char *)mem_sys_allocate(s->bufused + 1);
+        char * const p = (char*)mem_internal_allocate(s->bufused + 1);
         memcpy(p, s->strstart, s->bufused);
         p[s->bufused] = '\0';
         return p;
@@ -2532,7 +2509,7 @@
 Parrot_str_free_cstring(ARGIN_NULLOK(char *p))
 {
     ASSERT_ARGS(Parrot_str_free_cstring)
-    mem_sys_free((void *)p);
+    mem_internal_free((void *)p);
 }
 
 
@@ -2561,7 +2538,7 @@
     Parrot_str_write_COW(interp, s);
 
     size   = Buffer_buflen(s);
-    memory = (char *)mem_sys_allocate(size);
+    memory = (char *)mem_internal_allocate(size);
 
     mem_sys_memcopy(memory, Buffer_bufstart(s), size);
     Buffer_bufstart(s) = memory;
@@ -2617,7 +2594,7 @@
     PObj_sysmem_CLEAR(s);
 
     /* Free up the memory */
-    mem_sys_free(memory);
+    mem_internal_free(memory);
 }
 
 
@@ -2845,9 +2822,6 @@
     const CHARSET  *charset;
     const ENCODING *encoding = NULL;
 
-    /* the default encoding is ascii */
-    const char     *enc_name = enc_char ? enc_char : "ascii";
-
     /* does the encoding have a character set? */
     const char     *p        = enc_char ? strchr(enc_char, ':') : NULL;
     size_t          clength  = strlen(cstring);
@@ -3454,7 +3428,7 @@
     if (STRING_IS_NULL(delim) || STRING_IS_NULL(str))
         return PMCNULL;
 
-    res  = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_ResizableStringArray));
+    res  = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_ResizableStringArray));
     slen = Parrot_str_byte_length(interp, str);
 
     if (!slen)

Modified: branches/ops_pct/src/string/charset.c
==============================================================================
--- branches/ops_pct/src/string/charset.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/string/charset.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -64,11 +64,12 @@
 static void Parrot_str_internal_register_charset_names(PARROT_INTERP)
         __attribute__nonnull__(1);
 
-static INTVAL register_charset(
+static INTVAL register_charset(PARROT_INTERP,
     ARGIN(const char *charsetname),
     ARGIN(CHARSET *charset))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 static void register_static_converters(PARROT_INTERP)
         __attribute__nonnull__(1);
@@ -77,7 +78,8 @@
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_register_charset __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(charsetname) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(charsetname) \
     , PARROT_ASSERT_ARG(charset))
 #define ASSERT_ARGS_register_static_converters __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
@@ -98,10 +100,10 @@
 PARROT_CAN_RETURN_NULL
 PARROT_MALLOC
 CHARSET *
-Parrot_new_charset(SHIM_INTERP)
+Parrot_new_charset(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_new_charset)
-    return mem_allocate_typed(CHARSET);
+    return mem_gc_allocate_zeroed_typed(interp, CHARSET);
 }
 
 /*
@@ -117,7 +119,7 @@
 
 PARROT_EXPORT
 void
-Parrot_charsets_encodings_deinit(SHIM_INTERP)
+Parrot_charsets_encodings_deinit(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_charsets_encodings_deinit)
     int i;
@@ -125,13 +127,13 @@
 
     for (i = 0; i < n; ++i) {
         if (all_charsets->set[i].n_converters)
-            mem_sys_free(all_charsets->set[i].to_converters);
-        mem_sys_free(all_charsets->set[i].charset);
+            mem_gc_free(interp, all_charsets->set[i].to_converters);
+        mem_gc_free(interp, all_charsets->set[i].charset);
     }
-    mem_sys_free(all_charsets->set);
-    mem_sys_free(all_charsets);
+    mem_gc_free(interp, all_charsets->set);
+    mem_gc_free(interp, all_charsets);
     all_charsets = NULL;
-    parrot_deinit_encodings();
+    parrot_deinit_encodings(interp);
 }
 
 /*
@@ -311,8 +313,8 @@
 
 /*
 
-=item C<static INTVAL register_charset(const char *charsetname, CHARSET
-*charset)>
+=item C<static INTVAL register_charset(PARROT_INTERP, const char *charsetname,
+CHARSET *charset)>
 
 Adds a new charset C<charset> with name <charsetname> to the list of
 all charsets. Returns 0 and does nothing if a charset with that name
@@ -323,7 +325,8 @@
 */
 
 static INTVAL
-register_charset(ARGIN(const char *charsetname), ARGIN(CHARSET *charset))
+register_charset(PARROT_INTERP, ARGIN(const char *charsetname),
+        ARGIN(CHARSET *charset))
 {
     ASSERT_ARGS(register_charset)
     int i;
@@ -339,10 +342,10 @@
      * loading of charsets from inside threads
      */
     if (!n)
-        all_charsets->set = mem_allocate_typed(One_charset);
+        all_charsets->set = mem_gc_allocate_zeroed_typed(interp, One_charset);
     else
-        all_charsets->set = (One_charset *)mem_sys_realloc(all_charsets->set,
-                (n + 1) * sizeof (One_charset));
+        all_charsets->set = mem_gc_realloc_n_typed_zeroed(interp,
+                all_charsets->set, n + 1, n, One_charset);
 
     all_charsets->n_charsets++;
     all_charsets->set[n].charset      = charset;
@@ -429,29 +432,29 @@
 
 PARROT_EXPORT
 INTVAL
-Parrot_register_charset(SHIM_INTERP, ARGIN(const char *charsetname),
+Parrot_register_charset(PARROT_INTERP, ARGIN(const char *charsetname),
         ARGIN(CHARSET *charset))
 {
     ASSERT_ARGS(Parrot_register_charset)
     if (!all_charsets) {
-        all_charsets             = mem_allocate_typed(All_charsets);
+        all_charsets             = mem_gc_allocate_zeroed_typed(interp, All_charsets);
         all_charsets->set        = NULL;
         all_charsets->n_charsets = 0;
     }
 
     if (STREQ("binary", charsetname)) {
         Parrot_binary_charset_ptr = charset;
-        return register_charset(charsetname, charset);
+        return register_charset(interp, charsetname, charset);
     }
 
     if (STREQ("iso-8859-1", charsetname)) {
         Parrot_iso_8859_1_charset_ptr = charset;
-        return register_charset(charsetname, charset);
+        return register_charset(interp, charsetname, charset);
     }
 
     if (STREQ("unicode", charsetname)) {
         Parrot_unicode_charset_ptr = charset;
-        return register_charset(charsetname, charset);
+        return register_charset(interp, charsetname, charset);
     }
 
     if (STREQ("ascii", charsetname)) {
@@ -459,7 +462,7 @@
             Parrot_default_charset_ptr = charset;
 
         Parrot_ascii_charset_ptr = charset;
-        return register_charset(charsetname, charset);
+        return register_charset(interp, charsetname, charset);
     }
 
     return 0;
@@ -594,7 +597,7 @@
 
 PARROT_EXPORT
 void
-Parrot_register_charset_converter(SHIM_INTERP,
+Parrot_register_charset_converter(PARROT_INTERP,
         ARGIN(const CHARSET *lhs), ARGIN(CHARSET *rhs),
         ARGIN(charset_converter_t func))
 {
@@ -608,11 +611,11 @@
             const int nc = left->n_converters++;
 
             if (nc) {
-                left->to_converters = (To_converter *)mem_sys_realloc(
-                        left->to_converters, sizeof (To_converter) * (nc + 1));
+                left->to_converters = mem_gc_realloc_n_typed_zeroed(interp,
+                        left->to_converters, nc + 1, nc, To_converter);
             }
             else
-                left->to_converters = (To_converter *)mem_sys_allocate(sizeof (To_converter));
+                left->to_converters = mem_gc_allocate_zeroed_typed(interp, To_converter);
             left->to_converters[nc].to = rhs;
             left->to_converters[nc].func = func;
         }

Modified: branches/ops_pct/src/string/charset/ascii.c
==============================================================================
--- branches/ops_pct/src/string/charset/ascii.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/string/charset/ascii.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -596,31 +596,42 @@
 {
     ASSERT_ARGS(mixed_cs_index)
     String_iter src_iter, search_iter;
-    UINTVAL len;
-    INTVAL start;
+    UINTVAL len, next_pos;
+    INTVAL found_at;
 
     ENCODING_ITER_INIT(interp, src, &src_iter);
     src_iter.set_position(interp, &src_iter, offs);
     ENCODING_ITER_INIT(interp, search, &search_iter);
     len = search->strlen;
 
-    start = -1;
-    for (; len && offs < src->strlen; ++offs) {
+    found_at = -1;
+    next_pos = offs;
+
+    for (; len && offs < src->strlen ;) {
         const UINTVAL c1 = src_iter.get_and_advance(interp, &src_iter);
         const UINTVAL c2 = search_iter.get_and_advance(interp, &search_iter);
+
         if (c1 == c2) {
             --len;
-            if (start == -1)
-                start = offs;
+            if (found_at == -1)
+                found_at = offs;
+            ++offs;
         }
         else {
             len = search->strlen;
-            start = -1;
+            ++offs;
+            ++next_pos;
+            if (offs != next_pos) {
+                src_iter.set_position(interp, &src_iter, next_pos);
+                offs = next_pos;
+            }
+
+            found_at = -1;
             search_iter.set_position(interp, &search_iter, 0);
         }
     }
     if (len == 0)
-        return start;
+        return found_at;
     return -1;
 }
 

Modified: branches/ops_pct/src/string/encoding.c
==============================================================================
--- branches/ops_pct/src/string/encoding.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/string/encoding.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -24,14 +24,16 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-static INTVAL register_encoding(SHIM_INTERP,
+static INTVAL register_encoding(PARROT_INTERP,
     ARGIN(const char *encodingname),
     ARGIN(ENCODING *encoding))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
 #define ASSERT_ARGS_register_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(encodingname) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(encodingname) \
     , PARROT_ASSERT_ARG(encoding))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
@@ -56,7 +58,7 @@
 
 /*
 
-=item C<void parrot_deinit_encodings(void)>
+=item C<void parrot_deinit_encodings(PARROT_INTERP)>
 
 Deinitialize encodings and free all memory used by them.
 
@@ -65,17 +67,17 @@
 */
 
 void
-parrot_deinit_encodings(void)
+parrot_deinit_encodings(PARROT_INTERP)
 {
     ASSERT_ARGS(parrot_deinit_encodings)
     const int n = all_encodings->n_encodings;
     int i;
 
     for (i = 0; i < n; ++i) {
-        mem_sys_free(all_encodings->enc[i].encoding);
+        mem_gc_free(interp, all_encodings->enc[i].encoding);
     }
-    mem_sys_free(all_encodings->enc);
-    mem_sys_free(all_encodings);
+    mem_gc_free(interp, all_encodings->enc);
+    mem_gc_free(interp, all_encodings);
     all_encodings = NULL;
 }
 
@@ -93,10 +95,10 @@
 PARROT_MALLOC
 PARROT_CANNOT_RETURN_NULL
 ENCODING *
-Parrot_new_encoding(SHIM_INTERP)
+Parrot_new_encoding(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_new_encoding)
-    return mem_allocate_typed(ENCODING);
+    return mem_gc_allocate_typed(interp, ENCODING);
 }
 
 /*
@@ -298,7 +300,7 @@
 */
 
 static INTVAL
-register_encoding(SHIM_INTERP, ARGIN(const char *encodingname),
+register_encoding(PARROT_INTERP, ARGIN(const char *encodingname),
         ARGIN(ENCODING *encoding))
 {
     ASSERT_ARGS(register_encoding)
@@ -315,10 +317,10 @@
      * loading of encodings from inside threads
      */
     if (!n)
-        all_encodings->enc = mem_allocate_typed(One_encoding);
+        all_encodings->enc = mem_gc_allocate_zeroed_typed(interp, One_encoding);
     else
-        all_encodings->enc = (One_encoding*)mem_sys_realloc(all_encodings->enc,
-                (n + 1) * sizeof (One_encoding));
+        all_encodings->enc = mem_gc_realloc_n_typed_zeroed(interp,
+                all_encodings->enc, n + 1, n, One_encoding);
     all_encodings->n_encodings++;
     all_encodings->enc[n].encoding = encoding;
 
@@ -367,7 +369,7 @@
 {
     ASSERT_ARGS(Parrot_register_encoding)
     if (!all_encodings) {
-        all_encodings = mem_allocate_typed(All_encodings);
+        all_encodings = mem_gc_allocate_zeroed_typed(interp, All_encodings);
         all_encodings->n_encodings = 0;
         all_encodings->enc = NULL;
     }

Modified: branches/ops_pct/src/string/encoding/utf16.c
==============================================================================
--- branches/ops_pct/src/string/encoding/utf16.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/string/encoding/utf16.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -298,7 +298,7 @@
 #if PARROT_HAS_ICU
     if (in_place) {
         /* need intermediate memory */
-        p = (UChar *)mem_sys_allocate(src_len * sizeof (UChar));
+        p = mem_gc_allocate_n_typed(interp, src_len, UChar);
     }
     else {
         Parrot_gc_reallocate_string_storage(interp, dest, sizeof (UChar) * src_len);
@@ -319,7 +319,7 @@
              * have to resize - required len in UChars is in dest_len
              */
             if (in_place)
-                p = (UChar *)mem_sys_realloc(p, dest_len * sizeof (UChar));
+                p = mem_gc_realloc_n_typed(interp, p, dest_len, UChar);
             else {
                 result->bufused = dest_len * sizeof (UChar);
                 Parrot_gc_reallocate_string_storage(interp, dest,
@@ -335,7 +335,7 @@
     if (in_place) {
         Parrot_gc_reallocate_string_storage(interp, src, src->bufused);
         memcpy(src->strstart, p, src->bufused);
-        mem_sys_free(p);
+        mem_gc_free(interp, p);
     }
     result->charset  = Parrot_unicode_charset_ptr;
     result->encoding = Parrot_utf16_encoding_ptr;

Modified: branches/ops_pct/src/string/encoding/utf8.c
==============================================================================
--- branches/ops_pct/src/string/encoding/utf8.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/string/encoding/utf8.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -608,7 +608,7 @@
 
     if (in_place) {
         /* need intermediate memory */
-        p = (unsigned char *)mem_sys_allocate(src_len);
+        p = mem_gc_allocate_n_typed(interp, src_len, unsigned char);
     }
     else {
         Parrot_gc_reallocate_string_storage(interp, dest, src_len);
@@ -631,7 +631,7 @@
                     need = 16;
                 dest_len += need;
                 if (in_place)
-                    p = (unsigned char *)mem_sys_realloc(p, dest_len);
+                    p = mem_gc_realloc_n_typed(interp, p, dest_len, unsigned char);
                 else {
                     result->bufused = dest_pos;
                     Parrot_gc_reallocate_string_storage(interp, dest, dest_len);
@@ -648,7 +648,7 @@
     if (in_place) {
         Parrot_gc_reallocate_string_storage(interp, src, src->bufused);
         memcpy(src->strstart, p, src->bufused);
-        mem_sys_free(p);
+        mem_gc_free(interp, p);
     }
     return result;
 }

Modified: branches/ops_pct/src/string/primitives.c
==============================================================================
--- branches/ops_pct/src/string/primitives.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/string/primitives.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -357,7 +357,7 @@
 
     /* 2 for the beginning and ending quote chars */
     const size_t newlen = oldlen - 2;
-    char * const copy   = (char *)mem_sys_allocate(newlen);
+    char * const copy   = (char *)mem_internal_allocate(newlen);
 
     memcpy(copy, old + 1, newlen);
     copy[newlen - 1] = 0;

Modified: branches/ops_pct/src/sub.c
==============================================================================
--- branches/ops_pct/src/sub.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/sub.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -64,7 +64,7 @@
 new_ret_continuation_pmc(PARROT_INTERP, ARGIN_NULLOK(opcode_t *address))
 {
     ASSERT_ARGS(new_ret_continuation_pmc)
-    PMC* const continuation = pmc_new(interp, enum_class_RetContinuation);
+    PMC* const continuation = Parrot_pmc_new(interp, enum_class_RetContinuation);
     VTABLE_set_pointer(interp, continuation, address);
     return continuation;
 }
@@ -612,7 +612,7 @@
         }
 
         /* Get the Sub PMC itself. */
-        key = pmc_new(interp, enum_class_String);
+        key = Parrot_pmc_new(interp, enum_class_String);
         VTABLE_set_string_native(interp, key, CONST_STRING(interp, "Sub"));
         sub_pmc = VTABLE_get_attr_keyed(interp, subclass, key, CONST_STRING(interp, "proxy"));
         if (sub_pmc->vtable->base_type == enum_class_Sub) {

Modified: branches/ops_pct/src/thread.c
==============================================================================
--- branches/ops_pct/src/thread.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/thread.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -97,10 +97,6 @@
         __attribute__nonnull__(1);
 
 PARROT_CAN_RETURN_NULL
-static QUEUE_ENTRY * remove_queued_suspend_gc(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-PARROT_CAN_RETURN_NULL
 static void* thread_func(ARGIN_NULLOK(void *arg));
 
 #define ASSERT_ARGS_detach __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
@@ -140,8 +136,6 @@
     , PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_pt_thread_wait __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_remove_queued_suspend_gc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_thread_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
@@ -188,7 +182,7 @@
     else if (VTABLE_isa(from, arg, _multi_sub)) {
         INTVAL i = 0;
         const INTVAL n = VTABLE_elements(from, arg);
-        ret_val  = pmc_new(interp, enum_class_MultiSub);
+        ret_val  = Parrot_pmc_new(interp, enum_class_MultiSub);
 
         for (i = 0; i < n; ++i) {
             PMC *const orig = VTABLE_get_pmc_keyed_int(from, arg, i);
@@ -257,7 +251,7 @@
     if (shared_gc_info) {
         COND_DESTROY(shared_gc_info->gc_cond);
         PARROT_ATOMIC_INT_DESTROY(shared_gc_info->gc_block_level);
-        mem_sys_free(shared_gc_info);
+        mem_internal_free(shared_gc_info);
         shared_gc_info = NULL;
     }
 }
@@ -288,7 +282,7 @@
     old_size = VTABLE_get_integer(old_interp, args);
 
     /* XXX should this be a different type? */
-    ret_val = pmc_new(interp, enum_class_FixedPMCArray);
+    ret_val = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
     VTABLE_set_integer_native(interp, ret_val, old_size);
 
     for (i = 0; i < old_size; ++i) {
@@ -620,7 +614,7 @@
             PMC *sub_ns = VTABLE_get_pmc_keyed_str(d, dest_ns, key);
             if (PMC_IS_NULL(sub_ns) || sub_ns->vtable->base_type !=
                     enum_class_NameSpace) {
-                sub_ns = pmc_new(d, enum_class_NameSpace);
+                sub_ns = Parrot_pmc_new(d, enum_class_NameSpace);
                 VTABLE_set_pmc_keyed_str(d, dest_ns, key, sub_ns);
             }
             pt_ns_clone(s, d, sub_ns, s, val);
@@ -752,7 +746,7 @@
      * XXX FIXME move this elsewhere? at least the set_pmc_keyed_int
      */
     old_dest_interp = dest_interp;
-    dest_interp     = pmc_new_noinit(interpreter, enum_class_ParrotThread);
+    dest_interp     = Parrot_pmc_new_noinit(interpreter, enum_class_ParrotThread);
 
     /* so it's not accidentally deleted */
     VTABLE_set_pointer(interp, old_dest_interp, NULL);
@@ -963,62 +957,6 @@
 
 /*
 
-=item C<static QUEUE_ENTRY * remove_queued_suspend_gc(PARROT_INTERP)>
-
-Removes an event requesting that the interpreter suspend itself for a
-garbage-collection run from the event queue.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-static QUEUE_ENTRY *
-remove_queued_suspend_gc(PARROT_INTERP)
-{
-    ASSERT_ARGS(remove_queued_suspend_gc)
-    parrot_event *ev    = NULL;
-    QUEUE * const queue = interp->task_queue;
-    QUEUE_ENTRY  *prev  = NULL;
-    QUEUE_ENTRY  *cur;
-
-    queue_lock(queue);
-    cur = queue->head;
-
-    while (cur) {
-        ev   = (parrot_event *)cur->data;
-
-        if (ev->type == EVENT_TYPE_SUSPEND_FOR_GC)
-            break;
-
-        prev = cur;
-        cur  = cur->next;
-    }
-
-    if (cur) {
-        if (prev)
-            prev->next  = cur->next;
-        else
-            queue->head = cur->next;
-
-        if (cur == queue->tail)
-            queue->tail = prev;
-
-        if (cur == queue->head)
-            queue->head = cur->next;
-
-        mem_sys_free(ev);
-        mem_sys_free(cur);
-        cur = NULL;
-        DEBUG_ONLY(fprintf(stderr, "%p: remove_queued_suspend_gc: got one\n", interp));
-    }
-
-    queue_unlock(queue);
-    return cur;
-}
-
-/*
-
 =item C<static int pt_gc_count_threads(PARROT_INTERP)>
 
 Returns the number of active threads in the system (running or suspended).  Be
@@ -1364,7 +1302,7 @@
              * dying interpreter, so register it in parent's GC registry
              * XXX is this still needed?
              */
-            gc_register_pmc(parent, parent_ret);
+            Parrot_pmc_gc_register(parent, parent_ret);
             Parrot_unblock_GC_mark(parent);
             retval = parent_ret;
         }
@@ -1388,7 +1326,7 @@
          * value, caller gets it now
          */
         if (retval)
-            gc_unregister_pmc(parent, retval);
+            Parrot_pmc_gc_unregister(parent, retval);
 
         return retval;
     }
@@ -1560,18 +1498,18 @@
         PARROT_ASSERT(!interpreter_array);
         PARROT_ASSERT(n_interpreters == 0);
 
-        interpreter_array    = mem_allocate_typed(Interp *);
+        interpreter_array    = mem_internal_allocate_typed(Interp *);
         interpreter_array[0] = interp;
         n_interpreters       = 1;
 
-        shared_gc_info = (Shared_gc_info *)mem_sys_allocate_zeroed(sizeof (*shared_gc_info));
+        shared_gc_info = (Shared_gc_info *)mem_internal_allocate_zeroed(sizeof (*shared_gc_info));
         COND_INIT(shared_gc_info->gc_cond);
         PARROT_ATOMIC_INT_INIT(shared_gc_info->gc_block_level);
         PARROT_ATOMIC_INT_SET(shared_gc_info->gc_block_level, 0);
 
         /* XXX try to defer this until later */
         PARROT_ASSERT(interp == interpreter_array[0]);
-        interp->thread_data      = mem_allocate_zeroed_typed(Thread_data);
+        interp->thread_data      = mem_internal_allocate_zeroed_typed(Thread_data);
         INTERPRETER_LOCK_INIT(interp);
         interp->thread_data->tid = 0;
 
@@ -1579,7 +1517,7 @@
     }
 
 
-    new_interp->thread_data = mem_allocate_zeroed_typed(Thread_data);
+    new_interp->thread_data = mem_internal_allocate_zeroed_typed(Thread_data);
     INTERPRETER_LOCK_INIT(new_interp);
     running_threads++;
     if (Interp_debug_TEST(interp, PARROT_THREAD_DEBUG_FLAG))
@@ -1596,7 +1534,7 @@
     }
 
     /* need to resize */
-    interpreter_array = (Interp **)mem_sys_realloc(interpreter_array,
+    interpreter_array = (Interp **)mem_internal_realloc(interpreter_array,
             (n_interpreters + 1) * sizeof (Interp *));
 
     interpreter_array[n_interpreters] = new_interp;

Deleted: branches/ops_pct/src/tsq.c
==============================================================================
--- branches/ops_pct/src/tsq.c	Sun Mar  7 19:33:20 2010	(r44742)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,426 +0,0 @@
-/*
-Copyright (C) 2001-2009, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/tsq.c - Thread-safe queues
-
-=head1 DESCRIPTION
-
-This file implements thread-safe queues for Parrot.
-
-=head2 Functions
-
-=over 4
-
-=cut
-
-*/
-
-#include "parrot/parrot.h"
-
-/* HEADERIZER HFILE: include/parrot/tsq.h */
-
-/*
-
-=item C<QUEUE_ENTRY * pop_entry(QUEUE *queue)>
-
-Does a synchronized removal of the head entry off the queue and returns it.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-QUEUE_ENTRY *
-pop_entry(ARGMOD(QUEUE *queue))
-{
-    ASSERT_ARGS(pop_entry)
-    QUEUE_ENTRY *returnval;
-    queue_lock(queue);
-    returnval = nosync_pop_entry(queue);
-    queue_unlock(queue);
-    return returnval;
-}
-
-/*
-
-=item C<QUEUE_ENTRY * peek_entry(const QUEUE *queue)>
-
-This does no locking, so the result might have changed by the time you
-get the entry, but a synchronized C<pop_entry()> will check again and
-return C<NULL> if the queue is empty.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-QUEUE_ENTRY *
-peek_entry(ARGIN(const QUEUE *queue))
-{
-    ASSERT_ARGS(peek_entry)
-    return queue->head;
-}
-
-/*
-
-=item C<QUEUE_ENTRY * nosync_pop_entry(QUEUE *queue)>
-
-Grab an entry off the queue with no synchronization. Internal only,
-because it's darned evil and shouldn't be used outside the module. It's
-in here so we don't have to duplicate pop code.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-QUEUE_ENTRY *
-nosync_pop_entry(ARGMOD(QUEUE *queue))
-{
-    ASSERT_ARGS(nosync_pop_entry)
-    QUEUE_ENTRY *returnval;
-    if (!queue->head) {
-        return NULL;
-    }
-    returnval = queue->head;
-    if (queue->head == queue->tail) {
-        queue->head = NULL;
-        queue->tail = NULL;
-    }
-    else {
-        queue->head = queue->head->next;
-    }
-    returnval->next = NULL;
-    return returnval;
-}
-
-/*
-
-=item C<QUEUE_ENTRY * wait_for_entry(QUEUE *queue)>
-
-Does a synchronized removal of the head entry off the queue, waiting if
-necessary until there is an entry, and then returns it.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-QUEUE_ENTRY *
-wait_for_entry(ARGMOD(QUEUE *queue))
-{
-    ASSERT_ARGS(wait_for_entry)
-    QUEUE_ENTRY *returnval;
-
-    queue_lock(queue);
-    while (queue->head == NULL) {
-        queue_wait(queue);
-    }
-    returnval = nosync_pop_entry(queue);
-    queue_unlock(queue);
-    return returnval;
-
-}
-
-/*
-
-=item C<void push_entry(QUEUE *queue, QUEUE_ENTRY *entry)>
-
-Does a synchronized insertion of C<entry> onto the tail of the queue.
-
-=cut
-
-*/
-
-void
-push_entry(ARGMOD(QUEUE *queue), ARGIN(QUEUE_ENTRY *entry))
-{
-    ASSERT_ARGS(push_entry)
-    queue_lock(queue);
-    /* Is there something in the queue? */
-    if (queue->tail) {
-        queue->tail->next = entry;
-        queue->tail = entry;
-    }
-    else {
-        queue->head = entry;
-        queue->tail = entry;
-    }
-    queue_signal(queue);        /* assumes only one waiter */
-    queue_unlock(queue);
-}
-
-/*
-
-=item C<void unshift_entry(QUEUE *queue, QUEUE_ENTRY *entry)>
-
-Does a synchronized insertion of C<entry> into the head of the queue.
-
-=cut
-
-*/
-
-void
-unshift_entry(ARGMOD(QUEUE *queue), ARGIN(QUEUE_ENTRY *entry))
-{
-    ASSERT_ARGS(unshift_entry)
-    QUEUE_ENTRY *cur;
-
-    queue_lock(queue);
-    cur = queue->head;
-    if (!cur) {
-        /* empty just set head */
-        queue->head = entry;
-        queue->tail = entry;
-    }
-    else {
-        queue->head = entry;
-        entry->next = cur;
-    }
-    queue_signal(queue);
-    queue_unlock(queue);
-}
-
-/*
-
-=item C<void nosync_insert_entry(QUEUE *queue, QUEUE_ENTRY *entry)>
-
-Inserts a timed event according to C<abstime>. The caller has to hold the
-queue mutex.
-
-=cut
-
-*/
-
-void
-nosync_insert_entry(ARGMOD(QUEUE *queue), ARGIN(QUEUE_ENTRY *entry))
-{
-    ASSERT_ARGS(nosync_insert_entry)
-    QUEUE_ENTRY *cur = queue->head;
-    QUEUE_ENTRY *prev;
-    parrot_event *event;
-    FLOATVAL abs_time;
-
-    PARROT_ASSERT(entry->type == QUEUE_ENTRY_TYPE_TIMED_EVENT);
-    /*
-     * empty queue - just insert
-     */
-    if (!cur) {
-        queue->head = entry;
-        queue->tail = entry;
-        return;
-    }
-
-    prev     = NULL;
-    event    = (parrot_event *)entry->data;
-    abs_time = event->u.timer_event.abs_time;
-
-    while (cur && cur->type == QUEUE_ENTRY_TYPE_TIMED_EVENT) {
-        const parrot_event * const cur_event = (parrot_event *)cur->data;
-        if (abs_time > cur_event->u.timer_event.abs_time) {
-            prev = cur;
-            cur = cur->next;
-        }
-        else
-            break;
-    }
-    if (!prev)
-        queue->head = entry;
-    else {
-        prev->next = entry;
-        if (prev == queue->tail)
-            queue->tail = entry;
-    }
-    entry->next = cur;
-}
-
-/*
-
-=item C<void insert_entry(QUEUE *queue, QUEUE_ENTRY *entry)>
-
-Does a synchronized insert of C<entry>.
-
-=cut
-
-*/
-
-void
-insert_entry(ARGMOD(QUEUE *queue), ARGIN(QUEUE_ENTRY *entry))
-{
-    ASSERT_ARGS(insert_entry)
-    queue_lock(queue);
-    nosync_insert_entry(queue, entry);
-    queue_signal(queue);
-    queue_unlock(queue);
-}
-
-/*
-
-=item C<void queue_lock(QUEUE *queue)>
-
-Locks the queue's mutex.
-
-=cut
-
-*/
-
-void
-queue_lock(ARGMOD(QUEUE *queue))
-{
-    ASSERT_ARGS(queue_lock)
-    LOCK(queue->queue_mutex);
-}
-
-/*
-
-=item C<void queue_unlock(QUEUE *queue)>
-
-Unlocks the queue's mutex.
-
-=cut
-
-*/
-
-void
-queue_unlock(ARGMOD(QUEUE *queue))
-{
-    ASSERT_ARGS(queue_unlock)
-    UNLOCK(queue->queue_mutex);
-}
-
-/*
-
-=item C<void queue_broadcast(QUEUE *queue)>
-
-This function wakes up I<every> thread waiting on the queue.
-
-=cut
-
-*/
-
-void
-queue_broadcast(ARGMOD(QUEUE *queue))
-{
-    ASSERT_ARGS(queue_broadcast)
-    COND_BROADCAST(queue->queue_condition);
-}
-
-/*
-
-=item C<void queue_signal(QUEUE *queue)>
-
-=cut
-
-*/
-
-void
-queue_signal(ARGMOD(QUEUE *queue))
-{
-    ASSERT_ARGS(queue_signal)
-    COND_SIGNAL(queue->queue_condition);
-}
-
-/*
-
-=item C<void queue_wait(QUEUE *queue)>
-
-Instructs the queue to wait.
-
-=cut
-
-*/
-
-void
-queue_wait(ARGMOD(QUEUE *queue))
-{
-    ASSERT_ARGS(queue_wait)
-    COND_WAIT(queue->queue_condition, queue->queue_mutex);
-}
-
-/*
-
-=item C<void queue_timedwait(QUEUE *queue, const struct timespec *abs_time)>
-
-Instructs the queue to wait for C<abs_time> seconds (?).
-
-=cut
-
-*/
-
-void
-queue_timedwait(ARGMOD(QUEUE *queue), ARGIN(const struct timespec *abs_time))
-{
-    ASSERT_ARGS(queue_timedwait)
-    COND_TIMED_WAIT(queue->queue_condition, queue->queue_mutex, abs_time);
-}
-
-/*
-
-=item C<QUEUE* queue_init(UINTVAL prio)>
-
-Initializes the queue, setting C<prio> as the queue's priority.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-PARROT_MALLOC
-QUEUE*
-queue_init(UINTVAL prio)
-{
-    ASSERT_ARGS(queue_init)
-    QUEUE * const queue = mem_allocate_typed(QUEUE);
-
-    queue->head = queue->tail = NULL;
-    queue->max_prio = prio;
-    COND_INIT(queue->queue_condition);
-    MUTEX_INIT(queue->queue_mutex);
-    return queue;
-}
-
-/*
-
-=item C<void queue_destroy(QUEUE *queue)>
-
-Destroys the queue, raising an exception if it is not empty.
-
-=cut
-
-*/
-
-void
-queue_destroy(ARGMOD(QUEUE *queue))
-{
-    ASSERT_ARGS(queue_destroy)
-    if (peek_entry(queue))
-        exit_fatal(1, "Queue not empty on destroy");
-
-    COND_DESTROY(queue->queue_condition);
-    MUTEX_DESTROY(queue->queue_mutex);
-    mem_sys_free(queue);
-}
-
-/*
-
-=back
-
-=head1 SEE ALSO
-
-F<include/parrot/tsq.h>.
-
-=cut
-
-*/
-
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Modified: branches/ops_pct/src/utils.c
==============================================================================
--- branches/ops_pct/src/utils.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/utils.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -412,9 +412,10 @@
 
 =item C<FLOATVAL Parrot_float_rand(INTVAL how_random)>
 
-Returns a C<FLOATVAL> in the interval C<[0.0, 1.0)>.
+Returns a C<FLOATVAL> uniformly distributed in the in the interval
+C<[0.0, 1.0]>.
 
-C<how_random> is ignored.
+C<how_random> is currently ignored.
 
 =cut
 
@@ -434,7 +435,7 @@
 
 =item C<INTVAL Parrot_uint_rand(INTVAL how_random)>
 
-Returns an C<INTVAL> in the interval C<[0, 2^31)>.
+Returns an C<INTVAL> uniformly distributed in the interval C<[0, 2^31)>.
 
 C<how_random> is ignored.
 
@@ -491,8 +492,11 @@
 Parrot_range_rand(INTVAL from, INTVAL to, INTVAL how_random)
 {
     ASSERT_ARGS(Parrot_range_rand)
-    return (INTVAL)(from + ((double)(to - from))
-                     * Parrot_float_rand(how_random));
+    const double spread = (double)(to - from + 1);
+    const double randpart = Parrot_float_rand(how_random);
+    const INTVAL raw = from + (INTVAL)(spread * randpart);
+
+    return raw;
 }
 
 /*
@@ -545,7 +549,7 @@
 {
     ASSERT_ARGS(tm_to_array)
 
-    PMC * const Array = pmc_new(interp,
+    PMC * const Array = Parrot_pmc_new(interp,
         Parrot_get_ctx_HLL_type(interp, enum_class_FixedIntegerArray));
     VTABLE_set_integer_native(interp, Array, 9);
 
@@ -845,9 +849,9 @@
 
     /* allocate space for data structures */
     /* NOTA: data structures could be kept allocated somewhere waiting to get reused...*/
-    c.nb_succ      = nb_succ      = mem_allocate_n_zeroed_typed(n_regs, int);
-    c.backup       = backup       = mem_allocate_n_zeroed_typed(n_regs, int);
-    c.reg_to_index = reg_to_index = mem_allocate_n_zeroed_typed(max_reg, int);
+    c.nb_succ      = nb_succ      = mem_gc_allocate_n_zeroed_typed(interp, n_regs, int);
+    c.backup       = backup       = mem_gc_allocate_n_zeroed_typed(interp, n_regs, int);
+    c.reg_to_index = reg_to_index = mem_gc_allocate_n_zeroed_typed(interp, max_reg, int);
 
     /* init backup array */
     for (i = 0; i < n_regs; i++)
@@ -883,9 +887,9 @@
         }
     }
 
-    mem_sys_free(nb_succ);
-    mem_sys_free(reg_to_index);
-    mem_sys_free(backup);
+    mem_gc_free(interp, nb_succ);
+    mem_gc_free(interp, reg_to_index);
+    mem_gc_free(interp, backup);
 }
 
 typedef INTVAL (*sort_func_t)(PARROT_INTERP, void *, void *);

Modified: branches/ops_pct/src/vtable.tbl
==============================================================================
--- branches/ops_pct/src/vtable.tbl	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/vtable.tbl	Sun Mar  7 19:33:20 2010	(r44743)
@@ -41,8 +41,6 @@
 FLOATVAL get_number_keyed_int(INTVAL key)
 FLOATVAL get_number_keyed_str(STRING* key)
 
-PMC* get_bignum()
-
 STRING* get_string()
 STRING* get_repr()
 STRING* get_string_keyed(PMC* key)
@@ -72,10 +70,6 @@
 void set_number_keyed_int(INTVAL key, FLOATVAL value)
 void set_number_keyed_str(STRING* key, FLOATVAL value)
 
-void set_bignum_int(INTVAL value)
-void set_bignum_num(FLOATVAL value)
-void set_bignum_str(STRING* value)
-
 void set_string_native(STRING* value)
 void assign_string_native(STRING* value)
 void set_string_keyed(PMC* key, STRING* value)
@@ -177,14 +171,6 @@
 void i_modulus_int(INTVAL value) :write
 void i_modulus_float(FLOATVAL value) :write
 
-PMC* pow(PMC* value, PMC* dest)
-PMC* pow_int(INTVAL value, PMC* dest)
-PMC* pow_float(FLOATVAL value, PMC* dest)
-
-void i_pow(PMC* value) :write
-void i_pow_int(INTVAL value) :write
-void i_pow_float(FLOATVAL value) :write
-
 void increment() :write
 void decrement() :write
 
@@ -194,67 +180,6 @@
 PMC* neg(PMC* dest)
 void i_neg() :write
 
-[BITWISE]
-PMC* bitwise_or(PMC* value, PMC* dest)
-PMC* bitwise_or_int(INTVAL value, PMC* dest)
-
-void i_bitwise_or(PMC* value) :write
-void i_bitwise_or_int(INTVAL value) :write
-
-PMC* bitwise_and(PMC* value, PMC* dest)
-PMC* bitwise_and_int(INTVAL value, PMC* dest)
-
-void i_bitwise_and(PMC* value) :write
-void i_bitwise_and_int(INTVAL value) :write
-
-PMC* bitwise_xor(PMC* value, PMC* dest)
-PMC* bitwise_xor_int(INTVAL value, PMC* dest)
-
-void i_bitwise_xor(PMC* value) :write
-void i_bitwise_xor_int(INTVAL value) :write
-
-PMC* bitwise_ors(PMC* value, PMC* dest)
-PMC* bitwise_ors_str(STRING* value, PMC* dest)
-
-void i_bitwise_ors(PMC* value) :write
-void i_bitwise_ors_str(STRING* value) :write
-
-PMC* bitwise_ands(PMC* value, PMC* dest)
-PMC* bitwise_ands_str(STRING* value, PMC* dest)
-
-void i_bitwise_ands(PMC* value) :write
-void i_bitwise_ands_str(STRING* value) :write
-
-PMC* bitwise_xors(PMC* value, PMC* dest)
-PMC* bitwise_xors_str(STRING* value, PMC* dest)
-
-void i_bitwise_xors(PMC* value) :write
-void i_bitwise_xors_str(STRING* value) :write
-
-PMC* bitwise_not(PMC* dest)
-void i_bitwise_not() :write
-
-PMC* bitwise_nots(PMC* dest)
-void i_bitwise_nots() :write
-
-PMC* bitwise_shl(PMC* value, PMC* dest)
-PMC* bitwise_shl_int(INTVAL value, PMC* dest)
-
-void i_bitwise_shl(PMC* value) :write
-void i_bitwise_shl_int(INTVAL value) :write
-
-PMC* bitwise_shr(PMC* value, PMC* dest)
-PMC* bitwise_shr_int(INTVAL value, PMC* dest)
-
-void i_bitwise_shr(PMC* value) :write
-void i_bitwise_shr_int(INTVAL value) :write
-
-PMC* bitwise_lsr(PMC* value, PMC* dest)
-PMC* bitwise_lsr_int(INTVAL value, PMC* dest)
-
-void i_bitwise_lsr(PMC* value) :write
-void i_bitwise_lsr_int(INTVAL value) :write
-
 [CMP]
 INTVAL is_equal(PMC* value)
 INTVAL is_equal_num(PMC* value)

Modified: branches/ops_pct/src/vtables.c
==============================================================================
--- branches/ops_pct/src/vtables.c	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/src/vtables.c	Sun Mar  7 19:33:20 2010	(r44743)
@@ -43,7 +43,7 @@
 Parrot_new_vtable(SHIM_INTERP)
 {
     ASSERT_ARGS(Parrot_new_vtable)
-    return mem_allocate_zeroed_typed(VTABLE);
+    return mem_internal_allocate_zeroed_typed(VTABLE);
 }
 
 /*
@@ -63,7 +63,7 @@
 Parrot_clone_vtable(PARROT_INTERP, ARGIN(const VTABLE *base_vtable))
 {
     ASSERT_ARGS(Parrot_clone_vtable)
-    VTABLE * const new_vtable = mem_allocate_typed(VTABLE);
+    VTABLE * const new_vtable = mem_internal_allocate_typed(VTABLE);
 
     STRUCT_COPY(new_vtable, base_vtable);
 
@@ -108,7 +108,7 @@
             ro_vtable->isa_hash = NULL;
         }
 
-        mem_sys_free(ro_vtable);
+        mem_internal_free(ro_vtable);
         vtable->ro_variant_vtable = NULL;
     }
 
@@ -117,7 +117,7 @@
         vtable->isa_hash = NULL;
     }
 
-    mem_sys_free(vtable);
+    mem_internal_free(vtable);
 }
 
 /*
@@ -134,7 +134,7 @@
 parrot_alloc_vtables(PARROT_INTERP)
 {
     ASSERT_ARGS(parrot_alloc_vtables)
-    interp->vtables          = mem_allocate_n_zeroed_typed(PARROT_MAX_CLASSES, VTABLE *);
+    interp->vtables          = mem_internal_allocate_n_zeroed_typed(PARROT_MAX_CLASSES, VTABLE *);
     interp->n_vtable_max     = enum_class_core_max;
     interp->n_vtable_alloced = PARROT_MAX_CLASSES - 1;
 }
@@ -162,7 +162,7 @@
 
     /* arrays start at zero, but we compare type numbers starting at 1 */
     interp->n_vtable_alloced = new_max - 1;
-    interp->vtables          = (VTABLE **)mem_sys_realloc_zeroed(
+    interp->vtables          = (VTABLE **)mem_internal_realloc_zeroed(
         interp->vtables, new_size, old_size);
 }
 
@@ -187,7 +187,7 @@
     for (i = 0; i < interp->n_vtable_max; i++)
         Parrot_destroy_vtable(interp, interp->vtables[i]);
 
-    mem_sys_free(interp->vtables);
+    mem_internal_free(interp->vtables);
 }
 
 /*

Modified: branches/ops_pct/t/codingstd/c_arg_assert.t
==============================================================================
--- branches/ops_pct/t/codingstd/c_arg_assert.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/c_arg_assert.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2008-2009, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -51,7 +51,7 @@
             if ( my ($func) = $line =~ m/^#define ASSERT_ARGS_([_a-zA-Z0-9]+)\s/s ) {
                 push @defines, [$func, $path];
             }
-            
+
             if ( my ($func) = $line =~ m/^\s+ASSERT_ARGS\(([_a-zA-Z0-9]+)\)$/ ) {
                 $usages{$func} = 1;
 

Modified: branches/ops_pct/t/codingstd/c_cppcomments.t
==============================================================================
--- branches/ops_pct/t/codingstd/c_cppcomments.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/c_cppcomments.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -50,7 +50,7 @@
 );
 
 # TT # 414 (https://trac.parrot.org/parrot/ticket/414):
-# In the POD inside a C source code file, a hyperlink such as 
+# In the POD inside a C source code file, a hyperlink such as
 # https://trac.parrot.org will be inaccurately reported as a C++-style
 # comment.
 # Quick fix added
@@ -60,9 +60,9 @@
                    (?: ' (?: \\\\ | \\' | [^'] )* ' )  # remove ' string
                  | (?: " (?: \\\\ | \\" | [^"] )* " )  # remove " string
                  | /\* .*? \*/                         # remove C comment
-		 | https?:\/\/                         # TT # 414 quick fix
+                 | https?:\/\/                         # TT # 414 quick fix
                )
-            }{}gsx;
+             }{}gsx;
 
     return $buf !~ m{ ( .*? // .* ) }x;
 }

Modified: branches/ops_pct/t/codingstd/c_function_docs.t
==============================================================================
--- branches/ops_pct/t/codingstd/c_function_docs.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/c_function_docs.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -99,44 +99,28 @@
 compilers/imcc/reg_alloc.c
 compilers/imcc/symreg.c
 compilers/pirc/src/pircapi.c
-compilers/pirc/src/pircompiler.c
-compilers/pirc/src/piremit.c
-compilers/pirc/src/pirmacro.c
-compilers/pirc/src/pirpcc.c
-compilers/pirc/src/pirregalloc.c
-compilers/pirc/src/pirsymbol.c
 config/gen/platform/ansi/dl.c
 config/gen/platform/ansi/exec.c
 config/gen/platform/ansi/time.c
 config/gen/platform/darwin/dl.c
 config/gen/platform/darwin/memalign.c
 config/gen/platform/generic/dl.c
-config/gen/platform/generic/env.c
 config/gen/platform/generic/exec.c
 config/gen/platform/generic/math.c
 config/gen/platform/generic/memalign.c
-config/gen/platform/generic/memexec.c
 config/gen/platform/generic/stat.c
 config/gen/platform/generic/time.c
 config/gen/platform/netbsd/math.c
 config/gen/platform/openbsd/math.c
-config/gen/platform/openbsd/memexec.c
 config/gen/platform/solaris/math.c
 config/gen/platform/solaris/time.c
-examples/c/nanoparrot.c
-examples/c/pbc_info.c
 examples/compilers/japhc.c
-src/atomic/gcc_x86.c
-src/debug.c
 src/gc/generational_ms.c
 src/io/io_string.c
-src/pbc_dump.c
 src/string/charset/ascii.c
 src/string/charset/binary.c
 src/string/charset/iso-8859-1.c
 src/string/charset/unicode.c
-src/tsq.c
-include/parrot/atomic/gcc_pcc.h
 
 # Local Variables:
 #   mode: cperl

Modified: branches/ops_pct/t/codingstd/c_indent.t
==============================================================================
--- branches/ops_pct/t/codingstd/c_indent.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/c_indent.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -183,7 +183,7 @@
             my ($indent) = $line =~ /^(\s+)/ or next;
             $indent = length($indent);
 
-            # Ignore the indentation of the current line if the last 
+            # Ignore the indentation of the current line if the last
             # character of the was anything but a ';'.
             #
             # The indentation of the previous line is not considered.
@@ -198,7 +198,8 @@
                         . "    apparent non-2 space outdenting ($indent spaces)\n";
                     $c_failed{"$path\n"} = 1
                 }
-            } else {
+            }
+            else {
                 if ( $indent % 4 &&
                     !$state{in_comment} &&
                     $state{prev_last_char} eq ';'

Modified: branches/ops_pct/t/codingstd/c_macro_args.t
==============================================================================
--- branches/ops_pct/t/codingstd/c_macro_args.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/c_macro_args.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,6 +1,6 @@
 #! perl
-# Copyright (C) 2008-2009, Parrot Foundation.
-# $Id $
+# Copyright (C) 2008-2010, Parrot Foundation.
+# $Id$
 
 use strict;
 use warnings;

Modified: branches/ops_pct/t/codingstd/c_parens.t
==============================================================================
--- branches/ops_pct/t/codingstd/c_parens.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/c_parens.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -92,7 +92,7 @@
         for my $line (@lines) {
             # skip #defines and typedefs
             next if $line =~ m{(?:(#\s*define|^\s*typedef))};
-            if ( $line =~ m{ ( (?<!\w) (?:$keywords) (?: \( | \ \s+ \( ) ) }xo ) {
+            if ( $line =~ m{ ( (?<!\w) (?:$keywords) (?: \( ) ) }xo ) {
                 my $paren = $1;
 
                 # ops use the same names as some C keywords, so skip

Modified: branches/ops_pct/t/codingstd/copyright.t
==============================================================================
--- branches/ops_pct/t/codingstd/copyright.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/copyright.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -135,10 +135,6 @@
         reason  => 'sample code used in testing',
     },
     {
-        file    => 'tools/build/nativecall.pl',
-        reason  => 'heredoc text for generated file',
-    },
-    {
         file    => 'tools/build/vtable_extend.pl',
         reason  => 'heredoc text for generated file',
     },

Modified: branches/ops_pct/t/codingstd/cuddled_else.t
==============================================================================
--- branches/ops_pct/t/codingstd/cuddled_else.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/cuddled_else.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -23,7 +23,8 @@
 
 =head1 DESCRIPTION
 
-Checks that files do not use cuddled else a.k.a C<} else {>.
+Checks that files do not use cuddled else, that is an else on the same
+line as the closing brace of the if part.
 
 =head1 SEE ALSO
 

Modified: branches/ops_pct/t/codingstd/linelength.t
==============================================================================
--- branches/ops_pct/t/codingstd/linelength.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/linelength.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -125,5 +125,8 @@
 compilers/pirc/macro/macroparser.h
 compilers/pirc/src/hdocprep.l
 compilers/pirc/src/hdocprep.c
+# generated by tools/dev/nci_thunk_gen.pir
+src/nci/core_thunks.c
+src/nci/extra_thunks.c
 # these ones include long POD
 docs/embed.pod

Modified: branches/ops_pct/t/codingstd/opcode_doc.t
==============================================================================
--- branches/ops_pct/t/codingstd/opcode_doc.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/opcode_doc.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2005, The Perl Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 use strict;

Modified: branches/ops_pct/t/codingstd/perlcritic.t
==============================================================================
--- branches/ops_pct/t/codingstd/perlcritic.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/perlcritic.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -40,7 +40,13 @@
 use Parrot::Distribution;
 use Test::More;
 
-# There's no point in continuing if we're missing some certain modules.
+# There's no point in continuing if we're missing some certain modules, or
+# if the developer doesn't want to.
+
+if (exists $ENV{'PARROT_TEST_NO_PERLCRITIC'}) {
+  give_up('absence of PARROT_TEST_NO_PERLCRITIC environment variable');
+}
+
 eval { require Test::Perl::Critic };
 if ($@) {
   give_up('Test::Perl::Critic');
@@ -80,7 +86,8 @@
              map  { $_->path }
              grep { $_->read !~ m/use v6;/ }
              $dist->get_perl_language_files();
-} else {
+}
+else {
     @files = <@ARGV>;
 }
 

Modified: branches/ops_pct/t/codingstd/pod_description.t
==============================================================================
--- branches/ops_pct/t/codingstd/pod_description.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/pod_description.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2009, The Perl Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 use strict;

Modified: branches/ops_pct/t/codingstd/pod_syntax.t
==============================================================================
--- branches/ops_pct/t/codingstd/pod_syntax.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/pod_syntax.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2009, The Perl Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 use strict;

Modified: branches/ops_pct/t/codingstd/trailing_space.t
==============================================================================
--- branches/ops_pct/t/codingstd/trailing_space.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/codingstd/trailing_space.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -9,6 +9,8 @@
 use Parrot::Distribution;
 use Test::More tests => 1;
 use Parrot::Test::Util::Runloop;
+use Parrot::Config qw/ %PConfig /;
+use File::Spec;
 
 =head1 NAME
 
@@ -34,7 +36,6 @@
 =cut
 
 my $DIST = Parrot::Distribution->new;
-
 my @files = @ARGV ? <@ARGV> : (
     $DIST->get_c_language_files(),
     $DIST->get_make_language_files(),
@@ -42,9 +43,20 @@
     $DIST->get_pir_language_files(),
 );
 
+# skip files listed in the __DATA__ section
+my $build_dir = $PConfig{build_dir};
+my %skip_files;
+while (<DATA>) {
+    next if m{^#};
+    next if m{^\s*$};
+    chomp;
+    $_ = File::Spec->catfile($build_dir, $_);
+    $skip_files{$_}++;
+}
+
 Parrot::Test::Util::Runloop->testloop(
     name     => 'no trailing whitespace',
-    files    => [@files],
+    files    => [grep {not $skip_files{$_->path}} @files],
     per_line => sub { $_[0] !~ m{[ \t]$}m },
     diag_prefix => 'Trailing space or tab char found'
 );
@@ -55,3 +67,13 @@
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4:
+
+__DATA__
+# generated by tools/dev/nci_thunk_gen.pir
+src/nci/core_thunks.c
+src/nci/extra_thunks.c
+t/examples/pir.t
+t/examples/tutorial.t
+t/library/getopt_obj.t
+t/perl/Parrot_Test.t
+t/run/options.t

Modified: branches/ops_pct/t/compilers/imcc/imcpasm/optc.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/imcpasm/optc.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/imcc/imcpasm/optc.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -307,22 +307,9 @@
 i 1 j 3 k 2
 OUT
 
-sub permute (&@) {
-    my $code = shift;
-    my @idx  = 0 .. $#_;
-    while ( $code->( @_[@idx] ) ) {
-        my $p = $#idx;
-        --$p while $idx[ $p - 1 ] > $idx[$p];
-        my $q = $p or return;
-        push @idx, reverse splice @idx, $p;
-        ++$q while $idx[ $p - 1 ] > $idx[$q];
-        @idx[ $p - 1, $q ] = @idx[ $q, $p - 1 ];
-    }
-}
-
 my @array = ( 'i', 'j', 'k' );
 my @b;
-permute { push @b, "@_" } @array;
+my_permute( sub { push @b, "@_" }, @array );
 my $x;
 my $y;
 foreach $x (@b) {
@@ -356,7 +343,7 @@
 undef @b;
 
 @array = ( 'i', 'j', 'k', 'l' );
-permute { push @b, "@_" } @array;
+my_permute( sub { push @b, "@_" }, @array );
 foreach $x (@b) {
     $x =~ tr/ /,/;
     $y = $x;
@@ -392,7 +379,7 @@
 undef @b;
 
 @array = ( 'i', 'j' );
-permute { push @b, "@_" } @array;
+my_permute( sub { push @b, "@_" }, @array );
 foreach $x (@b) {
     $x =~ tr/ /,/;
     $y = $x;
@@ -419,6 +406,18 @@
 OUT
 }
 
+sub my_permute {
+    my $code = shift;
+    my @idx  = 0 .. $#_;
+    while ( $code->( @_[@idx] ) ) {
+        my $p = $#idx;
+        --$p while $idx[ $p - 1 ] > $idx[$p];
+        my $q = $p or return;
+        push @idx, reverse splice @idx, $p;
+        ++$q while $idx[ $p - 1 ] > $idx[$q];
+        @idx[ $p - 1, $q ] = @idx[ $q, $p - 1 ];
+    }
+}
 # Local Variables:
 #   mode: cperl
 #   cperl-indent-level: 4

Modified: branches/ops_pct/t/compilers/imcc/reg/spill.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/reg/spill.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/imcc/reg/spill.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,718 +1,372 @@
-#!perl
-# Copyright (C) 2001-2008, Parrot Foundation.
+#!parrot
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
-use strict;
-use warnings;
-use lib qw( . lib ../lib ../../lib );
-use Parrot::Test tests => 9;
+.sub main :main
+    .include 'test_more.pir'
+    plan(78)
+
+    test_allocate_1()
+    test_spill_1()
+    test_pcc_arg_overflow_1()
+    test_spill_4()
+.end
 
-pir_output_is( <<'CODE', <<'OUT', "allocate 1" );
+.sub test_allocate_1
 #
 # Test the ability of the register allocator to
 # generate spills.
 #
-.sub test :main
-        $I0 = 0
-        $I1 = 1
-        $I2 = 2
-        $I3 = 3
-        $I4 = 4
-        $I5 = 5
-        $I6 = 6
-        $I7 = 7
-        $I8 = 8
-        $I9 = 9
-
-        $I10 = 10
-        $I11 = 11
-        $I12 = 12
-        $I13 = 13
-        $I14 = 14
-        $I15 = 15
-        $I16 = 16
-        $I17 = 17
-        $I18 = 18
-        $I19 = 19
-
-        $I20 = 20
-        $I21 = 21
-        $I22 = 22
-        $I23 = 23
-        $I24 = 24
-        $I25 = 25
-        $I26 = 26
-        $I27 = 27
-        $I28 = 28
-        $I29 = 29
-
-        $I30 = 30
-        $I31 = 31
-        $I32 = 32
-        $I33 = 33
-        $I34 = 34
-        $I35 = 35
-        $I36 = 36
-        $I37 = 37
-        $I38 = 38
-        $I39 = 39
-
-        $I40 = 40
-
-        print $I0
-        print "\n"
-        print $I10
-        print "\n"
-        print $I20
-        print "\n"
-        print $I30
-        print "\n"
-        print $I40
-        print "\n"
+    $I0 = 0
+    $I1 = 1
+    $I2 = 2
+    $I3 = 3
+    $I4 = 4
+    $I5 = 5
+    $I6 = 6
+    $I7 = 7
+    $I8 = 8
+    $I9 = 9
+
+    $I10 = 10
+    $I11 = 11
+    $I12 = 12
+    $I13 = 13
+    $I14 = 14
+    $I15 = 15
+    $I16 = 16
+    $I17 = 17
+    $I18 = 18
+    $I19 = 19
+
+    $I20 = 20
+    $I21 = 21
+    $I22 = 22
+    $I23 = 23
+    $I24 = 24
+    $I25 = 25
+    $I26 = 26
+    $I27 = 27
+    $I28 = 28
+    $I29 = 29
+
+    $I30 = 30
+    $I31 = 31
+    $I32 = 32
+    $I33 = 33
+    $I34 = 34
+    $I35 = 35
+    $I36 = 36
+    $I37 = 37
+    $I38 = 38
+    $I39 = 39
+
+    $I40 = 40
+
+    is($I0, 0, "allocate 1")
+    is($I10, 10, "allocate 1")
+    is($I20, 20, "allocate 1")
+    is($I30, 30, "allocate 1")
+    is($I40, 40, "allocate 1")
 
-        end
 .end
-CODE
-0
-10
-20
-30
-40
-OUT
 
-pir_output_is( <<'CODE', <<'OUT', "spill 1" );
+.sub test_spill_1
 #
 # Test the ability of the register allocator to
 # generate spills.
 #
-.sub test :main
-        $I0 = 0
-        $I1 = 1
-        $I2 = 2
-        $I3 = 3
-        $I4 = 4
-        $I5 = 5
-        $I6 = 6
-        $I7 = 7
-        $I8 = 8
-        $I9 = 9
-
-        $I10 = 10
-        $I11 = 11
-        $I12 = 12
-        $I13 = 13
-        $I14 = 14
-        $I15 = 15
-        $I16 = 16
-        $I17 = 17
-        $I18 = 18
-        $I19 = 19
-
-        $I20 = 20
-        $I21 = 21
-        $I22 = 22
-        $I23 = 23
-        $I24 = 24
-        $I25 = 25
-        $I26 = 26
-        $I27 = 27
-        $I28 = 28
-        $I29 = 29
-
-        $I30 = 30
-        $I31 = 31
-        $I32 = 32
-        $I33 = 33
-        $I34 = 34
-        $I35 = 35
-        $I36 = 36
-        $I37 = 37
-        $I38 = 38
-        $I39 = 39
-
-        $I40 = $I0 + $I1
-        $I41 = $I2 + $I3
-        $I42 = $I4 + $I5
-        $I43 = $I6 + $I7
-        $I44 = $I8 + $I9
-
-        $I50 = $I10 + $I11
-        $I51 = $I12 + $I13
-        $I52 = $I14 + $I15
-        $I53 = $I16 + $I17
-        $I54 = $I18 + $I19
-
-        $I60 = $I20 + $I21
-        $I61 = $I22 + $I23
-        $I62 = $I24 + $I25
-        $I63 = $I26 + $I27
-        $I64 = $I28 + $I29
-
-        $I70 = $I30 + $I31
-        $I71 = $I32 + $I33
-        $I72 = $I34 + $I35
-        $I73 = $I36 + $I37
-        $I74 = $I38 + $I39
-
-        print $I0
-        print $I1
-        print $I2
-        print $I3
-        print $I4
-        print $I5
-        print $I6
-        print $I7
-        print $I8
-        print $I9
-        print "\n"
-        print $I10
-        print $I11
-        print $I12
-        print $I13
-        print $I14
-        print $I15
-        print $I16
-        print $I17
-        print $I18
-        print $I19
-        print "\n"
-        print $I20
-        print $I21
-        print $I22
-        print $I23
-        print $I24
-        print $I25
-        print $I26
-        print $I27
-        print $I28
-        print $I29
-        print "\n"
-        print $I30
-        print $I31
-        print $I32
-        print $I33
-        print $I34
-        print $I35
-        print $I36
-        print $I37
-        print $I38
-        print $I39
-        print "\n"
-        print $I40
-        print $I41
-        print $I42
-        print $I43
-        print $I44
-        print "\n"
-        print $I50
-        print $I51
-        print $I52
-        print $I53
-        print $I54
-        print "\n"
-        print $I60
-        print $I61
-        print $I62
-        print $I63
-        print $I64
-        print "\n"
-        print $I70
-        print $I71
-        print $I72
-        print $I73
-        print $I74
-        print "\n"
-        end
+    $I0 = 0
+    $I1 = 1
+    $I2 = 2
+    $I3 = 3
+    $I4 = 4
+    $I5 = 5
+    $I6 = 6
+    $I7 = 7
+    $I8 = 8
+    $I9 = 9
+
+    $I10 = 10
+    $I11 = 11
+    $I12 = 12
+    $I13 = 13
+    $I14 = 14
+    $I15 = 15
+    $I16 = 16
+    $I17 = 17
+    $I18 = 18
+    $I19 = 19
+
+    $I20 = 20
+    $I21 = 21
+    $I22 = 22
+    $I23 = 23
+    $I24 = 24
+    $I25 = 25
+    $I26 = 26
+    $I27 = 27
+    $I28 = 28
+    $I29 = 29
+
+    $I30 = 30
+    $I31 = 31
+    $I32 = 32
+    $I33 = 33
+    $I34 = 34
+    $I35 = 35
+    $I36 = 36
+    $I37 = 37
+    $I38 = 38
+    $I39 = 39
+
+    $I40 = $I0 + $I1
+    $I41 = $I2 + $I3
+    $I42 = $I4 + $I5
+    $I43 = $I6 + $I7
+    $I44 = $I8 + $I9
+
+    $I50 = $I10 + $I11
+    $I51 = $I12 + $I13
+    $I52 = $I14 + $I15
+    $I53 = $I16 + $I17
+    $I54 = $I18 + $I19
+
+    $I60 = $I20 + $I21
+    $I61 = $I22 + $I23
+    $I62 = $I24 + $I25
+    $I63 = $I26 + $I27
+    $I64 = $I28 + $I29
+
+    $I70 = $I30 + $I31
+    $I71 = $I32 + $I33
+    $I72 = $I34 + $I35
+    $I73 = $I36 + $I37
+    $I74 = $I38 + $I39
+
+    is($I0, 0, 'spill 1')
+    is($I1, 1, 'spill 1')
+    is($I2, 2, 'spill 1')
+    is($I3, 3, 'spill 1')
+    is($I4, 4, 'spill 1')
+    is($I5, 5, 'spill 1')
+    is($I6, 6, 'spill 1')
+    is($I7, 7, 'spill 1')
+    is($I8, 8, 'spill 1')
+    is($I9, 9, 'spill 1')
+    is($I10, 10, 'spill 1')
+    is($I11, 11, 'spill 1')
+    is($I12, 12, 'spill 1')
+    is($I13, 13, 'spill 1')
+    is($I14, 14, 'spill 1')
+    is($I15, 15, 'spill 1')
+    is($I16, 16, 'spill 1')
+    is($I17, 17, 'spill 1')
+    is($I18, 18, 'spill 1')
+    is($I19, 19, 'spill 1')
+    is($I20, 20, 'spill 1')
+    is($I21, 21, 'spill 1')
+    is($I22, 22, 'spill 1')
+    is($I23, 23, 'spill 1')
+    is($I24, 24, 'spill 1')
+    is($I25, 25, 'spill 1')
+    is($I26, 26, 'spill 1')
+    is($I27, 27, 'spill 1')
+    is($I28, 28, 'spill 1')
+    is($I29, 29, 'spill 1')
+    is($I30, 30, 'spill 1')
+    is($I31, 31, 'spill 1')
+    is($I32, 32, 'spill 1')
+    is($I33, 33, 'spill 1')
+    is($I34, 34, 'spill 1')
+    is($I35, 35, 'spill 1')
+    is($I36, 36, 'spill 1')
+    is($I37, 37, 'spill 1')
+    is($I38, 38, 'spill 1')
+    is($I39, 39, 'spill 1')
+    is($I40, 1, 'spill 1')
+    is($I41, 5, 'spill 1')
+    is($I42, 9, 'spill 1')
+    is($I43, 13, 'spill 1')
+    is($I44, 17, 'spill 1')
+    is($I50, 21, 'spill 1')
+    is($I51, 25, 'spill 1')
+    is($I52, 29, 'spill 1')
+    is($I53, 33, 'spill 1')
+    is($I54, 37, 'spill 1')
+    is($I60, 41, 'spill 1')
+    is($I61, 45, 'spill 1')
+    is($I62, 49, 'spill 1')
+    is($I63, 53, 'spill 1')
+    is($I64, 57, 'spill 1')
+    is($I70, 61, 'spill 1')
+    is($I71, 65, 'spill 1')
+    is($I72, 69, 'spill 1')
+    is($I73, 73, 'spill 1')
+    is($I74, 77, 'spill 1')
 .end
-CODE
-0123456789
-10111213141516171819
-20212223242526272829
-30313233343536373839
-1591317
-2125293337
-4145495357
-6165697377
-OUT
 
-pir_output_is( <<'CODE', <<'OUT', "pcc arg overflow 1" );
+.sub test_pcc_arg_overflow_1
 #
 # Test the ability of the register allocator in
 # combination with PCC calling convention and overflow arguments.
 # Slightly redundant with tests in t/syn/pcc.t but please leave.
 #
-.sub test :main
-  _foo(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40)
-  end
+    _foo(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40)
 .end
+
 .sub _foo
-  .param int i1
-  .param int i2
-  .param int i3
-  .param int i4
-  .param int i5
-  .param int i6
-  .param int i7
-  .param int i8
-  .param int i9
-  .param int i10
-  .param int i11
-  .param int i12
-  .param int i13
-  .param int i14
-  .param int i15
-  .param int i16
-  .param int i17
-  .param int i18
-  .param int i19
-  .param int i20
-  .param int i21
-  .param int i22
-  .param int i23
-  .param int i24
-  .param int i25
-  .param int i26
-  .param int i27
-  .param int i28
-  .param int i29
-  .param int i30
-  .param int i31
-  .param int i32
-  .param int i33
-  .param int i34
-  .param int i35
-  .param int i36
-  .param int i37
-  .param int i38
-  .param int i39
-  .param int i40
-  print i1
-  print "\n"
-  print i2
-  print "\n"
-  print i3
-  print "\n"
-  print i4
-  print "\n"
-  print i5
-  print "\n"
-  print i10
-  print "\n"
-  print i15
-  print "\n"
-  print i20
-  print "\n"
-  print i25
-  print "\n"
-  print i30
-  print "\n"
-  print i35
-  print "\n"
-  print i40
-  print "\n"
-  end
+    .param int i1
+    .param int i2
+    .param int i3
+    .param int i4
+    .param int i5
+    .param int i6
+    .param int i7
+    .param int i8
+    .param int i9
+    .param int i10
+    .param int i11
+    .param int i12
+    .param int i13
+    .param int i14
+    .param int i15
+    .param int i16
+    .param int i17
+    .param int i18
+    .param int i19
+    .param int i20
+    .param int i21
+    .param int i22
+    .param int i23
+    .param int i24
+    .param int i25
+    .param int i26
+    .param int i27
+    .param int i28
+    .param int i29
+    .param int i30
+    .param int i31
+    .param int i32
+    .param int i33
+    .param int i34
+    .param int i35
+    .param int i36
+    .param int i37
+    .param int i38
+    .param int i39
+    .param int i40
+    is(i1, 1, 'pcc arg overflow 1')
+    is(i2, 2, 'pcc arg overflow 1')
+    is(i3, 3, 'pcc arg overflow 1')
+    is(i4, 4, 'pcc arg overflow 1')
+    is(i5, 5, 'pcc arg overflow 1')
+    is(i10, 10, 'pcc arg overflow 1')
+    is(i15, 15, 'pcc arg overflow 1')
+    is(i20, 20, 'pcc arg overflow 1')
+    is(i25, 25, 'pcc arg overflow 1')
+    is(i30, 30, 'pcc arg overflow 1')
+    is(i35, 35, 'pcc arg overflow 1')
+    is(i40, 40, 'pcc arg overflow 1')
 .end
-CODE
-1
-2
-3
-4
-5
-10
-15
-20
-25
-30
-35
-40
-OUT
 
-pir_output_is( <<'CODE', <<'OUT', "spill 4" );
+.sub test_spill_4
 #
 # Another spill test
 #
-.sub test :main
-        $I0 = 0
-        $I1 = 1
-        $I2 = 2
-        $I3 = 3
-        $I4 = 4
-        $I5 = 5
-        $I6 = 6
-        $I7 = 7
-        $I8 = 8
-        $I9 = 9
-
-        $I10 = 10
-        $I11 = 11
-        $I12 = 12
-        $I13 = 13
-        $I14 = 14
-        $I15 = 15
-        $I16 = 16
-        $I17 = 17
-        $I18 = 18
-        $I19 = 19
-
-        $I20 = 20
-        $I21 = 21
-        $I22 = 22
-        $I23 = 23
-        $I24 = 24
-        $I25 = 25
-        $I26 = 26
-        $I27 = 27
-        $I28 = 28
-        $I29 = 29
-
-        $I30 = 30
-        $I31 = 31
-        $I32 = 32
-        $I33 = 33
-        $I34 = 34
-        $I35 = 35
-        $I36 = 36
-        $I37 = 37
-        $I38 = 38
-        $I39 = 39
-
-        if $I0 != 0 goto err
-        if $I1 != 1 goto err
-        if $I2 != 2 goto err
-        if $I3 != 3 goto err
-        if $I4 != 4 goto err
-        if $I5 != 5 goto err
-        if $I6 != 6 goto err
-        if $I7 != 7 goto err
-        if $I8 != 8 goto err
-        if $I9 != 9 goto err
-        if $I10 != 10 goto err
-        if $I11 != 11 goto err
-        if $I12 != 12 goto err
-        if $I13 != 13 goto err
-        if $I14 != 14 goto err
-        if $I15 != 15 goto err
-        if $I16 != 16 goto err
-        if $I17 != 17 goto err
-        if $I18 != 18 goto err
-        if $I19 != 19 goto err
-        if $I20 != 20 goto err
-        if $I21 != 21 goto err
-        if $I22 != 22 goto err
-        if $I23 != 23 goto err
-        if $I24 != 24 goto err
-        if $I25 != 25 goto err
-        if $I26 != 26 goto err
-        if $I27 != 27 goto err
-        if $I28 != 28 goto err
-        if $I29 != 29 goto err
-        if $I30 != 30 goto err
-        if $I31 != 31 goto err
-        if $I32 != 32 goto err
-        if $I33 != 33 goto err
-        if $I34 != 34 goto err
-        if $I35 != 35 goto err
-        if $I36 != 36 goto err
-        if $I37 != 37 goto err
-        if $I38 != 38 goto err
-        if $I39 != 39 goto err
-
-        print "ok\n"
-        end
-err:
-        print "nok\n"
-        end
-.end
-CODE
-ok
-OUT
-
-pir_output_is( <<'CODE', <<'OUT', "bug #32996" );
-
-.namespace ["Foo"]
-
-.sub __biginit :main
-        $S0 = "Foo"
-        newclass $P0, $S0
-        $P1 = new $S0
-        $P1.'method1'()
-        $P1.'method2'()
-
-        $P2 = new $S0
-        $P2.'method1'()
-        $P2.'method2'()
-
-        $P3 = new $S0
-        $P3.'method1'()
-        $P3.'method2'()
-
-        $P4 = new $S0
-        $P4.'method1'()
-        $P4.'method2'()
-
-        $P5 = new $S0
-        $P5.'method1'()
-        $P5.'method2'()
-
-        $P6 = new $S0
-        $P6.'method1'()
-        $P6.'method2'()
-
-        $P7 = new $S0
-        $P7.'method1'()
-        $P7.'method2'()
-
-        $P8 = new $S0
-        $P8.'method1'()
-        $P8.'method2'()
-
-        $P9 = new $S0
-        $P9.'method1'()
-        $P9.'method2'()
-
-        $P10 = new $S0
-        $P10.'method1'()
-        $P10.'method2'()
-
-        $P11 = new $S0
-        $P11.'method1'()
-        $P11.'method2'()
-
-        $P12 = new $S0
-        $P12.'method1'()
-        $P12.'method2'()
-
-        $P13 = new $S0
-        $P13.'method1'()
-        $P13.'method2'()
-
-        $P14 = new $S0
-        $P14.'method1'()
-        $P14.'method2'()
-
-        $P15 = new $S0
-        $P15.'method1'()
-        $P15.'method2'()
-
-        $P1.'method1'()
-        $P1.'method2'()
-        $P2.'method1'()
-        $P2.'method2'()
-        $P3.'method1'()
-        $P3.'method2'()
-        $P4.'method1'()
-        $P4.'method2'()
-        $P5.'method1'()
-        $P5.'method2'()
-        $P6.'method1'()
-        $P6.'method2'()
-        $P7.'method1'()
-        $P7.'method2'()
-        $P8.'method1'()
-        $P8.'method2'()
-        $P9.'method1'()
-        $P9.'method2'()
-        $P10.'method1'()
-        $P10.'method2'()
-        $P11.'method1'()
-        $P11.'method2'()
-        $P12.'method1'()
-        $P12.'method2'()
-        $P13.'method1'()
-        $P13.'method2'()
-        $P14.'method1'()
-        $P14.'method2'()
-        $P15.'method1'()
-        $P15.'method2'()
-
-        end
-.end
+    $I0 = 0
+    $I1 = 1
+    $I2 = 2
+    $I3 = 3
+    $I4 = 4
+    $I5 = 5
+    $I6 = 6
+    $I7 = 7
+    $I8 = 8
+    $I9 = 9
+
+    $I10 = 10
+    $I11 = 11
+    $I12 = 12
+    $I13 = 13
+    $I14 = 14
+    $I15 = 15
+    $I16 = 16
+    $I17 = 17
+    $I18 = 18
+    $I19 = 19
+
+    $I20 = 20
+    $I21 = 21
+    $I22 = 22
+    $I23 = 23
+    $I24 = 24
+    $I25 = 25
+    $I26 = 26
+    $I27 = 27
+    $I28 = 28
+    $I29 = 29
+
+    $I30 = 30
+    $I31 = 31
+    $I32 = 32
+    $I33 = 33
+    $I34 = 34
+    $I35 = 35
+    $I36 = 36
+    $I37 = 37
+    $I38 = 38
+    $I39 = 39
+
+    if $I0 != 0 goto err
+    if $I1 != 1 goto err
+    if $I2 != 2 goto err
+    if $I3 != 3 goto err
+    if $I4 != 4 goto err
+    if $I5 != 5 goto err
+    if $I6 != 6 goto err
+    if $I7 != 7 goto err
+    if $I8 != 8 goto err
+    if $I9 != 9 goto err
+    if $I10 != 10 goto err
+    if $I11 != 11 goto err
+    if $I12 != 12 goto err
+    if $I13 != 13 goto err
+    if $I14 != 14 goto err
+    if $I15 != 15 goto err
+    if $I16 != 16 goto err
+    if $I17 != 17 goto err
+    if $I18 != 18 goto err
+    if $I19 != 19 goto err
+    if $I20 != 20 goto err
+    if $I21 != 21 goto err
+    if $I22 != 22 goto err
+    if $I23 != 23 goto err
+    if $I24 != 24 goto err
+    if $I25 != 25 goto err
+    if $I26 != 26 goto err
+    if $I27 != 27 goto err
+    if $I28 != 28 goto err
+    if $I29 != 29 goto err
+    if $I30 != 30 goto err
+    if $I31 != 31 goto err
+    if $I32 != 32 goto err
+    if $I33 != 33 goto err
+    if $I34 != 34 goto err
+    if $I35 != 35 goto err
+    if $I36 != 36 goto err
+    if $I37 != 37 goto err
+    if $I38 != 38 goto err
+    if $I39 != 39 goto err
 
-.sub method1 :method
-        print "In method 1\n"
-        .begin_return
-        .end_return
-.end
-
-.sub method2 :method
-        print "In method 2\n"
-        .begin_return
-        .end_return
-.end
-CODE
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-In method 1
-In method 2
-OUT
-
-sub repeat {
-    my ( $template, $count, %substs ) = @_;
-    my ( $code, $n, $start );
-    foreach ( split( /\n/, $template ) ) {
-        $n     = $count;
-        $start = 0;
-        if (/^(.*)=(\w+)=(.*)/) {
-            my ( $pre, $key, $post ) = ( $1, $2, $3 );
-            if ( $key eq 'ARGS' ) {
-                my @params;
-                for my $i ( 0 .. $n - 1 ) {
-                    ( my $new = $substs{$key} ) =~ s/\<index\>/$i/g;
-                    push @params, $new;
-                }
-                $code .= $pre . join( ',', @params ) . "$post\n";
-                next;
-            }
-            $start = $n / 2 if ( $key eq 'TESTS2' );
-            for my $i ( $start .. $n - 1 ) {
-                ( my $new = $substs{$key} ) =~ s/\<index\>/$i/g;
-                $code .= "$pre$new$post\n";
-            }
-        }
-        else {
-            $code .= "$_\n";
-        }
-    }
-
-    return $code;
-}
-my $template2 = <<'TEMPLATE';
-.sub _main
-    =LOCALS=
-    =INITS=
-    _sub(=ARGS=)
-    =TESTS2=
-    end
-fail:
-    print "failed\n"
-    end
-.end
-.sub _sub
-    =PARAMS=
-    =TESTS=
-    print "all params ok\n"
+    ok(1, 'spill 4')
     .return()
-fail:
-    print "failed\n"
-    end
+  err:
+    ok(0, 'spill 4')
 .end
-TEMPLATE
-
-my $code = repeat(
-    $template2, 18,
-    LOCALS => ".local pmc a<index>\n\ta<index> = new 'Integer'",
-    INITS  => 'a<index> = <index>',
-    ARGS   => 'a<index>',
-    PARAMS => '.param pmc a<index>',
-    TESTS  => "set \$I0, a<index>\nne \$I0, <index>, fail",
-    TESTS2 => "set \$I0, a<index>\nne \$I0, <index>, fail"
-);
-
-pir_output_is( $code, <<'OUT', "overflow pmcs 18 spill" );
-all params ok
-OUT
-
-$code = repeat(
-    $template2, 22,
-    LOCALS => ".local pmc a<index>\n\ta<index> = new 'Integer'",
-    INITS  => 'a<index> = <index>',
-    ARGS   => 'a<index>',
-    PARAMS => '.param pmc a<index>',
-    TESTS  => "set \$I0, a<index>\nne \$I0, <index>, fail",
-    TESTS2 => "set \$I0, a<index>\nne \$I0, <index>, fail"
-);
-
-pir_output_is( $code, <<'OUT', "overflow pmcs 22 spill" );
-all params ok
-OUT
-
-$code = repeat(
-    $template2, 40,
-    LOCALS => ".local pmc a<index>\n\ta<index> = new 'Integer'",
-    INITS  => 'a<index> = <index>',
-    ARGS   => 'a<index>',
-    PARAMS => '.param pmc a<index>',
-    TESTS  => "set \$I0, a<index>\nne \$I0, <index>, fail",
-    TESTS2 => "set \$I0, a<index>\nne \$I0, <index>, fail"
-);
-
-pir_output_is( $code, <<'OUT', "overflow pmcs 40 spill" );
-all params ok
-OUT
-
-$code = repeat(
-    $template2, 60,
-    LOCALS => ".local pmc a<index>\n\ta<index> = new 'Integer'",
-    INITS  => 'a<index> = <index>',
-    ARGS   => 'a<index>',
-    PARAMS => '.param pmc a<index>',
-    TESTS  => "set \$I0, a<index>\nne \$I0, <index>, fail",
-    TESTS2 => "set \$I0, a<index>\nne \$I0, <index>, fail"
-);
-
-pir_output_is( $code, <<'OUT', "overflow pmcs 60 spill" );
-all params ok
-OUT
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Copied: branches/ops_pct/t/compilers/imcc/reg/spill_old.t (from r44740, trunk/t/compilers/imcc/reg/spill_old.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/t/compilers/imcc/reg/spill_old.t	Sun Mar  7 19:33:20 2010	(r44743, copy of r44740, trunk/t/compilers/imcc/reg/spill_old.t)
@@ -0,0 +1,298 @@
+#!perl
+# Copyright (C) 2001-2008, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use lib qw( . lib ../lib ../../lib );
+use Parrot::Test tests => 5;
+
+pir_output_is( <<'CODE', <<'OUT', "bug #32996" );
+
+.namespace ["Foo"]
+
+.sub __biginit :main
+        $S0 = "Foo"
+        newclass $P0, $S0
+        $P1 = new $S0
+        $P1.'method1'()
+        $P1.'method2'()
+
+        $P2 = new $S0
+        $P2.'method1'()
+        $P2.'method2'()
+
+        $P3 = new $S0
+        $P3.'method1'()
+        $P3.'method2'()
+
+        $P4 = new $S0
+        $P4.'method1'()
+        $P4.'method2'()
+
+        $P5 = new $S0
+        $P5.'method1'()
+        $P5.'method2'()
+
+        $P6 = new $S0
+        $P6.'method1'()
+        $P6.'method2'()
+
+        $P7 = new $S0
+        $P7.'method1'()
+        $P7.'method2'()
+
+        $P8 = new $S0
+        $P8.'method1'()
+        $P8.'method2'()
+
+        $P9 = new $S0
+        $P9.'method1'()
+        $P9.'method2'()
+
+        $P10 = new $S0
+        $P10.'method1'()
+        $P10.'method2'()
+
+        $P11 = new $S0
+        $P11.'method1'()
+        $P11.'method2'()
+
+        $P12 = new $S0
+        $P12.'method1'()
+        $P12.'method2'()
+
+        $P13 = new $S0
+        $P13.'method1'()
+        $P13.'method2'()
+
+        $P14 = new $S0
+        $P14.'method1'()
+        $P14.'method2'()
+
+        $P15 = new $S0
+        $P15.'method1'()
+        $P15.'method2'()
+
+        $P1.'method1'()
+        $P1.'method2'()
+        $P2.'method1'()
+        $P2.'method2'()
+        $P3.'method1'()
+        $P3.'method2'()
+        $P4.'method1'()
+        $P4.'method2'()
+        $P5.'method1'()
+        $P5.'method2'()
+        $P6.'method1'()
+        $P6.'method2'()
+        $P7.'method1'()
+        $P7.'method2'()
+        $P8.'method1'()
+        $P8.'method2'()
+        $P9.'method1'()
+        $P9.'method2'()
+        $P10.'method1'()
+        $P10.'method2'()
+        $P11.'method1'()
+        $P11.'method2'()
+        $P12.'method1'()
+        $P12.'method2'()
+        $P13.'method1'()
+        $P13.'method2'()
+        $P14.'method1'()
+        $P14.'method2'()
+        $P15.'method1'()
+        $P15.'method2'()
+
+        end
+.end
+
+.sub method1 :method
+        print "In method 1\n"
+        .begin_return
+        .end_return
+.end
+
+.sub method2 :method
+        print "In method 2\n"
+        .begin_return
+        .end_return
+.end
+CODE
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+In method 1
+In method 2
+OUT
+
+sub repeat {
+    my ( $template, $count, %substs ) = @_;
+    my ( $code, $n, $start );
+    foreach ( split( /\n/, $template ) ) {
+        $n     = $count;
+        $start = 0;
+        if (/^(.*)=(\w+)=(.*)/) {
+            my ( $pre, $key, $post ) = ( $1, $2, $3 );
+            if ( $key eq 'ARGS' ) {
+                my @params;
+                for my $i ( 0 .. $n - 1 ) {
+                    ( my $new = $substs{$key} ) =~ s/\<index\>/$i/g;
+                    push @params, $new;
+                }
+                $code .= $pre . join( ',', @params ) . "$post\n";
+                next;
+            }
+            $start = $n / 2 if ( $key eq 'TESTS2' );
+            for my $i ( $start .. $n - 1 ) {
+                ( my $new = $substs{$key} ) =~ s/\<index\>/$i/g;
+                $code .= "$pre$new$post\n";
+            }
+        }
+        else {
+            $code .= "$_\n";
+        }
+    }
+
+    return $code;
+}
+my $template2 = <<'TEMPLATE';
+.sub _main
+    =LOCALS=
+    =INITS=
+    _sub(=ARGS=)
+    =TESTS2=
+    end
+fail:
+    print "failed\n"
+    end
+.end
+.sub _sub
+    =PARAMS=
+    =TESTS=
+    print "all params ok\n"
+    .return()
+fail:
+    print "failed\n"
+    end
+.end
+TEMPLATE
+
+my $code = repeat(
+    $template2, 18,
+    LOCALS => ".local pmc a<index>\n\ta<index> = new 'Integer'",
+    INITS  => 'a<index> = <index>',
+    ARGS   => 'a<index>',
+    PARAMS => '.param pmc a<index>',
+    TESTS  => "set \$I0, a<index>\nne \$I0, <index>, fail",
+    TESTS2 => "set \$I0, a<index>\nne \$I0, <index>, fail"
+);
+
+pir_output_is( $code, <<'OUT', "overflow pmcs 18 spill" );
+all params ok
+OUT
+
+$code = repeat(
+    $template2, 22,
+    LOCALS => ".local pmc a<index>\n\ta<index> = new 'Integer'",
+    INITS  => 'a<index> = <index>',
+    ARGS   => 'a<index>',
+    PARAMS => '.param pmc a<index>',
+    TESTS  => "set \$I0, a<index>\nne \$I0, <index>, fail",
+    TESTS2 => "set \$I0, a<index>\nne \$I0, <index>, fail"
+);
+
+pir_output_is( $code, <<'OUT', "overflow pmcs 22 spill" );
+all params ok
+OUT
+
+$code = repeat(
+    $template2, 40,
+    LOCALS => ".local pmc a<index>\n\ta<index> = new 'Integer'",
+    INITS  => 'a<index> = <index>',
+    ARGS   => 'a<index>',
+    PARAMS => '.param pmc a<index>',
+    TESTS  => "set \$I0, a<index>\nne \$I0, <index>, fail",
+    TESTS2 => "set \$I0, a<index>\nne \$I0, <index>, fail"
+);
+
+pir_output_is( $code, <<'OUT', "overflow pmcs 40 spill" );
+all params ok
+OUT
+
+$code = repeat(
+    $template2, 60,
+    LOCALS => ".local pmc a<index>\n\ta<index> = new 'Integer'",
+    INITS  => 'a<index> = <index>',
+    ARGS   => 'a<index>',
+    PARAMS => '.param pmc a<index>',
+    TESTS  => "set \$I0, a<index>\nne \$I0, <index>, fail",
+    TESTS2 => "set \$I0, a<index>\nne \$I0, <index>, fail"
+);
+
+pir_output_is( $code, <<'OUT', "overflow pmcs 60 spill" );
+all params ok
+OUT
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/t/compilers/imcc/syn/hll.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/hll.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/imcc/syn/hll.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -81,3 +81,10 @@
 Stack
 OUT
 }
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/t/compilers/imcc/syn/labels.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/labels.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/imcc/syn/labels.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 .sub main :main
@@ -41,9 +41,9 @@
 .end
 CODE
 .end
+
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/compilers/imcc/syn/objects.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/objects.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/imcc/syn/objects.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 .sub main :main
@@ -29,7 +29,7 @@
 .namespace [ ]
 .namespace []
 
-.sub test 
+.sub test
     $I0 = 42
 .end
 CODE
@@ -291,8 +291,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/compilers/imcc/syn/op.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/op.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/imcc/syn/op.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 .sub test :main
@@ -320,8 +320,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/compilers/imcc/syn/scope.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/scope.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/imcc/syn/scope.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 .sub main :main
@@ -20,8 +20,8 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:
+

Modified: branches/ops_pct/t/compilers/imcc/syn/subflags.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/subflags.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/imcc/syn/subflags.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,10 +1,10 @@
 #!./parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
 
-t/compilers/imcc/syn/subflags.t 
+t/compilers/imcc/syn/subflags.t
 
 =head1 SYNOPSIS
 
@@ -185,3 +185,9 @@
 .sub 'anon4' :subid('subid4')
     .return ('anon4')
 .end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/compilers/imcc/syn/veracity.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/veracity.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/imcc/syn/veracity.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 .sub test :main
@@ -21,7 +21,7 @@
     ok(1, "1 is true")
     .return()
   not_one:
-    ok(0, "1 is true")  
+    ok(0, "1 is true")
 .end
 
 .sub test_negative_integers
@@ -88,7 +88,7 @@
     goto neg_zero
   not_zero:
     ok(0, "0.0 is false")
-  neg_zero: 
+  neg_zero:
     $N0 = -0.0
     if $N0 goto not_neg_zero
     ok(1, "-0.0 is false")
@@ -108,8 +108,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/compilers/json/from_parrot.t
==============================================================================
--- branches/ops_pct/t/compilers/json/from_parrot.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/json/from_parrot.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -452,8 +452,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/compilers/pct/past.t
==============================================================================
--- branches/ops_pct/t/compilers/pct/past.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/pct/past.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -72,9 +72,9 @@
 }
 OUT
 
-## TODO: test that return() is taken from the type of value when not specified
+## TT #1476: test that return() is taken from the type of value when not specified
 
-## TODO: check the rest of the PAST::Var attributes
+## TT #1476: check the rest of the PAST::Var attributes
 pir_output_is( <<'CODE', <<'OUT', 'dump PAST::Var node in visual format' );
 .sub _main :main
     load_bytecode 'PCT.pbc'

Modified: branches/ops_pct/t/compilers/pge/00-basic.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/00-basic.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/pge/00-basic.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,6 @@
 #!./parrot
-# Copyright (C) 2006-2008, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
+# $Id$
 
 =head1 NAME
 

Modified: branches/ops_pct/t/compilers/pge/02-match.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/02-match.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/pge/02-match.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -56,8 +56,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/compilers/pge/03-optable.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/03-optable.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/pge/03-optable.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,8 +1,7 @@
 #!parrot
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
-# Copyright (C) 2006-2009, Parrot Foundation.
-
 .sub main :main
     .include 'test_more.pir'
     plan(37)
@@ -184,8 +183,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/compilers/pge/04-compile.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/04-compile.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/pge/04-compile.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,5 @@
 #!parrot
+# Copyright (C) 2007-2009, Parrot Foundation.
 # $Id$
 
 # Copyright (C) 2007-2009, Parrot Foundation.
@@ -76,10 +77,8 @@
     is($P3, 'ok 1', 'compile into a new grammar, 2x')
 .end
 
-
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/compilers/pge/06-grammar.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/06-grammar.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/pge/06-grammar.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,6 @@
 #!./parrot
-# Copyright (C) 2006-2008, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
+# $Id$
 
 =head1 NAME
 

Modified: branches/ops_pct/t/compilers/pge/pge-hs.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/pge-hs.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/pge/pge-hs.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
-#!parrot 
-# Copyright (C) 2001-2009, Parrot Foundation.
+#!parrot
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -43,8 +43,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/compilers/tge/basic.t
==============================================================================
--- branches/ops_pct/t/compilers/tge/basic.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/tge/basic.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2005-2009, Parrot Foundation.
+# Copyright (C) 2005-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -70,15 +70,14 @@
 
 .sub test_malformed_string_in_r11890_under_linux_i386
     lives_ok(<<'CODE', '"Malformed string" in r11890 under Linux i386')
-.sub main 
+.sub main
     load_bytecode "TGE.pbc"
 .end
 CODE
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/compilers/tge/parser.t
==============================================================================
--- branches/ops_pct/t/compilers/tge/parser.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/compilers/tge/parser.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2005-2009, Parrot Foundation.
+# Copyright (C) 2005-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -59,7 +59,7 @@
 .sub test_parse_failure
     $S0 = "Syntax error at line 4, near \"transform \"\n"
     throws_substring(<<'CODE', $S0, 'parse failure')
-.sub main 
+.sub main
     load_bytecode 'TGE.pbc'
     .local string source
     source = <<'GRAMMAR'
@@ -79,8 +79,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/configure/008-file_based_configuration.t
==============================================================================
--- branches/ops_pct/t/configure/008-file_based_configuration.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/configure/008-file_based_configuration.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 # 008-file_based_configuration.t
 
@@ -20,17 +20,17 @@
     my $configfile = q{examples/config/file/configwithfatalstep};
     my ($args, $steps_list_ref) = _test_good_config_file($configfile);
 
-    ok(! defined $args->{maintainer}, 
+    ok(! defined $args->{maintainer},
         "Configuring from testfoobar: 'maintainer' not defined, as expected");
     is($args->{'verbose-step'}, 'init::hints',
         "Configuring from testfoobar: 'init::hints' is verbose step");
     is($args->{'fatal-step'}, 'init::hints',
         "Configuring from testfoobar: 'init::hints' is fatal step");
-    ok($args->{nomanicheck}, 
+    ok($args->{nomanicheck},
         "Configuring from testfoobar: will omit check of MANIFEST");
     is($args->{file}, $configfile,
         "Configuring from testfoobar: config file correctly stored");
-    ok($args->{debugging}, 
+    ok($args->{debugging},
         "Configuring from testfoobar: debugging turned on");
     my %steps_seen = map {$_ => 1} @{ $steps_list_ref };
     ok(exists $steps_seen{'init::manifest'},
@@ -42,18 +42,18 @@
 {
     my $configfile = q{examples/config/file/configcompiler};
     my ($args, $steps_list_ref) = _test_good_config_file($configfile);
-    
+
     my $c_compiler = '/usr/bin/gcc';
     my $cplusplus_compiler = '/usr/bin/g++';
-    ok(! defined $args->{maintainer}, 
+    ok(! defined $args->{maintainer},
         "Configuring from yourfoobar: 'maintainer' not defined as expected");
     is($args->{'verbose-step'}, 'init::hints',
         "Configuring from yourfoobar: 'init::hints' is verbose step");
-    ok($args->{nomanicheck}, 
+    ok($args->{nomanicheck},
         "Configuring from yourfoobar: will omit check of MANIFEST");
     is($args->{file}, $configfile,
         "Configuring from yourfoobar: config file correctly stored");
-    ok($args->{debugging}, 
+    ok($args->{debugging},
         "Configuring from yourfoobar: debugging turned on");
     is($args->{cc}, $c_compiler,
         "Configuring from yourfoobar: C compiler is $c_compiler");
@@ -76,13 +76,13 @@
     my $configfile = q{t/configure/testlib/verbosefoobar};
     my ($args, $steps_list_ref) = _test_good_config_file($configfile);
 
-    ok(! defined $args->{maintainer}, 
+    ok(! defined $args->{maintainer},
         "Configuring from verbosefoobar: 'maintainer' not defined as expected");
-    ok($args->{nomanicheck}, 
+    ok($args->{nomanicheck},
         "Configuring from verbosefoobar: will omit check of MANIFEST");
     is($args->{file}, $configfile,
         "Configuring from verbosefoobar: config file correctly stored");
-    ok($args->{debugging}, 
+    ok($args->{debugging},
         "Configuring from verbosefoobar: debugging turned on");
     is($args->{verbose}, 1,
         "Configuring from verbosefoobar: verbose output is on");

Modified: branches/ops_pct/t/configure/025-options_test.t
==============================================================================
--- branches/ops_pct/t/configure/025-options_test.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/configure/025-options_test.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -7,7 +7,6 @@
 use warnings;
 use Carp;
 use Cwd;
-use Data::Dumper;
 use File::Temp qw( tempdir );
 use Test::More tests =>  7;
 use lib qw( lib );

Modified: branches/ops_pct/t/configure/026-options_test.t
==============================================================================
--- branches/ops_pct/t/configure/026-options_test.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/configure/026-options_test.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -7,7 +7,6 @@
 use warnings;
 use Carp;
 use Cwd;
-use Data::Dumper;
 use Test::More tests => 20;
 use lib qw( lib );
 use IO::CaptureOutput qw| capture |;

Modified: branches/ops_pct/t/configure/034-step.t
==============================================================================
--- branches/ops_pct/t/configure/034-step.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/configure/034-step.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -114,7 +114,7 @@
         \$stderr
     );
     ok($rv, "genfile() returned true when warning expected" );
-    like( $stderr, qr/value for 'foobar'/, "got expected warning" );
+    like( $stderr, qr/value for '\@foobar\@'/, "got expected warning" );
 
     unlink $dummy or croak "Unable to delete file after testing";
     chdir $cwd    or croak "Unable to change back to starting directory";

Modified: branches/ops_pct/t/distro/meta_yml.t
==============================================================================
--- branches/ops_pct/t/distro/meta_yml.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/distro/meta_yml.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -30,3 +30,10 @@
 plan skip_all => "Test::CPAN::Meta 0.08 required for testing META.yml" if $@;
 
 meta_yaml_ok();
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/t/dynoplibs/math.t
==============================================================================
--- branches/ops_pct/t/dynoplibs/math.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/dynoplibs/math.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -51,18 +51,18 @@
 .end
 
 .sub test_3_arg_int
-    rand $I0, 5, 25
-    lt $I0, 5, fail1
-    ok(1, 'rand returns a number greater than or equal to 5')
+    rand $I0, 50, 75
+    lt $I0, 50, fail1
+    ok(1, 'rand returns a number greater than or equal to 50')
     goto upper
 fail1:
-    ok(0, 'rand returns a number greater than or equal to 5')
+    ok(0, 'rand returns a number greater than or equal to 50')
 upper:
-    gt $I0, 25, fail2
-    ok(1, 'rand returns a number less than or equal to 25')
+    gt $I0, 75, fail2
+    ok(1, 'rand returns a number less than or equal to 75')
     goto finish
 fail2:
-    ok(0, 'rand returns a number less than or equal to 25')
+    ok(0, 'rand returns a number less than or equal to 75')
 finish:
 .end
 
@@ -99,18 +99,18 @@
 .end
 
 .sub test_3_arg_num
-    rand $N0, 5, 25
-    lt $N0, 5, fail1
-    ok(1, 'rand returns a number greater than or equal to 5')
+    rand $N0, 50, 75
+    lt $N0, 25, fail1
+    ok(1, 'rand returns a number greater than or equal to 50')
     goto upper
 fail1:
-    ok(0, 'rand returns a number greater than or equal to 5')
+    ok(0, 'rand returns a number greater than or equal to 50')
 upper:
-    gt $N0, 25, fail2
-    ok(1, 'rand returns a number less than or equal to 25')
+    gt $N0, 75, fail2
+    ok(1, 'rand returns a number less than or equal to 75')
     goto finish
 fail2:
-    ok(0, 'rand returns a number less than or equal to 25')
+    ok(0, 'rand returns a number less than or equal to 75')
 finish:
 .end
 
@@ -129,18 +129,18 @@
 
 .sub test_local_nums_2_arg
     .local num foo, bar
-    foo = rand 5.0, 25.0
-    lt foo, 5, fail1
-    ok(1, 'rand returns a number greater than or equal to 5')
+    foo = rand 50.0, 75.0
+    lt foo, 50, fail1
+    ok(1, 'rand returns a number greater than or equal to 50')
     goto upper
 fail1:
-    ok(0, 'rand returns a number greater than or equal to 5')
+    ok(0, 'rand returns a number greater than or equal to 50')
 upper:
-    gt foo, 25, fail2
-    ok(1, 'rand returns a number less than or equal to 25')
+    gt foo, 75, fail2
+    ok(1, 'rand returns a number less than or equal to 75')
     goto finish
 fail2:
-    ok(0, 'rand returns a number less than or equal to 25')
+    ok(0, 'rand returns a number less than or equal to 75')
 finish:
 .end
 
@@ -163,24 +163,23 @@
 
 .sub test_local_ints
     .local int foo, bar
-    foo = rand 5, 25
-    lt foo, 5, fail1
-    ok(1, 'rand returns a number greater than or equal to 5')
+    foo = rand 50, 75
+    lt foo, 50, fail1
+    ok(1, 'rand returns a number greater than or equal to 50')
     goto upper
 fail1:
-    ok(0, 'rand returns a number greater than or equal to 5')
+    ok(0, 'rand returns a number greater than or equal to 50')
 upper:
-    gt foo, 25, fail2
-    ok(1, 'rand returns a number less than or equal to 25')
+    gt foo, 75, fail2
+    ok(1, 'rand returns a number less than or equal to 75')
     goto finish
 fail2:
-    ok(0, 'rand returns a number less than or equal to 25')
+    ok(0, 'rand returns a number less than or equal to 75')
 finish:
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/dynoplibs/obscure.t
==============================================================================
--- branches/ops_pct/t/dynoplibs/obscure.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/dynoplibs/obscure.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -99,8 +99,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/dynpmc/foo2.t
==============================================================================
--- branches/ops_pct/t/dynpmc/foo2.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/dynpmc/foo2.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -23,7 +23,7 @@
     test_dynpmcs_can_use_super()
 .end
 
-.sub test_dynpmcs_can_use_super 
+.sub test_dynpmcs_can_use_super
     $P0 = loadlib 'foo_group'
     $P1 = new "Foo2"
 
@@ -32,8 +32,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4: filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/dynpmc/gdbmhash.t
==============================================================================
--- branches/ops_pct/t/dynpmc/gdbmhash.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/dynpmc/gdbmhash.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,21 +1,14 @@
-#! perl
-# Copyright (C) 2005-2008, Parrot Foundation.
+#! parrot
+# Copyright (C) 2005-2010, Parrot Foundation.
 # $Id$
 
-use strict;
-use warnings;
-use lib qw( . lib ../lib ../../lib );
-use Test::More;
-use Parrot::Test;
-use Parrot::Config;
-
 =head1 NAME
 
 t/dynpmc/gdbmhash.t - test the GDBMHash PMC
 
 =head1 SYNOPSIS
 
-    % prove t/dynpmc/gdbmhash.t
+    % parrot t/dynpmc/gdbmhash.t
 
 =head1 DESCRIPTION
 
@@ -23,77 +16,95 @@
 
 =cut
 
-if ( $PConfig{has_gdbm} ) {
-    plan tests => 13;
-}
-else {
-    plan skip_all => "No gdbm library available";
-}
+.sub main
+    .include 'test_more.pir'
+    .include 'iglobals.pasm'
+    .local pmc config_hash, interp
+
+    plan(48)
+    interp = getinterp
+    config_hash = interp[.IGLOBALS_CONFIG_HASH]
+    $S0 = config_hash['has_gdbm']
+    unless $S0 goto no_gdbm
+
+    test_typeof()
+    test_interface()
+    test_get_integer()
+    test_get_bool()
+    test_modify_an_entry()
+    test_exists_keyed()
+    test_set_string_with_string_key()
+    test_set_string_with_pmc_key()
+    test_set_pmc_with_string_key()
+    test_set_pmc_with_pmc_key()
+    test_set_intval_with_string_key()
+    test_set_floatval_with_pmc_key()
+    test_delete_keyed()
+    .return()
+  no_gdbm:
+    skip(48, 'No gdbm library available')
+.end
+
+.sub unlink
+    .param string filename
+    new $P0, 'OS'
+    push_eh _handler
+    $P0.'rm'(filename)
+    .return ()
+  _handler:
+    .local pmc e
+    .get_results (e)
+    printerr "# Cannot unlink "
+    printerr filename
+    printerr " ("
+    printerr e
+    printerr ")\n"
+.end
 
-# PIR fragment for setting up a GDBM Hash
-my $new_hash_1 = << 'CODE';
-.sub test :main
+.sub test_typeof
     .local pmc gdbmhash_lib
     gdbmhash_lib = loadlib "gdbmhash"
     .local pmc hash_1
     hash_1 = new "GDBMHash"
-CODE
-
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "typeof" );
-
     .local string type
     type = typeof hash_1
-    print type
-    print "\n"
+    is(type, 'GDBMHash', 'typeof')
 .end
-CODE
-GDBMHash
-OUTPUT
-unlink('gdbm_hash_1');
 
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "check whether interface is done" );
+.sub test_interface
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
     .local int bool1
     does bool1, hash_1, "scalar"
-    print bool1
-    print "\n"
+    is(bool1, 0, 'check whether interface is done')
     does bool1, hash_1, "hash"
-    print bool1
-    print "\n"
+    is(bool1, 1, 'check whether interface is done')
     does bool1, hash_1, "no_interface"
-    print bool1
-    print "\n"
+    is(bool1, 0, 'check whether interface is done')
 .end
-CODE
-0
-1
-0
-OUTPUT
-unlink('gdbm_hash_1');
 
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "get_integer" );
+.sub test_get_integer
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
     .local int hash_size
     hash_size = hash_1
-    print "An unitialized GDBMHash has size "
-    print hash_size
-    print ".\n"
+    is(hash_size, 0, 'An unitialized GDBMHash has size 0')
 
     hash_1 = "gdbm_hash_1"
     hash_size = hash_1
-    print "An GDBMHash for a new file has size "
-    print hash_size
-    print ".\n"
+    is(hash_size, 0, 'An GDBMHash for a new file has size 0')
 
     hash_1["key1"] = "val1"
     hash_size = hash_1
-    print "After one assignment GDBMHash has size "
-    print hash_size
-    print ".\n"
+    is(hash_size, 1, 'After one assignment GDBMHash has size 1')
 
     hash_1["key2"] = "val2"
     hash_size = hash_1
-    print "After two assignments GDBMHash has size "
-    print hash_size
-    print ".\n"
+    is(hash_size, 2, 'After two assignments GDBMHash has size 2')
 
     hash_1["key3"] = "val3"
     hash_1["key4"] = "val4"
@@ -109,225 +120,208 @@
     hash_1["key14"] = "val14"
     hash_1["key15"] = "val15"
     hash_size = hash_1
-    print "After 15 assignments GDBMHash has size "
-    print hash_size
-    print ".\n"
+    is(hash_size, 15, 'After 15 assignments GDBMHash has size 15')
 
     delete hash_1["key7"]
     delete hash_1["key9"]
 
     hash_size = hash_1
-    print "After 15 assignments and 2 deletes GDBMHash has size "
-    print hash_size
-    print ".\n"
-
+    is(hash_size, 13, 'After 15 assignments and 2 deletes GDBMHash has size 13')
 
+    hash_1."close"()
+    unlink('gdbm_hash_1')
 .end
-CODE
-An unitialized GDBMHash has size 0.
-An GDBMHash for a new file has size 0.
-After one assignment GDBMHash has size 1.
-After two assignments GDBMHash has size 2.
-After 15 assignments GDBMHash has size 15.
-After 15 assignments and 2 deletes GDBMHash has size 13.
-OUTPUT
-unlink('gdbm_hash_1');
 
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "get_bool" );
-    print "An uninitialized GDBMHash is"
+.sub test_get_bool
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
     if hash_1 goto HASH1_IS_1
-    print " not"
+    ok(1, 'An uninitialized GDBMHash is not')
 HASH1_IS_1:
-    print ".\n"
 
-    hash_1 = "gdbm_hash_1"
-    print "An GDBMHash for a new file is"
+    hash_1 = "gdbm_hash_2"
     if hash_1 goto HASH1_IS_2
-    print " not"
+    ok(1, 'A GDBMHash for a new file is not')
 HASH1_IS_2:
-    print ".\n"
 
     hash_1["key1"] = "val1"
-    print "After one insert the GDBMHash is"
     if hash_1 goto HASH1_IS_3
-    print " not"
+    ok(0, 'After one insert the GDBMHash is not')
 HASH1_IS_3:
-    print ".\n"
+    ok(1, 'After one insert the GDBMHash is')
 
+    hash_1."close"()
+    unlink('gdbm_hash_2')
 .end
-CODE
-An uninitialized GDBMHash is not.
-An GDBMHash for a new file is not.
-After one insert the GDBMHash is.
-OUTPUT
-unlink('gdbm_hash_1');
 
 # The value is a STRING, with umlaut
 # The key used for insertion is a STRING.
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "modify an entry" );
-    hash_1 = "gdbm_hash_1"
+.sub test_modify_an_entry
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
+    hash_1 = "gdbm_hash_3"
 
     .local pmc    val_pmc
 
-    hash_1["Schluessel"] = "Wert urspruenglich\n"
+    hash_1["Schluessel"] = "Wert urspruenglich"
     val_pmc = hash_1["Schluessel"]
-    print val_pmc
-    hash_1["Schluessel"] = "Wert geaendert\n"
+    is(val_pmc, 'Wert urspruenglich', 'modify an entry')
+    hash_1["Schluessel"] = "Wert geaendert"
     val_pmc = hash_1["Schluessel"]
-    print val_pmc
-    hash_1["Schluessel"] = "Wert nocheinmal geaendert\n"
+    is(val_pmc, 'Wert geaendert', 'modify an entry')
+    hash_1["Schluessel"] = "Wert nocheinmal geaendert"
     val_pmc = hash_1["Schluessel"]
-    print val_pmc
-    hash_1["Schluessel"] = "Wert urspruenglich\n"
+    is(val_pmc, 'Wert nocheinmal geaendert', 'modify an entry')
+    hash_1["Schluessel"] = "Wert urspruenglich"
     val_pmc = hash_1["Schluessel"]
-    print val_pmc
+    is(val_pmc, 'Wert urspruenglich', 'modify an entry')
+
+    hash_1."close"()
+    unlink('gdbm_hash_3')
 .end
-CODE
-Wert urspruenglich
-Wert geaendert
-Wert nocheinmal geaendert
-Wert urspruenglich
-OUTPUT
-unlink('gdbm_hash_1');
 
 # The value is a STRING.
 # The key used for insertion is a STRING.
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "exists_keyed" );
-    hash_1 = "gdbm_hash_1"
+.sub test_exists_keyed
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
+    hash_1 = "gdbm_hash_4"
 
-    hash_1["Schluessel"] = "Wert\n"
+    hash_1["Schluessel"] = "Wert"
 
     .local int exist_flag
     exist_flag = exists hash_1["a"]
-    print exist_flag
-    print "\n"
+    is(exist_flag, 0, 'exists keyed')
     exist_flag = exists hash_1["Schluessel"]
-    print exist_flag
-    print "\n"
+    is(exist_flag, 1, 'exists keyed')
 
     .local pmc key_out
     key_out = new 'String'
     key_out = "b"
     exist_flag = exists hash_1[key_out]
-    print exist_flag
-    print "\n"
+    is(exist_flag, 0, 'exists keyed')
     key_out = "Schluessel"
     exist_flag = exists hash_1[key_out]
-    print exist_flag
-    print "\n"
+    is(exist_flag, 1, 'exists keyed')
+
+    hash_1."close"()
+    unlink('gdbm_hash_4')
 .end
-CODE
-0
-1
-0
-1
-OUTPUT
-unlink('gdbm_hash_1');
 
 # The value is a STRING.
 # The key used for insertion is a STRING.
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "set STRING with STRING key" );
-    hash_1 = "gdbm_hash_1"
+.sub test_set_string_with_string_key
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
+    hash_1 = "gdbm_hash_5"
 
-    hash_1["Schluessel"] = "Wert\n"
+    hash_1["Schluessel"] = "Wert"
 
     .local pmc    val_pmc
     .local string val_string
 
     val_string = hash_1["Schluessel"]
-    print val_string
+    is(val_string, 'Wert', 'set string with string key')
     val_pmc = hash_1["Schluessel"]
-    print val_pmc
+    is(val_pmc, 'Wert', 'set string with string key')
     .local pmc key_out
     key_out = new 'String'
     key_out = "Schluessel"
     val_string = hash_1[key_out]
-    print val_string
+    is(val_string, 'Wert', 'set string with string key')
     val_pmc = hash_1[key_out]
-    print val_pmc
+    is(val_pmc, 'Wert', 'set string with string key')
+
+    hash_1."close"()
+    unlink('gdbm_hash_5')
 .end
-CODE
-Wert
-Wert
-Wert
-Wert
-OUTPUT
-unlink('gdbm_hash_1');
 
 # The value is a STRING.
 # The key used for insertion is a PMC.
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "set STRING with a PMC key" );
-    hash_1 = "gdbm_hash_1"
+.sub test_set_string_with_pmc_key
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
+    hash_1 = "gdbm_hash_6"
 
     .local pmc key_pmc
     key_pmc = new 'String'
     key_pmc = "Schluessel"
-    hash_1[key_pmc] = "Wert\n"
+    hash_1[key_pmc] = "Wert"
 
     .local pmc    val_pmc
     .local string val_string
 
     val_string = hash_1["Schluessel"]
-    print val_string
+    is(val_string, 'Wert', 'set string with pmc key')
     val_pmc = hash_1["Schluessel"]
-    print val_pmc
+    is(val_pmc, 'Wert', 'set string with pmc key')
     .local pmc key2
     key2 = new 'String'
     key2 = "Schluessel"
     val_string = hash_1[key2]
-    print val_string
+    is(val_string, 'Wert', 'set string with pmc key')
     val_pmc = hash_1[key2]
-    print val_pmc
+    is(val_pmc, 'Wert', 'set string with pmc key')
+
+    hash_1."close"()
+    unlink('gdbm_hash_6')
 .end
-CODE
-Wert
-Wert
-Wert
-Wert
-OUTPUT
-unlink('gdbm_hash_1');
 
 # The value is a PMC.
 # The key used for insertion is a STRING.
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "set PMC with STRING key" );
-    hash_1 = "gdbm_hash_1"
+.sub test_set_pmc_with_string_key
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
+    hash_1 = "gdbm_hash_7"
 
     .local pmc val
     val = new 'String'
-    val = "Wert\n"
+    val = "Wert"
     hash_1["Schluessel"] = val
 
     .local pmc    val_pmc
     .local string val_string
 
     val_string = hash_1["Schluessel"]
-    print val_string
+    is(val_string, 'Wert', 'set pmc with string key')
     val_pmc = hash_1["Schluessel"]
-    print val_pmc
+    is(val_pmc, 'Wert', 'set pmc with string key')
     .local pmc key_out
     key_out = new 'String'
     key_out = "Schluessel"
     val_string = hash_1[key_out]
-    print val_string
+    is(val_string, 'Wert', 'set pmc with string key')
     val_pmc = hash_1[key_out]
-    print val_pmc
+    is(val_pmc, 'Wert', 'set pmc with string key')
+
+    hash_1."close"()
+    unlink('gdbm_hash_7')
 .end
-CODE
-Wert
-Wert
-Wert
-Wert
-OUTPUT
-unlink('gdbm_hash_1');
 
 # The value is a PMC.
 # The key used for insertion is a PMC.
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "set PMC with a PMC key" );
-    hash_1 = "gdbm_hash_1"
+.sub test_set_pmc_with_pmc_key
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
+    hash_1 = "gdbm_hash_8"
 
     .local pmc val
     val = new 'String'
-    val = "Wert\n"
+    val = "Wert"
     .local pmc key_pmc
     key_pmc = new 'String'
     key_pmc = "Schluessel"
@@ -337,29 +331,29 @@
     .local string val_string
 
     val_string = hash_1["Schluessel"]
-    print val_string
+    is(val_string, 'Wert', 'set pmc with pmc key')
     val_pmc = hash_1["Schluessel"]
-    print val_pmc
+    is(val_pmc, 'Wert', 'set pmc with pmc key')
     .local pmc key2
     key2 = new 'String'
     key2 = "Schluessel"
     val_string = hash_1[key2]
-    print val_string
+    is(val_string, 'Wert', 'set pmc with pmc key')
     val_pmc = hash_1[key2]
-    print val_pmc
+    is(val_pmc, 'Wert', 'set pmc with pmc key')
+
+    hash_1."close"()
+    unlink('gdbm_hash_8')
 .end
-CODE
-Wert
-Wert
-Wert
-Wert
-OUTPUT
-unlink('gdbm_hash_1');
 
 # The value is an INTVAL
 # The key used for insertion is a STRING.
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "set INTVAL with STRING key" );
-    hash_1 = "gdbm_hash_1"
+.sub test_set_intval_with_string_key
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
+    hash_1 = "gdbm_hash_9"
 
     hash_1["Schluessel"] = -11012005
 
@@ -367,33 +361,29 @@
     .local string val_string
 
     val_string = hash_1["Schluessel"]
-    print val_string
-    print "\n"
+    is(val_string, -11012005, 'set intval with a string key')
     val_pmc = hash_1["Schluessel"]
-    print val_pmc
-    print "\n"
+    is(val_pmc, -11012005, 'set intval with a string key')
     .local pmc key_out
     key_out = new 'String'
     key_out = "Schluessel"
     val_string = hash_1[key_out]
-    print val_string
-    print "\n"
+    is(val_string, -11012005, 'set intval with a string key')
     val_pmc = hash_1[key_out]
-    print val_pmc
-    print "\n"
+    is(val_pmc, -11012005, 'set intval with a string key')
+
+    hash_1."close"()
+    unlink('gdbm_hash_9')
 .end
-CODE
--11012005
--11012005
--11012005
--11012005
-OUTPUT
-unlink('gdbm_hash_1');
 
 # The value is a FLOATVAL.
 # The key used for insertion is a PMC.
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "set FLOATVAL with a PMC key" );
-    hash_1 = "gdbm_hash_1"
+.sub test_set_floatval_with_pmc_key
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
+    hash_1 = "gdbm_hash_10"
 
     .local pmc key_pmc
     key_pmc = new 'String'
@@ -404,62 +394,48 @@
     .local string val_string
 
     val_string = hash_1["Schluessel"]
-    print val_string
-    print "\n"
+    is(val_string, -1101.2005, 'set float with a pmc key')
     val_pmc = hash_1["Schluessel"]
-    print val_pmc
-    print "\n"
+    is(val_pmc, -1101.2005, 'set float with a pmc key')
     .local pmc key2
     key2 = new 'String'
     key2 = "Schluessel"
     val_string = hash_1[key2]
-    print val_string
-    print "\n"
+    is(val_string, -1101.2005, 'set float with a pmc key')
     val_pmc = hash_1[key2]
-    print val_pmc
-    print "\n"
+    is(val_pmc, -1101.2005, 'set float with a pmc key')
+
+    hash_1."close"()
+    unlink('gdbm_hash_10')
 .end
-CODE
--1101.2005
--1101.2005
--1101.2005
--1101.2005
-OUTPUT
-unlink('gdbm_hash_1');
 
-pir_output_is( $new_hash_1 . << 'CODE', << 'OUTPUT', "delete_keyed" );
-    hash_1 = "gdbm_hash_1"
+.sub test_delete_keyed
+    .local pmc gdbmhash_lib
+    gdbmhash_lib = loadlib "gdbmhash"
+    .local pmc hash_1
+    hash_1 = new "GDBMHash"
+    hash_1 = "gdbm_hash_11"
 
     .local int exist_flag
     .local int hash_size
 
     exist_flag = exists hash_1["a"]
-    print '"a" exists: '
-    print exist_flag
-    print "\n"
+    is(exist_flag, 0, 'delete keyed')
 
     hash_1["a"] = "A"
     exist_flag = exists hash_1["a"]
-    print '"a" exists: '
-    print exist_flag
-    print "\n"
+    is(exist_flag, 1, 'delete keyed')
 
     delete hash_1["a"]
     exist_flag = exists hash_1["a"]
-    print '"a" exists: '
-    print exist_flag
-    print "\n"
-.end
-CODE
-"a" exists: 0
-"a" exists: 1
-"a" exists: 0
-OUTPUT
-unlink('gdbm_hash_1');
+    is(exist_flag, 0, 'delete keyed')
+
+    hash_1."close"()
+    unlink('gdbm_hash_11')
+.end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/dynpmc/rational.t
==============================================================================
--- branches/ops_pct/t/dynpmc/rational.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/dynpmc/rational.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -658,3 +658,10 @@
 -1
 1
 OUTPUT
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/t/dynpmc/subproxy.t
==============================================================================
--- branches/ops_pct/t/dynpmc/subproxy.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/dynpmc/subproxy.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2005-2009, Parrot Foundation.
+# Copyright (C) 2005-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -65,8 +65,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/examples/catchall.t
==============================================================================
--- branches/ops_pct/t/examples/catchall.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/examples/catchall.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2007-2008 Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -30,7 +30,7 @@
 my $manifest = maniread('MANIFEST');
 my %files;
 foreach my $file (keys %$manifest) {
-  next unless $file =~ m{^examples/.*(pir|pasm)$}; 
+  next unless $file =~ m{^examples/.*(pir|pasm)$};
   next if $file =~ m{^examples/tutorial}; # all are tested in tutorial.t
   next if $file =~ m{^examples/pir/befunge}; # language, not testable here
   next if $file =~ m{^examples/languages}; # language, not testable here
@@ -43,7 +43,7 @@
 plan tests => scalar keys %files;
 
 foreach my $file (sort keys %files) {
-    my $cmd = File::Spec->curdir() . $PConfig{slash} . 
+    my $cmd = File::Spec->curdir() . $PConfig{slash} .
               $PConfig{test_prog} . " -o " . File::Spec->devnull() . " " .
               $file;
 

Modified: branches/ops_pct/t/examples/pod.t
==============================================================================
--- branches/ops_pct/t/examples/pod.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/examples/pod.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2009, The Perl Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -58,27 +58,27 @@
     my $cmd = File::Spec->curdir() . $PConfig{slash} .
               $PConfig{test_prog} . " -o " . File::Spec->devnull() . " " .
               $tempfile . ' 2> ' . $err_tempfile;
- 
+
     my $description = join (':', map {$snippet->{$_}}
         qw(file line type modifier));
 
     my $rc = system($cmd);
     open my $errout_fh, '<', $err_tempfile;
 
-    my $error_output; 
+    my $error_output;
     {
         undef local $/;
         $error_output = <$errout_fh>;
     }
- 
+
     my $todo = 0;
     $todo = 1 if ($snippet->{modifier} =~ /TODO|INVALID/);
     TODO: {
-        # conditionally TODO the file.
+        # conditionally todo the file.
         local $TODO = 'invalid code' if $todo;
 
         is ($error_output,'',$description);
-    } 
+    }
 }
 
 sub get_samples {
@@ -112,7 +112,7 @@
             $snippet->{line} = $.;
             $snippet->{type} = $2;
             $snippet->{modifier} = defined($4) ? $4 : '';
-            $target = $1; 
+            $target = $1;
         }
     }
 
@@ -152,7 +152,7 @@
 
 C<PASM> and C<PIR> are both valid target languages.
 
-Additionally, you can add the following modifiers (prepending with an 
+Additionally, you can add the following modifiers (prepending with an
 underscore).
 
 =over 4
@@ -173,7 +173,7 @@
 to be updated:
 
  =begin PIR_FRAGMENT_INVALID
-   
+
     find_type $I1, 'Integer'
 
  =end PIR_FRAGMENT_INVALID

Modified: branches/ops_pct/t/examples/tutorial.t
==============================================================================
--- branches/ops_pct/t/examples/tutorial.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/examples/tutorial.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2007-2008 Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -27,7 +27,7 @@
 my $manifest = maniread('MANIFEST');
 my %files;
 foreach my $file (keys %$manifest) {
-  next unless $file =~ m{examples/tutorial/.*pir$}; 
+  next unless $file =~ m{examples/tutorial/.*pir$};
   $files{$file}=undef;
 }
 
@@ -244,7 +244,8 @@
             @todo = (todo => $reason) if defined $reason;
         }
         example_output_is( $tutorial, $expected, @todo );
-    } else {
+    }
+    else {
         fail($tutorial);
     }
 }

Modified: branches/ops_pct/t/harness
==============================================================================
--- branches/ops_pct/t/harness	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/harness	Sun Mar  7 19:33:20 2010	(r44743)
@@ -4,7 +4,6 @@
 
 use strict;
 use warnings;
-use Data::Dumper;$Data::Dumper::Indent=1;
 use lib qw( lib );
 
 use Getopt::Std;

Modified: branches/ops_pct/t/library/cgi_query_hash.t
==============================================================================
--- branches/ops_pct/t/library/cgi_query_hash.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/cgi_query_hash.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,6 @@
 #!./parrot
-# Copyright (C) 2006-2008, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
+# $Id$
 
 =head1 NAME
 

Modified: branches/ops_pct/t/library/configure.t
==============================================================================
--- branches/ops_pct/t/library/configure.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/configure.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -159,8 +159,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/library/coroutine.t
==============================================================================
--- branches/ops_pct/t/library/coroutine.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/coroutine.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -145,9 +145,9 @@
 	.param pmc tree2
 
 	.local pmc coro_class
-    coro_class = get_class 'Parrot::Coroutine'
+    coro_class = get_class ['Parrot'; 'Coroutine']
     unless null coro_class goto found
-	printerr "Bug:  Can't find 'Parrot::Coroutine' class.\n"
+	printerr "Bug:  Can't find ['Parrot'; 'Coroutine'] class.\n"
 	die 5, 1
 found:
 	.local pmc coro1, coro2

Modified: branches/ops_pct/t/library/getopt_obj.t
==============================================================================
--- branches/ops_pct/t/library/getopt_obj.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/getopt_obj.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 use strict;

Modified: branches/ops_pct/t/library/md5.t
==============================================================================
--- branches/ops_pct/t/library/md5.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/md5.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -682,8 +682,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/library/mime_base64.t
==============================================================================
--- branches/ops_pct/t/library/mime_base64.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/mime_base64.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,6 @@
 #!./parrot
-# Copyright (C) 2006-2008, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
+# $Id$
 
 =head1 NAME
 

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

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

Modified: branches/ops_pct/t/library/p6object.t
==============================================================================
--- branches/ops_pct/t/library/p6object.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/p6object.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!./parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -165,7 +165,7 @@
     jklobj = new ['Foo';'JKL']
     $S0 = jklobj.'bar'()
     is($S0, 'ABC::foo', 'JKL.bar via add_method')
-    
+
     .local pmc hll_tests
     hll_tests = get_root_global ['myhll'], 'hll_tests'
     hll_tests()
@@ -174,7 +174,7 @@
     $P0 = p6meta.'new_class'('OMG::Lol')
     omgproto = get_hll_global ['OMG'], 'Lol'
     omgprotoexport = get_hll_global ['OMG';'EXPORT';'ALL'], 'Lol'
-    is_same(omgproto,omgprotoexport,'protoobject added to ["EXPORT";"ALL"] subnamespace') 
+    is_same(omgproto,omgprotoexport,'protoobject added to ["EXPORT";"ALL"] subnamespace')
 
     .return ()
 .end
@@ -496,7 +496,7 @@
     p6obj_tests(wxyproto, 'WXY', 'isa'=>'WXY P6object', 'can'=>'foo', 'who'=>wxyns)
 
     ## build a Parrotclass
-    .local pmc vwx_nsarray, vwx_ns, vwx_parrotclass, vwx_proto 
+    .local pmc vwx_nsarray, vwx_ns, vwx_parrotclass, vwx_proto
     vwx_nsarray = new 'ResizablePMCArray'
     push vwx_nsarray, 'VWX'
     vwx_ns = get_hll_namespace vwx_nsarray
@@ -523,3 +523,9 @@
 =back
 
 =cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/library/parrotlib.t
==============================================================================
--- branches/ops_pct/t/library/parrotlib.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/parrotlib.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -107,8 +107,7 @@
 =cut
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/library/pg.t
==============================================================================
--- branches/ops_pct/t/library/pg.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/pg.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!./parrot
-# Copyright (C) 2006-2008, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -226,7 +226,7 @@
     test.'ok'($I0, 'con is false after finish')
     test.'finish'()
     end
-no_pg:	
+no_pg:
     .local pmc ex
     .local string msg
     .get_results(ex)

Modified: branches/ops_pct/t/library/protoobject.t
==============================================================================
--- branches/ops_pct/t/library/protoobject.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/protoobject.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -146,8 +146,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/library/rand.t
==============================================================================
--- branches/ops_pct/t/library/rand.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/rand.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -55,8 +55,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/library/tcl_glob.t
==============================================================================
--- branches/ops_pct/t/library/tcl_glob.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/tcl_glob.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!./parrot
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -106,3 +106,9 @@
 
    .return(boolean)
 .end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/library/test_class.t
==============================================================================
--- branches/ops_pct/t/library/test_class.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/test_class.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,4 +1,6 @@
 #! parrot
+# Copyright (C) 2008-2010, Parrot Foundation.
+# $Id$
 
 .sub 'init_test_builder_tester'
     load_bytecode 'Test/Builder/Tester.pbc'
@@ -96,3 +98,9 @@
     ok( 4, 'bar second' )
     ok( 5, 'bar third' )
 .end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

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

Modified: branches/ops_pct/t/library/uuid.t
==============================================================================
--- branches/ops_pct/t/library/uuid.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/library/uuid.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2008-2009, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -124,8 +124,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/manifest/01-basic.t
==============================================================================
--- branches/ops_pct/t/manifest/01-basic.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/manifest/01-basic.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 # 01-basic.t
 
@@ -19,22 +19,22 @@
         unless (-e 'DEVELOPING');
 
     use_ok('Parrot::Manifest');
-    
+
     my $script = $0;
     my $file   = q{MANIFEST};
     my $skip   = q{MANIFEST.SKIP};
-    
+
     my $mani = Parrot::Manifest->new( { script => $script, } );
     isa_ok( $mani, 'Parrot::Manifest' );
-    
+
     ok( scalar( @{ $mani->{dirs} } ),
         "Parrot::Manifest constructor used 'status' command to find at least 1 directory." );
     ok( scalar( @{ $mani->{versioned_files} } ),
         "Parrot::Manifest constructor used 'status' command to find at least 1 versioned file." );
-    
+
     my $manifest_lines_ref = $mani->prepare_manifest();
     is( ref($manifest_lines_ref), q{HASH}, "prepare_manifest() returned hash ref" );
-    
+
     my $cwd = cwd();
     {
         my $tdir = tempdir( CLEANUP => 1 );
@@ -46,10 +46,10 @@
         chdir $cwd
             or croak "Unable to change back from temporary directory after testing";
     }
-    
+
     my $print_str = $mani->prepare_manifest_skip();
     ok( $print_str, "prepare_manifest_skip() returned" );
-    
+
     {
         my $tdir = tempdir( CLEANUP => 1 );
         chdir $tdir

Modified: branches/ops_pct/t/manifest/02-regenerate_file.t
==============================================================================
--- branches/ops_pct/t/manifest/02-regenerate_file.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/manifest/02-regenerate_file.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 # 02-regenerate_file.t
 
@@ -21,17 +21,17 @@
         unless (-e 'DEVELOPING');
 
     use_ok('Parrot::Manifest');
-    
+
     my $script = $0;
     my $mani = Parrot::Manifest->new( { script => $script, } );
     isa_ok( $mani, 'Parrot::Manifest' );
-    
+
     my $cwd = cwd();
     my $f   = q{MANIFEST};
-    
+
     my $manifest_lines_ref = $mani->prepare_manifest();
     ok( $manifest_lines_ref, "prepare_manifest_skip() returned" );
-    
+
     # 1:  Copy the real MANIFEST unaltered to the tempdir.
     # Assuming the real MANIFEST was correct going in to this test, the
     # absence of any change in it will mean that there will be no need to
@@ -49,7 +49,7 @@
             or croak "Unable to change back from temporary directory after testing";
         unlink qq{$tdir/$f} or croak "Unable to delete file from tempdir";
     }
-    
+
     # 2:  Copy the real MANIFEST to the tempdir but mangle it there.
     # The alteration in the copied MANIFEST will be sufficient to require
     # regeneration of MANIFEST.  And for good measure, toss in a line of all
@@ -64,7 +64,7 @@
         my @lines;
         tie @lines, 'Tie::File', qq{$tdir/$f}
             or croak "Unable to tie to $f in tempdir";
-    
+
         for ( 1 .. 10 ) {
             if ( defined( $lines[-1] ) ) {
                 pop @lines;
@@ -81,7 +81,7 @@
         chdir $cwd
             or croak "Unable to change back from temporary directory after testing";
     }
-    
+
     # 3:  Go to a tempdir which lacks a MANIFEST.  Confirm that you need to
     # regenerate MANIFEST (but do not bother to actually do it there).
     {

Modified: branches/ops_pct/t/manifest/03-regenerate_skip.t
==============================================================================
--- branches/ops_pct/t/manifest/03-regenerate_skip.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/manifest/03-regenerate_skip.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 # 03-regenerate_skip.t
 
@@ -21,16 +21,16 @@
         unless (-e 'DEVELOPING');
 
     use_ok('Parrot::Manifest');
-    
+
     my $script = $0;
     my $mani = Parrot::Manifest->new( { script => $script, } );
     isa_ok( $mani, 'Parrot::Manifest' );
-    
+
     my $cwd       = cwd();
     my $sk        = q{MANIFEST.SKIP};
     my $print_str = $mani->prepare_manifest_skip();
     ok( $print_str, "prepare_manifest_skip() returned" );
-    
+
     # 1:  Copy the real MANIFEST.SKIP unaltered to the tempdir.
     # Assuming the real MANIFEST.SKIP was correct going in to this test, the
     # absence of any change in it will mean that there will be no need to
@@ -48,7 +48,7 @@
         chdir $cwd
             or croak "Unable to change back from temporary directory after testing";
     }
-    
+
     # 2:  Copy the real MANIFEST.SKIP to the tempdir but mangle it there.
     # The alteration in the copied MANIFEST.SKIP will be sufficient to require
     # regeneration of MANIFEST.SKIP.
@@ -62,7 +62,7 @@
         my @lines;
         tie @lines, 'Tie::File', qq{$tdir/$sk}
             or croak "Unable to tie to $sk in tempdir";
-    
+
         for ( 1 .. 10 ) {
             if ( defined( $lines[-1] ) ) {
                 pop @lines;

Modified: branches/ops_pct/t/manifest/04-alt_file.t
==============================================================================
--- branches/ops_pct/t/manifest/04-alt_file.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/manifest/04-alt_file.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 # 04-alt_file.t
 
@@ -17,10 +17,10 @@
         unless (-e 'DEVELOPING');
 
     use_ok('Parrot::Manifest');
-    
+
     my $script = $0;
     my $g      = q{something_other_than_MANIFEST};
-    
+
     my $mani = Parrot::Manifest->new(
         {
             script => $script,
@@ -28,10 +28,10 @@
         }
     );
     isa_ok( $mani, 'Parrot::Manifest' );
-    
+
     my $manifest_lines_ref = $mani->prepare_manifest();
     ok( $manifest_lines_ref, "prepare_manifest_skip() returned" );
-    
+
     ok( !-f $g, "No $g found" );
     my $need_for_file = $mani->determine_need_for_manifest($manifest_lines_ref);
     ok( $need_for_file, "Need to regenerate $g" );

Modified: branches/ops_pct/t/manifest/05-alt_skip.t
==============================================================================
--- branches/ops_pct/t/manifest/05-alt_skip.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/manifest/05-alt_skip.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 # 05-alt_skip.t
 
@@ -17,10 +17,10 @@
         unless (-e 'DEVELOPING');
 
     use_ok('Parrot::Manifest');
-    
+
     my $script = $0;
     my $g      = q{something_other_than_MANIFEST.SKIP};
-    
+
     my $mani = Parrot::Manifest->new(
         {
             script => $script,
@@ -28,10 +28,10 @@
         }
     );
     isa_ok( $mani, 'Parrot::Manifest' );
-    
+
     my $print_str = $mani->prepare_manifest_skip();
     ok( $print_str, "prepare_manifest_skip() returned" );
-    
+
     ok( !-f $g, "No $g found" );
     my $need_for_skip = $mani->determine_need_for_manifest_skip($print_str);
     ok( $need_for_skip, "Need to regenerate $g" );

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

Modified: branches/ops_pct/t/native_pbc/header.t
==============================================================================
--- branches/ops_pct/t/native_pbc/header.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/native_pbc/header.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2005, 2009 Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 use strict;

Modified: branches/ops_pct/t/native_pbc/integer.t
==============================================================================
--- branches/ops_pct/t/native_pbc/integer.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/native_pbc/integer.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2005,2009 Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -90,7 +90,7 @@
       . "_"
       . (substr($PConfig{byteorder},0,2) eq '12' ? "le" : "be");
 }
-sub bc_version($) {
+sub bc_version {
     my $f = shift;
     my $b;
     open my $F, "<", "$f" or return "Can't open $f: $!";

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

Modified: branches/ops_pct/t/native_pbc/number.t
==============================================================================
--- branches/ops_pct/t/native_pbc/number.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/native_pbc/number.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -132,7 +132,7 @@
       . "_"
       . (substr($PConfig{byteorder},0,2) eq '12' ? "le" : "be");
 }
-sub bc_version($) {
+sub bc_version {
     my $f = shift;
     my $b;
     open my $F, "<", "$f" or return "Can't open $f: $!";

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

Modified: branches/ops_pct/t/native_pbc/string.t
==============================================================================
--- branches/ops_pct/t/native_pbc/string.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/native_pbc/string.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2005,2009 Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -58,7 +58,7 @@
       . "_"
       . (substr($PConfig{byteorder},0,2) eq '12' ? "le" : "be");
 }
-sub bc_version($) {
+sub bc_version {
     my $f = shift;
     my $b;
     open my $F, "<", "$f" or return "Can't open $f: $!";

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

Modified: branches/ops_pct/t/oo/attributes.t
==============================================================================
--- branches/ops_pct/t/oo/attributes.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/attributes.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -71,3 +71,9 @@
     is(message, "No such attribute 'data'", 'class attribute deleted')
 
 .end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/oo/composition.t
==============================================================================
--- branches/ops_pct/t/oo/composition.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/composition.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -173,7 +173,7 @@
     eh = new 'ExceptionHandler'
     eh.'handle_types'(.EXCEPTION_ROLE_COMPOSITION_METHOD_CONFLICT)
     set_addr eh, catch
-    
+
     push_eh eh
     $P1.'add_role'($P0)
     $I0 = 1

Modified: branches/ops_pct/t/oo/inheritance.t
==============================================================================
--- branches/ops_pct/t/oo/inheritance.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/inheritance.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -121,3 +121,9 @@
     ok( $I1, 'diamond')
 fail:
 .end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/oo/metamodel.t
==============================================================================
--- branches/ops_pct/t/oo/metamodel.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/metamodel.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2007-2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -71,9 +71,9 @@
     unless $I0 goto FAILTAIL
     is($P1, "long", "tail attribute has expected value")
     goto NEXTTAIL
-FAILTAIL:	
+FAILTAIL:
     fail("no attribute")
-NEXTTAIL:	
+NEXTTAIL:
 
     $P1 = getattribute $P0, "bark"
     $I0 = defined $P1
@@ -81,9 +81,9 @@
     unless $I0 goto FAIL
     is($P1, "Wooof", "bark attribute has expected value")
     goto NEXT
-FAIL:	
+FAIL:
     fail("no attribute")
-NEXT:	
+NEXT:
 
     todo(0, "new opcode makes working objects", "not implemented")
 #    $P0 = new "Dog"

Modified: branches/ops_pct/t/oo/methods.t
==============================================================================
--- branches/ops_pct/t/oo/methods.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/methods.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2007 - 2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME

Modified: branches/ops_pct/t/oo/mro-c3.t
==============================================================================
--- branches/ops_pct/t/oo/mro-c3.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/mro-c3.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -19,12 +19,13 @@
 .sub main :main
     .include 'test_more.pir'
 
-    plan(12)
+    plan(13)
 
     single_parent()
     grandparent()
     multiple_inheritance()
     diamond_inheritance()
+    merge_two_pairs()
 .end
 
 .sub method_A :method
@@ -94,24 +95,24 @@
 
 .sub multiple_inheritance
     .local pmc A, B, C
- 
+
     A = newclass 'MIA'
     $P0 = get_global 'method_A'
     A.'add_method'('foo', $P0)
     A.'add_method'('bar', $P0)
     A.'add_method'('baz', $P0)
- 
+
     B = newclass 'MIB'
     $P0 = get_global 'method_B'
     B.'add_method'('foo', $P0)
     B.'add_method'('bar', $P0)
- 
+
     C = newclass 'MIC'
     C.'add_parent'(B)
     C.'add_parent'(A)
     $P0 = get_global 'method_C'
     C.'add_method'('foo', $P0)
- 
+
     $P0 = C.'new'()
     $S0 = $P0.'foo'()
     $S1 = $P0.'bar'()
@@ -161,6 +162,38 @@
     is($S3, 'Method from A', 'Diamond Inheritance - Method wag inherited from A')
 .end
 
+# See TT#1426
+.sub merge_two_pairs
+    .local pmc C, A, B
+
+    push_eh test_fail
+
+    C = newclass 'TPC'
+    $P0 = get_global 'method_C'
+    C.'add_method'('bar', $P0)
+
+    B = newclass 'TPB'
+    B.'add_parent'(C)
+    $P0 = get_global 'method_B'
+    B.'add_method'('bar', $P0)
+
+    A = newclass 'TPA'
+    A.'add_parent'(C)
+    A.'add_parent'(B)
+    $P0 = get_global 'method_A'
+    A.'add_method'('foo', $P0)
+
+
+    $P0 = A.'new'()
+    $S0 = $P0.'bar'()
+    is($S0, 'Method from B', 'Merge Two Pairs - Method A.bar added from B')
+
+    .return ()
+
+test_fail:
+    pop_eh
+    todo(0, 'Merge Two Pairs - Method A.bar added from B', 'See TT#1426')
+.end
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

Modified: branches/ops_pct/t/oo/names.t
==============================================================================
--- branches/ops_pct/t/oo/names.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/names.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2007-2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -46,12 +46,12 @@
     $S0 = $P0
     ok (1, 'HLL obj created w/ same name as parrot obj')
     .return()
-OK_1:    
+OK_1:
     ok (0, 'HLL obj w/ same name as parrot obj not created')
 .end
 
 # Local Variables:
-#   mode: pir 
+#   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/oo/new-old.t
==============================================================================
--- branches/ops_pct/t/oo/new-old.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/new-old.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -19,7 +19,7 @@
 
 =head1 DESCRIPTION
 
-Tests instantiation 
+Tests instantiation
 
 =cut
 
@@ -56,3 +56,10 @@
 CODE
 ok #test exception from init vtable
 OUT
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/t/oo/new.t
==============================================================================
--- branches/ops_pct/t/oo/new.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/new.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2007-2009, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -52,7 +52,7 @@
 #
 .sub _test_instance
     .param pmc obj
-    .param string in_str 
+    .param string in_str
 
     # Set up local variables
     .local pmc key_pmc
@@ -467,7 +467,7 @@
     $P0 = new [ 'Foo'; 'Bar'; 'Baz' ]
     $I0 = 1
     goto finally
-    
+
   catch:
     .local pmc exception
     .get_results(exception)

Modified: branches/ops_pct/t/oo/ops.t
==============================================================================
--- branches/ops_pct/t/oo/ops.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/ops.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -18,7 +18,7 @@
 
 .sub main :main
     .include 'except_types.pasm'
-    .include 'test_more.pir' 
+    .include 'test_more.pir'
 
     plan(18)
 
@@ -91,7 +91,7 @@
 
 .end
 
-.sub op_get_class_p_p 
+.sub op_get_class_p_p
     $P0 = new 'Hash'
     $P4 = new 'String'
     $P4 = 'Ape'
@@ -177,7 +177,7 @@
 
 .namespace ["Baz"]
 .sub bar :method
-    .return (1) 
+    .return (1)
 .end
 
 # Local Variables:

Modified: branches/ops_pct/t/oo/root_new.t
==============================================================================
--- branches/ops_pct/t/oo/root_new.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/root_new.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2007-2009, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -33,7 +33,7 @@
 #
 .sub _test_instance
     .param pmc obj
-    .param string in_str 
+    .param string in_str
 
     # Set up local variables
     .local pmc key_pmc
@@ -92,4 +92,10 @@
     $P0 = root_new ['parrot';'Integer']
     _test_instance($P0, 'Integer')
 .end
-  
+
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/oo/subclass.t
==============================================================================
--- branches/ops_pct/t/oo/subclass.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/oo/subclass.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2007-2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -55,13 +55,13 @@
     parent_class = newclass "PreFoo"
     foo_class = subclass parent_class, "Foo"
 
-    $S1 = typeof foo_class 
+    $S1 = typeof foo_class
     is ($S1, 'Class', 'created Foo as subclass of Pre')
 
     $I3 = isa foo_class, "Class"
     ok ($I3, 'Foo isa Class')
 
-    foo_object = new foo_class 
+    foo_object = new foo_class
     $S1 = typeof foo_object
     is ($S1, 'Foo', 'instance is typeof Foo')
 
@@ -142,7 +142,7 @@
 
 .sub instance_from_class_object_method
     # instantiate from class object method
-    .local pmc parent_class, baz_class, baz_object 
+    .local pmc parent_class, baz_class, baz_object
     parent_class = newclass "PreBaz"
     baz_class = subclass "PreBaz", "Baz"
     baz_object = baz_class.'new'()
@@ -160,7 +160,7 @@
 
 .sub instance_from_string_name
     # instantiate from string name
-    .local pmc parent_class, qux_class, qux_object 
+    .local pmc parent_class, qux_class, qux_object
     parent_class = newclass "PreQux"
     qux_class = subclass "PreQux", "Qux"
     qux_object = new 'Qux'
@@ -239,7 +239,7 @@
 
 .end
 
-.sub instance_from_key_pmc_name 
+.sub instance_from_key_pmc_name
     # instantiate from key PMC name
     .local pmc parent_class, barbaz_class, barbaz_object
     parent_class = newclass "Snork"

Modified: branches/ops_pct/t/op/00ff-dos.t
==============================================================================
--- branches/ops_pct/t/op/00ff-dos.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/00ff-dos.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -42,8 +42,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/00ff-unix.t
==============================================================================
--- branches/ops_pct/t/op/00ff-unix.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/00ff-unix.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -32,8 +32,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/64bit.t
==============================================================================
--- branches/ops_pct/t/op/64bit.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/64bit.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -26,7 +26,7 @@
     interp = getinterp
     .local pmc config
     config = interp[.IGLOBALS_CONFIG_HASH]
-    .local int intvalsize 
+    .local int intvalsize
     intvalsize = config['intvalsize']
 
     plan(5)
@@ -47,14 +47,14 @@
 
         set $I0, 0xffffffffffffffff
         is( $I0, -1, 'bitops64' )
-    
+
         set $I1, 0x00000000ffffffff
         is( $I1, 4294967295, 'bitops64' )
-    
+
         set $I0, $I1
         shl $I0, $I0, 32
         is( $I0, -4294967296, 'bitops64' )
-        
+
         band $I2, $I0, $I1
         is( $I2, 0, 'bitops64' )
 
@@ -64,7 +64,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/annotate.t
==============================================================================
--- branches/ops_pct/t/op/annotate.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/annotate.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -218,7 +218,7 @@
     .get_results($P3)
     pop_eh
     $P3 = $P3.'backtrace'()
-    
+
     $P4 = $P3[0]
     $P4 = $P4['annotations']
     $S0 = $P4['file']
@@ -236,7 +236,7 @@
 
 
 # Local Variables:
-#   mode: pir 
+#   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/arithmetics.t
==============================================================================
--- branches/ops_pct/t/op/arithmetics.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/arithmetics.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -19,8 +19,9 @@
 
 .sub main :main
     .include 'test_more.pir'
+    .include 'iglobals.pasm'
 
-    plan(129)
+    plan(130)
 
     take_the_negative_of_a_native_integer()
     take_the_absolute_of_a_native_integer()
@@ -44,6 +45,7 @@
     lcm_test()
     gcd_test()
     integer_overflow_with_pow()
+    bnot_p_p_creates_destination()
     # END_OF_TESTS
 
 .end
@@ -152,18 +154,21 @@
 # print -0.0 as -0
 #
 .sub negate_minus_zero_point_zero
-    .include 'sysinfo.pasm'
-    $S9 = sysinfo .SYSINFO_PARROT_OS
+    .local pmc interp, config_hash
+    .local string has_negative_zero
+    interp = getinterp
+    config_hash = interp[.IGLOBALS_CONFIG_HASH]
+    has_negative_zero = config_hash['has_negative_zero']
 
     set $N0, 0
     neg $N0
     $S0 = $N0
-    if $S9 == 'MSWin32' goto Todo_test1
+    unless has_negative_zero goto Todo_test1
     is( $S0, "-0", '1' )
     goto End_test1
 Todo_test1:
     $I0 = $S0 == "-0"
-    todo($I0, 'Faulty on this platform')
+    todo($I0, 'negative zero, TT #313')
 End_test1:
 
     set $N0, -0.0
@@ -180,12 +185,12 @@
     set $N1, 1
     neg $N1, $N0
     $S0 = $N1
-    if $S9 == 'MSWin32' goto Todo_test4
+    unless has_negative_zero goto Todo_test4
     is( $S0, "-0", '4' )
     goto End_test4
 Todo_test4:
     $I0 = $S0 == "-0"
-    todo($I0, 'Faulty on this platform')
+    todo($I0, 'negative zero, TT #313')
 End_test4:
 .end
 
@@ -558,9 +563,14 @@
   end:
 .end
 
+.sub 'bnot_p_p_creates_destination'
+    $P0 = box 3
+    $P1 = bnot $P0
+    is( $P1, -4, 'bnot_p_p_creates_destination')
+.end
+
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 ft=pir :
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/arithmetics_pmc.t
==============================================================================
--- branches/ops_pct/t/op/arithmetics_pmc.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/arithmetics_pmc.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -20,7 +20,7 @@
     .include 'test_more.pir'
     .include "iglobals.pasm"
 
-    plan(68)
+    plan(44)
 
     # Don't check BigInt or BigNum without gmp
     .local pmc interp     # a handle to our interpreter object.
@@ -34,8 +34,8 @@
     run_tests_for('Float')
 
     if gmp goto do_big_ones
-        skip( 34, "will not test BigInt or BigNum without gmp" )
-        goto end   
+        skip( 22, "will not test BigInt or BigNum without gmp" )
+        goto end
 
   do_big_ones:
     run_tests_for('BigInt')
@@ -54,15 +54,9 @@
     test_concatenate(type)
     test_logical_xor(type)
     test_logical_or(type)
-    test_bitwise_shr(type)
-    test_bitwise_or(type)
-    test_bitwise_shl(type)
-    test_bitwise_xor(type)
     test_modulus(type)
     test_pow(type)
     test_subtract(type)
-    test_bitwise_lsr(type)
-    test_bitwise_and(type)
 .end
 
 .sub test_add
@@ -86,7 +80,7 @@
     add $P2, $P0, $P1
 
     $I0 = cmp $P99, 115200
-    
+
     is( $I0, 0, $S0 )
     goto end
 
@@ -116,7 +110,7 @@
     div $P2, $P0, $P1
 
     $I0 = cmp $P99, 115200
-    
+
     is( $I0, 0, $S0 )
     goto end
 
@@ -146,7 +140,7 @@
     mul $P2, $P0, $P1
 
     $I0 = cmp $P99, 115200
-    
+
     is( $I0, 0, $S0 )
     goto end
 
@@ -176,7 +170,7 @@
     fdiv $P2, $P0, $P1
 
     $I0 = cmp $P99, 115200
-    
+
     is( $I0, 0, $S0 )
     goto end
 
@@ -206,7 +200,7 @@
     and $P2, $P0, $P1
 
     $I0 = cmp $P99, 115200
-    
+
     is( $I0, 0, $S0 )
     goto end
 
@@ -236,7 +230,7 @@
     concat $P2, $P0, $P1
 
     $I0 = cmp $P99, 115200
-    
+
     is( $I0, 0, $S0 )
     goto end
 
@@ -266,7 +260,7 @@
     xor $P2, $P0, $P1
 
     $I0 = cmp $P99, 115200
-    
+
     is( $I0, 0, $S0 )
     goto end
 
@@ -296,127 +290,7 @@
     or $P2, $P0, $P1
 
     $I0 = cmp $P99, 115200
-    
-    is( $I0, 0, $S0 )
-    goto end
-
-  done:
-    ok(1, 'ignoring exceptions')
-  end:
-.end
-
-.sub test_bitwise_shr
-    .param pmc type
-
-    $P0 = new type
-    $P0 = 40
-    $P1 = new type
-    $P1 = 2
-    $P2 = new type
-    $P2 = 115200
-
-    $P99 = $P2
-
-    $S0 = "original dest is untouched in bitwise_shr for "
-    $S1 = type
-    concat $S0, $S1
-
-    # ignore exceptions
-    push_eh done
-    shr $P2, $P0, $P1
-
-    $I0 = cmp $P99, 115200
-    
-    is( $I0, 0, $S0 )
-    goto end
-
-  done:
-    ok(1, 'ignoring exceptions')
-  end:
-.end
-
-.sub test_bitwise_or
-    .param pmc type
 
-    $P0 = new type
-    $P0 = 40
-    $P1 = new type
-    $P1 = 2
-    $P2 = new type
-    $P2 = 115200
-
-    $P99 = $P2
-
-    $S0 = "original dest is untouched in bitwise_or for "
-    $S1 = type
-    concat $S0, $S1
-
-    # ignore exceptions
-    push_eh done
-    bor $P2, $P0, $P1
-
-    $I0 = cmp $P99, 115200
-    
-    is( $I0, 0, $S0 )
-    goto end
-
-  done:
-    ok(1, 'ignoring exceptions')
-  end:
-.end
-
-.sub test_bitwise_shl
-    .param pmc type
-
-    $P0 = new type
-    $P0 = 40
-    $P1 = new type
-    $P1 = 2
-    $P2 = new type
-    $P2 = 115200
-
-    $P99 = $P2
-
-    $S0 = "original dest is untouched in bitwise_shl for "
-    $S1 = type
-    concat $S0, $S1
-
-    # ignore exceptions
-    push_eh done
-    shl $P2, $P0, $P1
-
-    $I0 = cmp $P99, 115200
-    
-    is( $I0, 0, $S0 )
-    goto end
-
-  done:
-    ok(1, 'ignoring exceptions')
-  end:
-.end
-
-.sub test_bitwise_xor
-    .param pmc type
-
-    $P0 = new type
-    $P0 = 40
-    $P1 = new type
-    $P1 = 2
-    $P2 = new type
-    $P2 = 115200
-
-    $P99 = $P2
-
-    $S0 = "original dest is untouched in bitwise_xor for "
-    $S1 = type
-    concat $S0, $S1
-
-    # ignore exceptions
-    push_eh done
-    bxor $P2, $P0, $P1
-
-    $I0 = cmp $P99, 115200
-    
     is( $I0, 0, $S0 )
     goto end
 
@@ -446,7 +320,7 @@
     mod $P2, $P0, $P1
 
     $I0 = cmp $P99, 115200
-    
+
     is( $I0, 0, $S0 )
     goto end
 
@@ -476,7 +350,7 @@
     pow $P2, $P0, $P1
 
     $I0 = cmp $P99, 115200
-    
+
     is( $I0, 0, $S0 )
     goto end
 
@@ -506,67 +380,7 @@
     sub $P2, $P0, $P1
 
     $I0 = cmp $P99, 115200
-    
-    is( $I0, 0, $S0 )
-    goto end
-
-  done:
-    ok(1, 'ignoring exceptions')
-  end:
-.end
-
-.sub test_bitwise_lsr
-    .param pmc type
 
-    $P0 = new type
-    $P0 = 40
-    $P1 = new type
-    $P1 = 2
-    $P2 = new type
-    $P2 = 115200
-
-    $P99 = $P2
-
-    $S0 = "original dest is untouched in bitwise_lsr for "
-    $S1 = type
-    concat $S0, $S1
-
-    # ignore exceptions
-    push_eh done
-    lsr $P2, $P0, $P1
-
-    $I0 = cmp $P99, 115200
-    
-    is( $I0, 0, $S0 )
-    goto end
-
-  done:
-    ok(1, 'ignoring exceptions')
-  end:
-.end
-
-.sub test_bitwise_and
-    .param pmc type
-
-    $P0 = new type
-    $P0 = 40
-    $P1 = new type
-    $P1 = 2
-    $P2 = new type
-    $P2 = 115200
-
-    $P99 = $P2
-
-    $S0 = "original dest is untouched in bitwise_and for "
-    $S1 = type
-    concat $S0, $S1
-
-    # ignore exceptions
-    push_eh done
-    band $P2, $P0, $P1
-
-    $I0 = cmp $P99, 115200
-    
     is( $I0, 0, $S0 )
     goto end
 
@@ -577,7 +391,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 ft=pir :
+# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/ops_pct/t/op/bitwise.t
==============================================================================
--- branches/ops_pct/t/op/bitwise.t	Sun Mar  7 19:33:20 2010	(r44742)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,474 +0,0 @@
-#!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/op/bitwise.t - Bitwise Ops
-
-=head1 SYNOPSIS
-
-        % prove t/op/bitwise.t
-
-=head1 DESCRIPTION
-
-Tests various bitwise logical operations.
-
-=cut
-
-.sub main :main
-    .include 'test_more.pir'
-
-    plan(68)
-
-    test_shr_i_i_i_shift_rt_()
-    test_shr_i_i_shift_rt_()
-    test_shr_i_i_ic_shift_rt_()
-    test_shr_i_ic_i_shift_rt_()
-    test_shr_i_ic_ic_shift_rt_()
-    test_lsr_i_ic_ic_shift_rt_()
-    test_lsr_i_ic_shift_rt()
-    test_lsr_i_i_i_shift_rt()
-    test_lsr_i_i_ic_shift_rt()
-    test_shr_i_i_ic_shift_rt_negative()
-    test_shl_i_i_i_shift_lt()
-    test_shl_i_i_ic_shift_lt()
-    test_shl_i_ic_i_shift_lt()
-    test_shl_i_ic_ic_shift_lt()
-    test_shl_i_i_shift_lt()
-    test_bxor_i_i_i_xor()
-    test_bxor_i_i_ic_xor()
-    test_bxor_i_ic_xor()
-    test_band_i_i_i_and()
-    test_band_i_i_ic_and()
-    test_band_i_i_ic_and_2()
-    test_bor_i_i_i()
-    test_bor_i_i_ic()
-    test_bor_i_i_ic_2()
-    test_bnot_i_i_2()
-    test_rot_i_i_ic_ic()
-    test_i_reg_shl_and_pmc_shl_are_consistent()
-    # END_OF_TESTS
-.end
-
-.macro exception_is ( M )
-    .local pmc exception
-    .local string message
-    .get_results (exception)
-
-    message = exception['message']
-    is( message, .M, .M )
-.endm
-
-.sub test_shr_i_i_i_shift_rt_
-    set $I0, 0b001100
-    set $I1, 0b010100
-    set $I2, 1
-    set $I3, 2
-    shr $I4, $I0, $I2
-    shr $I2, $I0, $I2
-    shr $I1, $I1, $I3
-    is( $I4, "6", 'shr_i_i_i (>>)' )
-    is( $I2, "6", 'shr_i_i_i (>>)' )
-    is( $I1, "5", 'shr_i_i_i (>>)' )
-    is( $I0, "12", 'shr_i_i_i (>>)' )
-.end
-
-.sub test_shr_i_i_shift_rt_
-    set $I0, 0b001100
-    set $I1, 0b010100
-    set $I2, 1
-    set $I3, 2
-    shr $I0, $I2
-    shr $I1, $I3
-    is( $I0, "6", 'shr_i_i (>>)' )
-    is( $I1, "5", 'shr_i_i (>>)' )
-.end
-
-.sub test_shr_i_i_ic_shift_rt_
-    set     $I0, 0b001100
-    set     $I1, 0b010100
-    shr     $I2, $I0, 1
-    shr     $I1, $I1, 2
-    is( $I2, "6", 'shr_i_i_ic (>>)' )
-    is( $I1, "5", 'shr_i_i_ic (>>)' )
-    is( $I0, "12", 'shr_i_i_ic (>>)' )
-.end
-
-.sub test_shr_i_ic_i_shift_rt_
-    set $I0, 1
-    set $I1, 2
-    shr $I2, 0b001100, $I0
-    shr $I1, 0b010100, $I1
-    is( $I2, "6", 'shr_i_ic_i (>>)' )
-    is( $I1, "5", 'shr_i_ic_i (>>)' )
-.end
-
-.sub test_shr_i_ic_ic_shift_rt_
-    shr $I2, 0b001100, 1
-    shr $I1, 0b010100, 2
-    is( $I2, "6", 'shr_i_ic_ic (>>)' )
-    is( $I1, "5", 'shr_i_ic_ic (>>)' )
-.end
-
-# The crux of this test is that a proper logical right shift
-# will clear the most significant bit, so the shifted value
-# will be a positive value on any 2's or 1's complement CPU
-.sub test_lsr_i_ic_ic_shift_rt_
-    lsr $I2, -40, 1
-    lt $I2, 0, BAD
-    ok( 1, 'lsr_i_ic_ic (>>)' )
-    goto END
-  BAD:
-    ok( 0, 'lsr_i_ic_ic (>>)' )
-  END:
-.end
-
-.sub test_lsr_i_ic_shift_rt
-    set $I2, -100
-    lsr $I2, 1
-    lt $I2, 0, BAD
-    ok( 1, 'lsr_i_ic (>>) OK')
-    goto END
-  BAD:
-    ok( 0, 'lsr_i_ic (>>)')
-  END:
-.end
-
-.sub test_lsr_i_i_i_shift_rt
-    set $I0, -40
-    set $I1, 1
-    lsr $I2, $I0, $I1
-    lt $I2, 0, BAD
-    ok( 1, 'lsr_i_i_i (>>) OK')
-    goto END
-  BAD:
-    ok( 0, 'lsr_i_i_i (>>)')
-  END:
-.end
-
-# ... and the missing op signature was untested and wrong in JIT/i386
-.sub test_lsr_i_i_ic_shift_rt
-    set $I0, -40
-    lsr $I2, $I0, 1
-    lt $I2, 0, BAD
-    ok( 1, 'lsr_i_i_ic (>>) OK')
-    goto END
-  BAD:
-    ok( 0, 'lsr_i_i_ic (>>)')
-  END:
-.end
-
-.sub test_shr_i_i_ic_shift_rt_negative
-    set $I0, -40
-    shr $I2, $I0, 1
-    ge $I2, 0, BAD
-    ok( 1, 'shr_i_i_ic (>>) negative OK')
-    goto END
-  BAD:
-    ok( 0, 'shr_i_i_ic (>>) negative')
-  END:
-.end
-
-.sub test_shl_i_i_i_shift_lt
-    set $I0, 0b001100
-    set $I1, 0b010100
-    set $I2, 2
-    set $I3, 1
-    shl $I4, $I0, $I2
-    shl $I2, $I0, $I2
-    shl $I1, $I1, $I3
-    is( $I4, "48", 'shl_i_i_i (<<)' )
-    is( $I2, "48", 'shl_i_i_i (<<)' )
-    is( $I1, "40", 'shl_i_i_i (<<)' )
-    is( $I0, "12", 'shl_i_i_i (<<)' )
-.end
-
-.sub test_shl_i_i_ic_shift_lt
-    set $I0, 0b001100
-    set $I1, 0b010100
-    shl $I2, $I0, 2
-    shl $I1, $I1, 1
-    is( $I2, "48", 'shl_i_i_ic (<<)' )
-    is( $I1, "40", 'shl_i_i_ic (<<)' )
-    is( $I0, "12", 'shl_i_i_ic (<<)' )
-.end
-
-.sub test_shl_i_ic_i_shift_lt
-    set $I0, 2
-    set $I1, 1
-    shl $I2, 0b001100, $I0
-    shl $I1, 0b010100, $I1
-    is( $I2, "48", 'shl_i_ic_i (<<)' )
-    is( $I1, "40", 'shl_i_ic_i (<<)' )
-.end
-
-.sub test_shl_i_ic_ic_shift_lt
-    shl $I2, 0b001100, 2
-    shl $I1, 0b010100, 1
-    is( $I2, "48", 'shl_i_ic_ic (<<)' )
-    is( $I1, "40", 'shl_i_ic_ic (<<)' )
-.end
-
-.sub test_shl_i_i_shift_lt
-    set $I0, 0b001100
-    set $I1, 0b010100
-    set $I2, 1
-    set $I3, 2
-    shl $I0, $I2
-    shl $I1, $I3
-    is( $I0, "24", 'shl_i_i (<<)' )
-    is( $I1, "80", 'shl_i_i (<<)' )
-.end
-
-.sub test_bxor_i_i_i_xor
-    set     $I0, 0b001100
-    set     $I1, 0b100110
-    bxor    $I2, $I0, $I1
-    is( $I2, "42", 'bxor_i_i_i (^)' )
-    bxor    $I1, $I0, $I1
-    is( $I1, "42", 'bxor_i_i_i (^)' )
-    is( $I0, "12", 'bxor_i_i_i (^)' )
-.end
-
-.sub test_bxor_i_i_ic_xor
-    set $I0, 0b001100
-    bxor $I2, $I0, 0b100110
-    is( $I2, "42", 'bxor_i_i_ic (^)' )
-    is( $I0, "12", 'bxor_i_i_ic (^)' )
-    bxor $I0, $I0, 0b100110
-    is( $I0, "42", 'bxor_i_i_ic (^)' )
-.end
-
-.sub test_bxor_i_ic_xor
-    set $I0, 0b001100
-    set $I2, 0b000011
-    bxor $I2, $I0
-    is( $I2, "15", 'bxor_i|ic (^)' )
-    set $I2, 0b001100
-    bxor  $I2, $I0
-    is( $I2, "0", 'bxor_i|ic (^)' )
-    set $I2, 0b101010
-    bxor $I2, $I2
-    is( $I2, "0", 'bxor_i|ic (^)' )
-    set $I2, 0b010101
-    bxor $I2, 0b000011
-    is( $I2, "22", 'bxor_i|ic (^)' )
-.end
-
-.sub test_band_i_i_i_and
-    set     $I0, 0b001100
-    set     $I1, 0b010110
-    band    $I2, $I0,$I1
-    is( $I2, "4", 'band_i_i_i (&)' )
-    band    $I1,$I0,$I1
-    is( $I1, "4", 'band_i_i_i (&)' )
-    is( $I0, "12", 'band_i_i_i (&)' )
-.end
-
-.sub test_band_i_i_ic_and
-    set $I0, 0b001100
-    band $I2, $I0,0b010110
-    is( $I2, "4", 'band_i_i_ic (&)' )
-    is( $I0, "12", 'band_i_i_ic (&)' )
-    band $I0,$I0,0b010110
-    is( $I0, "4", 'band_i_i_ic (&)' )
-.end
-
-.sub test_band_i_i_ic_and_2
-    set $I0, 0b001100
-    set $I2, 0b000011
-    band $I2, $I0
-    is( $I2, "0", 'band_i_i|ic (&)' )
-
-    set $I2, 0b001100
-    band  $I2, $I0
-    is( $I2, "12", 'band_i_i|ic (&)' )
-
-    set $I2, 0b101010
-    band $I2, $I2
-    is( $I2, "42", 'band_i_i|ic (&)' )
-    
-    set $I2, 0b010101
-    band $I2, 0b000011
-    is( $I2, "1", 'band_i_i|ic (&)' )
-.end
-
-.sub test_bor_i_i_i
-    set $I0, 0b001100
-    set $I1, 0b010110
-    bor $I2, $I0,$I1
-    is( $I2, "30", 'bor_i_i_i (|)' )
-    bor $I1,$I0,$I1
-    is( $I1, "30", 'bor_i_i_i (|)' )
-    is( $I0, "12", 'bor_i_i_i (|)' )
-.end
-
-.sub test_bor_i_i_ic
-    set $I0, 0b001100
-    bor $I2, $I0,0b010110
-    is( $I2, "30", 'bor_i_i_ic (|)' )
-    is( $I0, "12", 'bor_i_i_ic (|)' )
-    bor $I0,$I0,0b010110
-    is( $I0, "30", 'bor_i_i_ic (|)' )
-.end
-
-.sub test_bor_i_i_ic_2
-    set $I0, 0b001100
-    set $I2, 0b000011
-    bor $I2, $I0
-    is( $I2, "15", 'bor_i_i|ic (|) 2' )
-    set $I2, 0b001100
-    bor  $I2, $I0
-    is( $I2, "12", 'bor_i_i|ic (|) 2' )
-    set $I2, 0b101010
-    bor $I2, $I2
-    is( $I2, "42", 'bor_i_i|ic (|) 2' )
-    set $I2, 0b010101
-    bor $I2, 0b000011
-    is( $I2, "23", 'bor_i_i|ic (|) 2' )
-.end
-
-.sub test_bnot_i_i_2
-    set     $I0, 0b001100
-    set     $I1, 0b001100
-    set     $I31, 0b111111
-    bnot    $I2, $I0
-    band    $I2, $I2, $I31
-    is( $I2, "51", 'bnot_i_i (~) 2' )
-    bnot    $I1, $I1
-    band    $I1, $I1, $I31
-    is( $I1, "51", 'bnot_i_i (~) 2' )
-    is( $I0, "12", 'bnot_i_i (~) 2' )
-.end
-
-.sub test_rot_i_i_ic_ic
-    .include "iglobals.pasm"
-    .local pmc interp     # a handle to our interpreter object.
-    interp = getinterp
-    .local pmc config
-    config = interp[.IGLOBALS_CONFIG_HASH]
-    .local int intvalsize 
-    intvalsize = config['intvalsize']
-
-    .local int int_bits
-    int_bits = intvalsize * 8
-
-    set $I0, 0b001100
-
-    gt intvalsize, 4, do64bit
-
-    rot $I1, $I0, 1, 32         # 1 left
-    is( $I1, "24", 'rot_i_i_ic_ic' )
-    rot $I1, $I0, -1, 32        # 1 right
-    is( $I1, "6", 'rot_i_i_ic_ic' )
-    goto END
-
-  do64bit:
-    rot $I1, $I0, 1, 64         # 1 left
-    is( $I1, "24", 'rot_i_i_ic_ic' )
-    rot $I1, $I0, -1, 64        # 1 right
-    is( $I1, "6", 'rot_i_i_ic_ic' )
-    
-  END:
-.end
-
-## The PMC shl op will promote Integer to Bigint when needed.  We can't stuff a
-## BigInt in an I register, but we can produce the same result modulo wordsize.
-## [Only we cheat by using the word size minus one, so that we don't have to
-## deal with negative numbers.  -- rgr, 2-Jun-07.]
-.sub test_i_reg_shl_and_pmc_shl_are_consistent
-
-    .include "iglobals.pasm"
-    .local pmc interp     # a handle to our interpreter object.
-    interp = getinterp
-    .local pmc config
-    config = interp[.IGLOBALS_CONFIG_HASH]
-    .local int gmp
-    gmp = config['gmp']
-    
-    if gmp, runtest
-    skip( 2, 'no BigInt lib found' )
-    goto END
-
-  runtest:
-
-    ## Figure out the wordsize.  We need integer_modulus because assigning a
-    ## too-big BigInt throws an error otherwise.
-    .include 'sysinfo.pasm'
-    .local int i_bytes_per_word, i_bits_per_word_minus_one
-    .local pmc bits_per_word_minus_one, integer_modulus
-    i_bytes_per_word = sysinfo .SYSINFO_PARROT_INTSIZE
-    i_bits_per_word_minus_one = 8 * i_bytes_per_word
-    dec i_bits_per_word_minus_one
-    bits_per_word_minus_one = new 'Integer'
-    bits_per_word_minus_one = i_bits_per_word_minus_one
-    integer_modulus = new 'BigInt'
-    integer_modulus = 1
-    integer_modulus <<= bits_per_word_minus_one
-
-    ## Test shifting a positive number.
-    new $P0, 'Integer'
-    set $P0, 1000001
-    test_shift($P0, integer_modulus)
-
-    ## Test shifting a negative number.
-    set $P0, -1000001
-    test_shift($P0, integer_modulus)
-  END:
-.end
-
-.sub test_shift
-    .param pmc number
-    .param pmc integer_modulus
-    new $P1, 'Integer'
-    set $P1, 1
-    .local int i_number
-    i_number = number
-
-    ## Start the loop.
-  loop:
-    if $P1 > 100 goto done
-    ## shift number and i_number into $P2 and $I2.
-    shl $P2, number, $P1
-    $I1 = $P1
-    shl $I2, i_number, $I1
-    ## compare in I registers.
-    $P3 = mod $P2, integer_modulus
-    $I3 = $P3
-    if $I2 >= 0 goto pos_check
-    ## The register op gave a negative result, but the modulus will always be
-    ## positive.  If the truncated result is correct, then the difference will
-    ## be the most negative INTVAL, which is the only number for which -x==x.
-    $I4 = $I3 - $I2
-    $I5 = - $I4
-    if $I4 == $I5 goto ok
-    goto bad
-  pos_check:
-    if $I2 == $I3 goto ok
-  bad:
-    ok( 0, "oops; not ok: " )
-    diag( i_number )
-    diag( ' << ' )
-    diag( $I1 )
-    diag( ' gives I ' )
-    diag( $I2 )
-    diag( ' vs. P ' )
-    diag( $P3 )
-    diag( ".\n" )
-    diag( $I5 )
-    diag( "\n" )
-  ok:
-    ## set up for the next one
-    inc $P1
-    goto loop
-  done:
-    ok( 1, 'finished ok' )
-.end
-
-# Local Variables:
-#   mode: pir
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/box.t
==============================================================================
--- branches/ops_pct/t/op/box.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/box.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2008-2009, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -176,8 +176,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/calling.t
==============================================================================
--- branches/ops_pct/t/op/calling.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/calling.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1406,9 +1406,14 @@
 ok
 OUTPUT
 
-my @todo = ( todo => 'broken with JIT (TT #983)' )
-    if ( defined $ENV{TEST_PROG_ARGS} and
-        $ENV{TEST_PROG_ARGS} =~ /--runcore=jit/ );
+my @todo = (
+    defined $ENV{TEST_PROG_ARGS}
+        and
+    $ENV{TEST_PROG_ARGS} =~ /--runcore=jit/
+)
+    ? ( todo => 'broken with JIT (TT #983)' )
+    : ();
+
 pir_output_is( <<'CODE', <<'OUTPUT', "clone_key_arg", @todo );
 .sub main :main
     foo()
@@ -2461,7 +2466,7 @@
 OUTPUT
 
 # See Rakudo queue http://rt.perl.org/rt3/Ticket/Display.html?id=62730
-pir_output_is( <<'CODE', <<'OUTPUT', "Handling :flat of emtpy arguments" );
+pir_output_is( <<'CODE', <<'OUTPUT', "Handling :flat of empty arguments" );
 .sub 'main'
     $P0   = new ['Undef']
     ($P0) = foo()

Modified: branches/ops_pct/t/op/cc_params.t
==============================================================================
--- branches/ops_pct/t/op/cc_params.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/cc_params.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -67,7 +67,7 @@
 .namespace ['OMGClass']
 .sub 'lolmethod' :method
     .param pmc sig :call_sig
-    
+
     # Self is set up correctly.
     $S0 = typeof self
     is('OMGClass', $S0)
@@ -88,7 +88,7 @@
 
 .sub 'wtfmethod' :method
     .param pmc sig :call_sig
-    
+
     # Self is set up correctly.
     $S0 = typeof self
     is('OMGClass', $S0)
@@ -120,7 +120,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/comp.t
==============================================================================
--- branches/ops_pct/t/op/comp.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/comp.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -160,8 +160,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Copied: branches/ops_pct/t/op/errorson.t (from r44740, trunk/t/op/errorson.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/t/op/errorson.t	Sun Mar  7 19:33:20 2010	(r44743, copy of r44740, trunk/t/op/errorson.t)
@@ -0,0 +1,47 @@
+#!parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/op/errorson.t - Test the errorson opcode
+
+=head1 SYNOPSIS
+
+% prove t/op/errorson.t
+
+=head1 DESCRIPTION
+
+Tests that the errorson opcode turns exception-throwing on and off correctly.
+
+=cut
+
+.sub test_main :main
+    .include 'test_more.pir'
+    .include 'errors.pasm'
+
+    plan(1)
+    test_find_name()
+.end
+
+.sub test_find_name
+       errorson .PARROT_ERRORS_GLOBALS_FLAG
+       push_eh myhandler
+       $P0 = find_name "i_better_not_exist_or_this_thing_is_crazy"
+       pop_eh
+       if null $P0 goto wasnull
+       ok(0, "variable not null, must have existed somehow. inconceivable!")
+       .return()
+wasnull:
+       todo(0,'errorson did not throw an exception for calling find_name on an unbound variable with PARROT_ERRORS_GLOBALS_FLAG')
+       .return()
+myhandler:
+       pop_eh
+       ok(1,'errorson threw an exception for calling find_name on an unbound variable with PARROT_ERRORS_GLOBALS_FLAG')
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/exit.t
==============================================================================
--- branches/ops_pct/t/op/exit.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/exit.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -65,6 +65,7 @@
     pbc_exit_code_is($pbc, 0, 'pbc exits with 0 by default');
 }
 
+# Local Variables:
 #   mode: cperl
 #   cperl-indent-level: 4
 #   fill-column: 100

Modified: branches/ops_pct/t/op/fetch.t
==============================================================================
--- branches/ops_pct/t/op/fetch.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/fetch.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -102,7 +102,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 ft=pir :
+# vim: expandtab shiftwidth=4 ft=pir:

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

Modified: branches/ops_pct/t/op/gc.t
==============================================================================
--- branches/ops_pct/t/op/gc.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/gc.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -200,22 +200,22 @@
 
 
 #Fail if regsave is not marked
-.namespace ["Source"]
+.namespace ['Source']
 .sub get_string :method :vtable # buffer
     $P4  = self
     $P2 = getprop "buffer", $P4
     sweep 1
     unless_null $P2, buffer_ok
-    $P2 = new "Source::Buffer"
-    $P3 = new "String"
-    $P3 = "hello"
-    $P2 = setprop "buf", $P3
-    $P4  = setprop "buffer", $P2
+    $P2 = new ['Source'; 'Buffer']
+    $P3 = new 'String'
+    $P3 = 'hello'
+    $P2 = setprop 'buf', $P3
+    $P4  = setprop 'buffer', $P2
 buffer_ok:
     .return($P2)
 .end
 
-.namespace ["Source::Buffer"]
+.namespace ['Source'; 'Buffer']
 .sub get_string :method :vtable
     $P4 = self
     sweep 1
@@ -227,9 +227,9 @@
 .namespace [ ]
 
 .sub regsave_marked
-    $P0  = newclass "Source"
-    $P1 = newclass "Source::Buffer"
-    $P2 = new "Source"
+    $P0  = newclass 'Source'
+    $P1 = newclass ['Source'; 'Buffer']
+    $P2 = new 'Source'
 
     $S1 = $P2
     is($S1, "hello")
@@ -542,8 +542,7 @@
 F<examples/benchmarks/primes2.py>.
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/inf_nan.t
==============================================================================
--- branches/ops_pct/t/op/inf_nan.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/inf_nan.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -500,8 +500,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/integer.t
==============================================================================
--- branches/ops_pct/t/op/integer.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/integer.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -691,7 +691,7 @@
 
     $I2 = xor $I1, $I1
     is($I2, 0, 'xor - nilpotent on 2')
-    
+
     $I2 = xor $I2, $I2
     is($I2, 0, 'xor - nilpotent on other')
 .end

Modified: branches/ops_pct/t/op/literal.t
==============================================================================
--- branches/ops_pct/t/op/literal.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/literal.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2005, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -33,7 +33,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/number.t
==============================================================================
--- branches/ops_pct/t/op/number.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/number.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -935,7 +935,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/sprintf.t
==============================================================================
--- branches/ops_pct/t/op/sprintf.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/sprintf.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -106,8 +106,6 @@
     skip_tests = 'set_skip_info'()
 
     # how many tests to run?
-    # XXX: this should be summed automatically from test_files data
-    #      until then, it's set to no plan
     test.'plan'(TESTS)
 
   outer_loop:

Modified: branches/ops_pct/t/op/sprintf2.t
==============================================================================
--- branches/ops_pct/t/op/sprintf2.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/sprintf2.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -120,7 +120,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/string.t
==============================================================================
--- branches/ops_pct/t/op/string.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/string.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -19,7 +19,7 @@
 .sub main :main
     .include 'test_more.pir'
 
-    plan(411)
+    plan(412)
 
     set_s_s_sc()
     test_clone()
@@ -98,6 +98,7 @@
     index_three_arg_form()
     index_four_arg_form()
     index_four_arg_form_bug_twenty_two_thousand_seven_hundred_and_eighteen()
+    index_trac_1482()
     index_null_strings()
     index_embedded_nulls()
     index_big_strings()
@@ -182,25 +183,25 @@
 .sub set_s_s_sc
     set $S4, "JAPH"
     set $S5, $S4
-    
+
     is( $S4, "JAPH", '' )
     is( $S5, "JAPH", '' )
 .end
- 
+
 .sub test_clone
     set   $S0, "Foo1"
     clone $S1, $S0
-   
+
     is( $S0, "Foo1", '' )
     is( $S1, "Foo1", '' )
-   
+
     clone $S1, "Bar1"
     is( $S1, "Bar1", '' )
 
-    chopn $S1, 1   
+    chopn $S1, 1
     is( $S1, "Bar", 'the contents of $S1 are no longer constant' )
 .end
- 
+
 .sub clone_null
     null $S0
     clone $S1, $S0
@@ -235,7 +236,7 @@
     is( $S5, "japh", '' )
     is( $S3, "JAPHxyzw", '' )
 .end
- 
+
 .sub chopn_with_set
     set $S4, "JAPHxyzw"
     set $S5, "japhXYZW"
@@ -265,44 +266,44 @@
     chopn   $S1, 1000
     is( $S1, "", '' )
 .end
- 
+
 .sub three_argument_chopn
     set $S1, "Parrot"
     chopn   $S2, $S1, 0
     is( $S1, "Parrot", '' )
     is( $S2, "Parrot", '' )
-    
+
     chopn   $S2, $S1, 1
     is( $S1, "Parrot", '' )
     is( $S2, "Parro", '' )
-    
+
     set     $I0, 2
     chopn   $S2, $S1, $I0
     is( $S1, "Parrot", '' )
     is( $S2, "Parr", '' )
-    
+
     chopn   $S2, "Parrot", 3
     is( $S2, "Par", '' )
-    
+
     chopn   $S1, $S1, 5
     is( $S1, "P", '' )
-    
+
     set     $S1, "Parrot"
     set     $S3, $S1
     chopn   $S2, $S1, 3
     is( $S3, "Parrot", '' )
-   
+
     set     $S3, $S1
     chopn   $S1, 3
     is( $S3, "Par", '' )
 .end
-# 
+#
 .sub three_argument_chopn__oob_values
     set $S1, "Parrot"
     chopn   $S2, $S1, 7
     is( $S1, "Parrot", '' )
     is( $S2, "", '' )
-    
+
     chopn   $S2, $S1, -1
     is( $S1, "Parrot", '' )
     is( $S2, "P", '' )
@@ -347,7 +348,7 @@
     is( $S0, "A string of length 21", '' )
     is( $S1, "length", '' )
 .end
- 
+
 # This asks for substring that shouldn't be allowed...
 .sub exception_substr_oob
     set $S0, "A string of length 21"
@@ -389,7 +390,7 @@
     is( $S0, "A string of length 21", '' )
     is( $S1, "length 21", '' )
 .end
- 
+
 .sub five_arg_substr_w_rep_eq_length
     set $S0, "abcdefghijk"
     set $S1, "xyz"
@@ -890,20 +891,20 @@
     repeat $S1, $S0, 12
     is( $S0, "x", 'repeat_s_s|sc_i|ic' )
     is( $S1, "xxxxxxxxxxxx", 'repeat_s_s|sc_i|ic' )
-    
+
     set $I0, 12
     set $S2, "X"
     repeat $S3, $S2, $I0
     is( $S2, "X", 'repeat_s_s|sc_i|ic' )
     is( $S3, "XXXXXXXXXXXX", 'repeat_s_s|sc_i|ic' )
-    
+
     repeat $S4, "~", 12
     is( $S4, "~~~~~~~~~~~~", 'repeat_s_s|sc_i|ic' )
-    
+
     repeat $S5, "~", $I0
     is( $S5, "~~~~~~~~~~~~", 'repeat_s_s|sc_i|ic' )
-   
-  
+
+
     repeat $S6, "***", 0
     is( $S6, "", 'repeat_s_s|sc_i|ic' )
 .end
@@ -951,7 +952,7 @@
     set $S1, "rot"
     index $I1, $S0, $S1
     is( $I1, "3", 'index, 3-arg form' )
-    
+
     set $S1, "bar"
     index $I1, $S0, $S1
     is( $I1, "-1", 'index, 3-arg form' )
@@ -962,10 +963,10 @@
     set $S1, "ar"
     index $I1, $S0, $S1, 0
     is( $I1, "1", 'index, 4-arg form' )
-    
+
     index $I1, $S0, $S1, 2
     is( $I1, "4", 'index, 4-arg form' )
-    
+
     set $S1, "qwx"
     index $I1, $S0, $S1, 0
     is( $I1, "-1", 'index, 4-arg form' )
@@ -976,40 +977,48 @@
     set $S0, " is "
     index $I0, $S1, $S0, 0
     is( $I0, "4", 'index, 4-arg form, bug 22718' )
-    
+
     set $S0, "is"
     index $I0, $S1, $S0, 0
     is( $I0, "2", 'index, 4-arg form, bug 22718' )
 .end
 
+.sub index_trac_1482
+    $S0 = unicode:"bubuc"
+    $S1 = unicode:"buc"
+
+    $I0 = index $S0, $S1, 0
+    is ($I0, 2, 'index, 4-arg, partial-match causes failure: TT #1482')
+.end
+
 .sub index_null_strings
     set $S0, "Parrot"
     set $S1, ""
     index $I1, $S0, $S1
     is( $I1, "-1", 'index, null strings' )
-    
+
     index $I1, $S0, $S1, 0
     is( $I1, "-1", 'index, null strings' )
-   
+
     index $I1, $S0, $S1, 5
     is( $I1, "-1", 'index, null strings' )
-    
+
     index $I1, $S0, $S1, 6
     is( $I1, "-1", 'index, null strings' )
-    
+
     set $S0, ""
     set $S1, "a"
     index $I1, $S0, $S1
     is( $I1, "-1", 'index, null strings' )
-    
+
     index $I1, $S0, $S1, 0
     is( $I1, "-1", 'index, null strings' )
-    
+
     set $S0, "Parrot"
     null $S1
     index $I1, $S0, $S1
     is( $I1, "-1", 'index, null strings' )
-    
+
     null $S0
     null $S1
     index $I1, $S0, $S1
@@ -1021,7 +1030,7 @@
     set $S1, "\0"
     index $I1, $S0, $S1
     is( $I1, "3", 'index, embedded nulls' )
-    
+
     index $I1, $S0, $S1, 4
     is( $I1, "4", 'index, embedded nulls' )
 .end
@@ -1033,10 +1042,10 @@
     repeat $S1, $S1, 500
     index $I1, $S0, $S1
     is( $I1, "0", 'index, big strings' )
-   
+
     index $I1, $S0, $S1, 1234
     is( $I1, "1234", 'index, big strings' )
-    
+
     index $I1, $S0, $S1, 9501
     is( $I1, "-1", 'index, big strings' )
 .end
@@ -1148,15 +1157,15 @@
     set $S0, " 1"
     set $I0, $S0
     is( $I0, "1", 'string to int' )
-    
+
     set $S0, "-1"
     set $I0, $S0
     is( $I0, "-1", 'string to int' )
-    
+
     set     $S0, "Not a number"
     set $I0, $S0
     is( $I0, "0", 'string to int' )
-    
+
     set $S0, ""
     set $I0, $S0
     is( $I0, "0", 'string to int' )
@@ -1169,7 +1178,7 @@
     concat $S2, $S2, $S0
     concat $S2, $S2, $S1
     is( $S2, "<JAPH>", 'concat/substr (COW)' )
-   
+
     substr $S0, $S2, 1, 4
     is( $S0, "JAPH", 'concat/substr (COW)' )
 .end
@@ -1422,7 +1431,7 @@
     interp = getinterp
     .local pmc config
     config = interp[.IGLOBALS_CONFIG_HASH]
-    .local int intvalsize 
+    .local int intvalsize
     intvalsize = config['intvalsize']
 
     $S0 = ''
@@ -1436,7 +1445,7 @@
     concat $S0, ' '
     inc $I0
     le $I0, 20, padding_loop
-    
+
     # Now see what sprintf comes up with
     $P0 = new 'ResizablePMCArray'
     $P0[0] = -1
@@ -1450,7 +1459,7 @@
     exchange $S0, $S1
     is( $S0, "String #1", 'exchange' )
     is( $S1, "String #0", 'exchange' )
-    
+
     set $S2, "String #2"
     exchange $S2, $S2
     is( $S2, "String #2", 'exchange' )
@@ -1529,13 +1538,13 @@
     set $S1, ""
     bands $S1, $S2
     nok( $S1, 'ok2' )
-    
+
     null $S2
     set $S1, "abc"
     bands $S1, $S2
     null $S3
     is( $S1, $S3, 'ok3' )
-    
+
     set $S2, ""
     bands $S1, $S2
     nok( $S1, 'ok4' )
@@ -1577,7 +1586,7 @@
     bors $S1, $S2
     null $S3
     is( $S1, $S3, 'bors NULL string' )
- 
+
     bors $S2, $S1
     is( $S2, $S3, 'bors NULL string' )
 
@@ -1687,7 +1696,7 @@
     bxors $S1, $S2
     is( $S1, "%Ec", 'bxors 2' )
     is( $S2, "Dw", 'bxors 2' )
-    
+
     set $S1, "abc"
     set $S2, "   X"
     bxors $S1, $S2
@@ -1702,7 +1711,7 @@
     is( $S0, "%Ec", 'bxors 3' )
     is( $S1, "a2c", 'bxors 3' )
     is( $S2, "Dw", 'bxors 3' )
-    
+
     set $S1, "abc"
     set $S2, "   Y"
     bxors $S0, $S1, $S2
@@ -1730,7 +1739,7 @@
     bnots $S1, $S2
     null $S3
     is( $S1, $S3, 'bnots NULL string' )
-    
+
     bnots $S2, $S1
     is( $S2, $S3, 'bnots NULL string' )
 .end
@@ -1744,10 +1753,10 @@
     # bnots $S2, $S1
     # is( $S1, "a2c", 'bnots 2' )
     # is( $S2, "\xC2\x9E\xC3\x8D\xC2\x9C", 'bnots 2' )
-    # 
+    #
     # bnots $S1, $S1
     # is( $S1, "\xC2\x9E\xC3\x8D\xC2\x9C", 'bnots 2' )
-    # 
+    #
     # bnots $S1, $S1
     # is( $S1, "a2c", 'bnots 2' )
 .end
@@ -1782,14 +1791,14 @@
     split $P1, "", ""
     set $I1, $P1
     is( $I1, "0", 'split on empty string' )
-    
+
     split $P0, "", "ab"
     set $I0, $P0
     is( $I0, "2", 'split on empty string' )
-    
+
     set $S0, $P0[0]
     is( $S0, "a", 'split on empty string' )
-    
+
     set $S0, $P0[1]
     is( $S0, "b", 'split on empty string' )
 .end
@@ -1798,7 +1807,7 @@
     split $P0, "a", "afooabara"
     set $I0, $P0
     is( $I0, "5", 'split on non-empty string' )
-    
+
     set $S0, $P0[0]
     is( $S0, "", 'split on non-empty string' )
     set $S0, $P0[1]
@@ -1819,7 +1828,7 @@
     push $P0, "a"
     join $S0, "--", $P0
     is( $S0, "a", 'join' )
-    
+
     new $P0, 'ResizablePMCArray'
     push $P0, "a"
     push $P0, "b"
@@ -1883,21 +1892,21 @@
     if_null $S0, ERROR
       $I99 = 1
   ERROR:
-    ok($I99, 'if_null s_ic' ) 
+    ok($I99, 'if_null s_ic' )
 
     null $S0
     $I99 = 1
     if_null $S0, OK
         $I99 = 0
-  OK: 
-    ok($I99, 'if_null s_ic' ) 
+  OK:
+    ok($I99, 'if_null s_ic' )
 .end
 
 .sub test_upcase
     set $S0, "abCD012yz"
     upcase $S1, $S0
     is( $S1, "ABCD012YZ", 'upcase' )
-    
+
     upcase $S0
     is( $S0, "ABCD012YZ", 'upcase inplace' )
 
@@ -1932,7 +1941,7 @@
     set $S0, "ABcd012YZ"
     downcase $S1, $S0
     is( $S1, "abcd012yz", 'downcase' )
-    
+
     downcase $S0
     is( $S0, "abcd012yz", 'downcase inplace' )
 
@@ -1967,7 +1976,7 @@
     set $S0, "aBcd012YZ"
     titlecase $S1, $S0
     is( $S1, "Abcd012yz", 'titlecase' )
-    
+
     titlecase $S0
     is( $S0, "Abcd012yz", 'titlecase inplace' )
 
@@ -2111,7 +2120,7 @@
     is( s, "Foo/Bar", 'bug 60030' )
 .end
 .sub constant_string_and_modify_in_situ_op_rt_bug_60030
-    
+
     doit_sub_for_but_60030('Foo::Bar')
     # repeat to prove that the constant 'Foo4::Bar4' remains unchanged
     doit_sub_for_but_60030('Foo::Bar')
@@ -2177,7 +2186,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 ft=pir :
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/string_cmp.t
==============================================================================
--- branches/ops_pct/t/op/string_cmp.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/string_cmp.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -98,7 +98,7 @@
     ok( 1, 'eq_s_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'eq_s_s_ic' ) 
+   ok( 0, 'eq_s_s_ic' )
    END:
 .end
 
@@ -141,7 +141,7 @@
     ok( 1, 'eq_sc_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'eq_sc_s_ic' ) 
+   ok( 0, 'eq_sc_s_ic' )
    END:
 .end
 
@@ -184,7 +184,7 @@
     ok( 1, 'eq_s_sc_ic' )
     goto END
   ERROR:
-   ok( 0, 'eq_s_sc_ic' ) 
+   ok( 0, 'eq_s_sc_ic' )
    END:
 .end
 
@@ -216,7 +216,7 @@
     ok( 1, 'eq_sc_sc_ic' )
     goto END
   ERROR:
-   ok( 0, 'eq_sc_sc_ic' ) 
+   ok( 0, 'eq_sc_sc_ic' )
    END:
 .end
 
@@ -277,7 +277,7 @@
     ok( 1, 'ne_s_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'ne_s_s_ic' ) 
+   ok( 0, 'ne_s_s_ic' )
    END:
 .end
 
@@ -327,7 +327,7 @@
     ok( 1, 'ne_sc_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'ne_sc_s_ic' ) 
+   ok( 0, 'ne_sc_s_ic' )
    END:
 .end
 
@@ -377,7 +377,7 @@
     ok( 1, 'ne_s_sc_ic' )
     goto END
   ERROR:
-   ok( 0, 'ne_s_sc_ic' ) 
+   ok( 0, 'ne_s_sc_ic' )
    END:
 .end
 
@@ -416,7 +416,7 @@
     ok( 1, 'ne_sc_sc_ic' )
     goto END
   ERROR:
-   ok( 0, 'ne_sc_sc_ic' ) 
+   ok( 0, 'ne_sc_sc_ic' )
    END:
 .end
 
@@ -472,7 +472,7 @@
     ok( 1, 'lt_s_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'lt_s_s_ic' ) 
+   ok( 0, 'lt_s_s_ic' )
    END:
 .end
 
@@ -517,7 +517,7 @@
     ok( 1, 'lt_sc_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'lt_sc_s_ic' ) 
+   ok( 0, 'lt_sc_s_ic' )
    END:
 .end
 
@@ -562,7 +562,7 @@
     ok( 1, 'lt_s_sc_ic' )
     goto END
   ERROR:
-   ok( 0, 'lt_s_sc_ic' ) 
+   ok( 0, 'lt_s_sc_ic' )
    END:
 .end
 
@@ -596,7 +596,7 @@
     ok( 1, 'lt_sc_sc_ic' )
     goto END
   ERROR:
-   ok( 0, 'lt_sc_sc_ic' ) 
+   ok( 0, 'lt_sc_sc_ic' )
    END:
 .end
 
@@ -654,7 +654,7 @@
     ok( 1, 'le_s_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'le_s_s_ic' ) 
+   ok( 0, 'le_s_s_ic' )
    END:
 .end
 
@@ -701,7 +701,7 @@
     ok( 1, 'le_sc_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'le_sc_s_ic' ) 
+   ok( 0, 'le_sc_s_ic' )
    END:
 .end
 
@@ -748,7 +748,7 @@
     ok( 1, 'le_s_sc_ic' )
     goto END
   ERROR:
-   ok( 0, 'le_s_sc_ic' ) 
+   ok( 0, 'le_s_sc_ic' )
    END:
 .end
 
@@ -784,7 +784,7 @@
     ok( 1, 'le_sc_sc_ic' )
     goto END
   ERROR:
-   ok( 0, 'le_sc_sc_ic' ) 
+   ok( 0, 'le_sc_sc_ic' )
    END:
 .end
 
@@ -841,7 +841,7 @@
     ok( 1, 'gt_s_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'gt_s_s_ic' ) 
+   ok( 0, 'gt_s_s_ic' )
    END:
 .end
 
@@ -887,7 +887,7 @@
     ok( 1, 'gt_sc_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'gt_sc_s_ic' ) 
+   ok( 0, 'gt_sc_s_ic' )
    END:
 .end
 
@@ -933,7 +933,7 @@
     ok( 1, 'gt_s_sc_ic' )
     goto END
   ERROR:
-   ok( 0, 'gt_s_sc_ic' ) 
+   ok( 0, 'gt_s_sc_ic' )
    END:
 .end
 
@@ -968,7 +968,7 @@
     ok( 1, 'gt_sc_sc_ic' )
     goto END
   ERROR:
-   ok( 0, 'gt_sc_sc_ic' ) 
+   ok( 0, 'gt_sc_sc_ic' )
    END:
 .end
 
@@ -1027,7 +1027,7 @@
     ok( 1, 'ge_s_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'ge_s_s_ic' ) 
+   ok( 0, 'ge_s_s_ic' )
    END:
 .end
 
@@ -1075,7 +1075,7 @@
     ok( 1, 'ge_sc_s_ic' )
     goto END
   ERROR:
-   ok( 0, 'ge_sc_s_ic' ) 
+   ok( 0, 'ge_sc_s_ic' )
    END:
 .end
 
@@ -1123,7 +1123,7 @@
     ok( 1, 'ge_s_sc_ic' )
     goto END
   ERROR:
-   ok( 0, 'ge_s_sc_ic' ) 
+   ok( 0, 'ge_s_sc_ic' )
    END:
 .end
 
@@ -1166,7 +1166,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 ft=pir :
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/string_mem.t
==============================================================================
--- branches/ops_pct/t/op/string_mem.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/string_mem.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!./parrot
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -37,11 +37,40 @@
 .sub _main :main
     .include 'test_more.pir'
 
-    .local pmc _
     plan(TESTS)
 
     test_stringinfo()
+    $S0 = interpinfo .INTERPINFO_GC_SYS_NAME
+    if $S0 == "inf" goto dont_run_hanging_tests
     test_pin_unpin()
+    goto test_end
+  dont_run_hanging_tests:
+    ok(1, "#TODO - Test disabled on gc_inf")
+    ok(1, "#TODO - Test disabled on gc_inf")
+  test_end:
+.end
+
+.sub test_stringinfo
+
+    $S1 = "Hello, world"
+    $S0 = $S1
+    $I0 = stringinfo $S0, .STRINGINFO_STRSTART
+    $I1 = stringinfo $S1, .STRINGINFO_STRSTART
+    is($I0, $I1, "stringinfo - test STRSTART can see COW in action")
+
+    $I0 = stringinfo $S0, .STRINGINFO_HEADER
+    $I1 = stringinfo $S1, .STRINGINFO_HEADER
+    is($I0, $I1, "stringinfo - STRHEADER on full COW strings keeps same value")
+
+    $S2 = substr $S0, 7
+    is($S2, "world", "sanity check")
+    $I4 = stringinfo $S0, .STRINGINFO_STRSTART
+    $I2 = stringinfo $S2, .STRINGINFO_STRSTART
+    $I3 = $I2 - $I4
+    is($I3, 7, "stringinfo - STRSTART can see COW in action")
+
+    $I2 = stringinfo $S2, .STRINGINFO_HEADER
+    isnt($I0, $I2, "stringinfo - STRHEADER on different COW strings same value")
 .end
 
 .sub test_pin_unpin
@@ -106,30 +135,6 @@
     ok( $I0, "location of string changed by unpin/collect" )
 .end
 
-.sub test_stringinfo
-    .local pmc _
-
-    $S1 = "Hello, world"
-    $S0 = $S1
-    $I0 = stringinfo $S0, .STRINGINFO_STRSTART
-    $I1 = stringinfo $S1, .STRINGINFO_STRSTART
-    is($I0, $I1, "stringinfo - test STRSTART can see COW in action")
-
-    $I0 = stringinfo $S0, .STRINGINFO_HEADER
-    $I1 = stringinfo $S1, .STRINGINFO_HEADER
-    is($I0, $I1, "stringinfo - STRHEADER on full COW strings keeps same value")
-
-    $S2 = substr $S0, 7
-    is($S2, "world", "sanity check")
-    $I4 = stringinfo $S0, .STRINGINFO_STRSTART
-    $I2 = stringinfo $S2, .STRINGINFO_STRSTART
-    $I3 = $I2 - $I4
-    is($I3, 7, "stringinfo - STRSTART can see COW in action")
-
-    $I2 = stringinfo $S2, .STRINGINFO_HEADER
-    isnt($I0, $I2, "stringinfo - STRHEADER on different COW strings same value")
-.end
-
 #.constant STRINGINFO_STRSTART	2
 #.constant STRINGINFO_BUFLEN	3
 #.constant STRINGINFO_FLAGS	4
@@ -140,4 +145,4 @@
 #   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/stringu.t
==============================================================================
--- branches/ops_pct/t/op/stringu.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/stringu.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -96,7 +96,7 @@
     print $S0
     print "\n"
     end
-.end 
+.end
 CODE
 aaaaaa\xf0\x9d\x90\x80-aaaaaa
 OUTPUT

Modified: branches/ops_pct/t/op/sysinfo.t
==============================================================================
--- branches/ops_pct/t/op/sysinfo.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/sysinfo.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 # initial work by Brad Gilbert b2gills <at> gmail <dot> com
@@ -55,31 +55,31 @@
 my @setup = (
     { pconfig_key => 'intvalsize',
       pasm_key    => 1,
-      pir_key     => 'SYSINFO_PARROT_INTSIZE',	
+      pir_key     => 'SYSINFO_PARROT_INTSIZE',
       desc        => 'integer size',
       reg_type    => 'I',
     },
     { pconfig_key => 'doublesize',
       pasm_key    => 2,
-      pir_key     => 'SYSINFO_PARROT_FLOATSIZE',	
+      pir_key     => 'SYSINFO_PARROT_FLOATSIZE',
       desc        => 'float size',
       reg_type    => 'I',
     },
     { pconfig_key => 'ptrsize',
       pasm_key    => 3,
-      pir_key     => 'SYSINFO_PARROT_POINTERSIZE',	
+      pir_key     => 'SYSINFO_PARROT_POINTERSIZE',
       desc        => 'pointer size',
       reg_type    => 'I',
     },
     { pconfig_key => 'osname',
       pasm_key    => 4,
-      pir_key     => 'SYSINFO_PARROT_OS',	
+      pir_key     => 'SYSINFO_PARROT_OS',
       desc        => 'osname',
       reg_type    => 'S',
     },
     { pconfig_key => 'cpuarch',
       pasm_key    => 7,
-      pir_key     => 'SYSINFO_CPU_ARCH',	
+      pir_key     => 'SYSINFO_CPU_ARCH',
       desc        => 'CPU Arch Family',
       reg_type    => 'S',
     },
@@ -142,7 +142,7 @@
     print S1
 end
 CODE
-        } # END TODO block
+        } # END todo block
     } # END inner SKIP block
 } # END outer SKIP block
 
@@ -174,3 +174,10 @@
 .end
 CODE
 }
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/t/op/time.t
==============================================================================
--- branches/ops_pct/t/op/time.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/time.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -165,8 +165,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/op/trans.t
==============================================================================
--- branches/ops_pct/t/op/trans.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/trans.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -4,7 +4,7 @@
 
 =head1 NAME
 
-t/op/bitwise.t - Bitwise Ops
+t/op/trans.t - Bitwise Ops
 
 =head1 SYNOPSIS
 
@@ -12,7 +12,7 @@
 
 =head1 DESCRIPTION
 
-Tests various bitwise logical operations.
+Tests various transcendental operations
 
 =cut
 
@@ -20,7 +20,7 @@
     .include 'test_more.pir'
 
     plan(16)
-    
+
     test_sin_n()
     test_sin_i()
     test_cos_n()
@@ -44,17 +44,17 @@
 .sub test_sin_n
     .local num epsilon
     epsilon = _epsilon()
-    
+
     $N0 = sin 0.0
     is($N0, 0.0, "sin(0.0)", epsilon)
-    
+
     $N0 = sin 1.0
     is($N0, 0.841471, "sin(1.0)", epsilon)
-    
+
     $N1 = _pi()
     $N0 = sin $N1
     is($N0, 0.0, "sin(pi)", epsilon)
-    
+
     $N1 = _pi()
     $N1 = $N1 / 2
     $N0 = sin $N1
@@ -64,10 +64,10 @@
 .sub test_sin_i
     .local num epsilon
     epsilon = _epsilon()
-    
+
     $N0 = sin 0
     is($N0, 0.0, "sin(0)", epsilon)
-    
+
     $N0 = sin 1
     is($N0, 0.841471, "sin(1)", epsilon)
 .end
@@ -75,17 +75,17 @@
 .sub test_cos_n
     .local num epsilon
     epsilon = _epsilon()
-    
+
     $N0 = cos 0.0
     is($N0, 1.0, "cos(0.0)", epsilon)
-    
+
     $N0 = cos 1.0
     is($N0, 0.540302, "cos(1.0)", epsilon)
-    
+
     $N1 = _pi()
     $N0 = cos $N1
     is($N0, -1.0, "cos(pi)", epsilon)
-    
+
     $N1 = _pi()
     $N1 = $N1 / 2
     $N0 = cos $N1
@@ -95,10 +95,10 @@
 .sub test_cos_i
     .local num epsilon
     epsilon = _epsilon()
-    
+
     $N0 = cos 0
     is($N0, 1.0, "cos(0)", epsilon)
-    
+
     $N0 = cos 1
     is($N0, 0.540302, "cos(1)", epsilon)
 .end
@@ -106,22 +106,28 @@
 .sub test_tan_n
     .local num epsilon
     epsilon = _epsilon()
-    
+
     $N0 = tan 0.0
     is($N0, 0.0, "tan(0.0)", epsilon)
-    
+
     $N0 = tan 1.0
     is($N0, 1.557408, "tan(1.0)", epsilon)
-.end    
+.end
 
 .sub test_tan_i
     .local num epsilon
     epsilon = _epsilon()
-    
+
     $N0 = tan 0
     is($N0, 0.0, "tan(0)", epsilon)
-    
+
     $N0 = tan 1
     is($N0, 1.557408, "tan(1)", epsilon)
-.end 
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
 

Modified: branches/ops_pct/t/op/trans_old.t
==============================================================================
--- branches/ops_pct/t/op/trans_old.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/trans_old.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -334,7 +334,6 @@
         atan N4, -0.0, -0.0
         .fp_eq_pasm   (N4, -3.1415926, EQ1)
         print "not "
-        print N4
 EQ1:    print "ok 1\\n"
         end
 CODE

Modified: branches/ops_pct/t/op/vivify.t
==============================================================================
--- branches/ops_pct/t/op/vivify.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/op/vivify.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -134,7 +134,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 ft=pir :
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/perl/Parrot_IO.t
==============================================================================
--- branches/ops_pct/t/perl/Parrot_IO.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/perl/Parrot_IO.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -40,9 +40,9 @@
 BEGIN { use_ok('Parrot::IO::Path') }
 
 my $file_temp_work_path = tempdir(
-	'PARROT_IO_XXXX',
-	TMPDIR => 1,
-	CLEANUP => 1
+    'PARROT_IO_XXXX',
+    TMPDIR => 1,
+    CLEANUP => 1
 );
 # you can sort of count on the var below being the unique part of the temp dir
 my $file_temp_dir = (splitdir($file_temp_work_path))[-1];
@@ -89,7 +89,7 @@
 ok( !$r->parent(), 'root has no parent' );
 
 my $d = Parrot::IO::Directory->tmp_directory(
-	catfile($file_temp_dir, 't')
+    catfile($file_temp_dir, 't')
 );
 ok( $d, 'tmp_directory' );
 

Modified: branches/ops_pct/t/perl/Parrot_Test.t
==============================================================================
--- branches/ops_pct/t/perl/Parrot_Test.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/perl/Parrot_Test.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -286,11 +286,12 @@
 test_test($desc);
 
 $desc = 'pir_error_output_like: todo';
-$line = line_num(+21);
+$line = line_num(+22);
 my $location;
 if ($Test::Builder::VERSION <= eval '0.33') {
     $location = "in $0 at line $line";
-} else {
+}
+else {
     $location = "at $0 line $line";
 }
 test_out("not ok 1 - $desc # TODO foo");
@@ -316,7 +317,8 @@
 OUTPUT
 if($Test::Builder::VERSION == 0.84) {
     test_test(title => $desc, skip_err => 1);
-} else {
+}
+else {
     test_test($desc);
 }
 

Modified: branches/ops_pct/t/pir/macro.t
==============================================================================
--- branches/ops_pct/t/pir/macro.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pir/macro.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -36,8 +36,8 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:
+

Modified: branches/ops_pct/t/pmc/arrayiterator.t
==============================================================================
--- branches/ops_pct/t/pmc/arrayiterator.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/arrayiterator.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -132,10 +132,8 @@
 DONE:
 .end
 
-
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/bigint.t
==============================================================================
--- branches/ops_pct/t/pmc/bigint.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/bigint.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -20,7 +20,7 @@
 
     .include 'test_more.pir'
 
-    plan(45)
+    plan(34)
     check_libgmp_good()
 
     set_and_get()
@@ -35,8 +35,6 @@
     interface()
     boolean()
     pi()
-    left_shift()
-    right_shift()
     bugfixes()
 
 .end
@@ -79,14 +77,14 @@
 
 NoLibGMP:
     say 'No BigInt Lib configured'
-    skip(45)
+    skip(34)
     exit 0
 
 OldLibGMP:
     print 'Buggy GMP version ['
     print $S3
     say '] with huge digit multiply - please upgrade'
-    skip(45)
+    skip(34)
     exit 0
 
 ret:
@@ -935,348 +933,6 @@
     ret:
 .end
 
-.sub left_shift
-    $I1 = 1
-
-    $P0 = new ['BigInt']
-    $P1 = new ['BigInt']
-
-# shl with a positive shift
-    $P0 = 2
-    $P1 = 2
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S0 = $P2
-    eq $S0, '8', OK1
-    $I1 = 0
-    say 'shl(bigint 2,bigint 2) did not return 8'
-OK1:
-    $P0 = '100000000000'
-    $P1 = 10
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S0 = $P2
-    eq $S0, '102400000000000', OK2
-    $I1 = 0
-    say 'shl(bigint 100000000000,bigint 10) did not return 102400000000000'
-OK2:
-
-# shl with a negative shift
-    $P0 = 8
-    $P1 = -2
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S0 = $P2
-    is($S0, '2', 'shl(bigint, -bigint)')
-    $P0 = '102400000000000'
-    $P1 = -10
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S0 = $P2
-    eq $S0, '100000000000', OK3
-    $I1 = 0
-    say 'shl(bigint 102400000000000,bigint -10) did not return 100000000000'
-OK3:
-
-    ok($I1, 'shl(bigint, +bigint)')
-    $I1 = 1
-
-# shl_int with a positive shift
-    $P0 = 2
-    $P1 = 1
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S0 = $P2
-    eq $S0, '4', OK4
-    $I1 = 0
-    say 'shl(bigint 2,integer 1) did not return 4'
-OK4:
-    $P0 = '100000000000'
-    $P1 = 1
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S0 = $P2
-    eq $S0, '200000000000', OK5
-    $I1 = 0
-    say 'shl(bigint 100000000000,integer 1) did not return 200000000000'
-OK5:
-    $P0 = '100000000000'
-    $P1 = 10
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S0 = $P2
-    eq $S0, '102400000000000', OK6
-    $I1 = 0
-    say 'shl(bigint 100000000000,integer 10) did not return 102400000000000'
-OK6:
-
-# shl_int with a negative shift
-
-    $P0 = 4
-    $P1 = -1
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S0 = $P2
-    eq $S0, '2', OK7
-    $I1 = 0
-    say 'shl(bigint 4,integer -1) did not return 2'
-OK7:
-    $P0 = '200000000000'
-    $P1 = -1
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S0 = $P2
-    eq $S0, '100000000000', OK8
-    $I1 = 0
-    say 'shl(bigint 200000000000,integer -1) did not return 100000000000'
-OK8:
-    $P0 = '102400000000000'
-    $P1 = -10
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S0 = $P2
-    eq $S0, '100000000000', OK9
-    $I1 = 0
-    say 'shl(bigint 102400000000000,integer -10) did not return 100000000000'
-OK9:
-    ok($I1, 'shl(bigint,integer)')
-    $I1 = 1
-
-# shl_int throws an error when promotion is disabled
-
-    errorson .PARROT_ERRORS_OVERFLOW_FLAG
-    $P0 = new ['Integer']
-    $P0 = 1000001
-    $P1 = new ['Integer']
-    $P1 = 10
-
-    ## shift by 10 bits . . .
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S1 = $P2
-    $S2 = typeof $P2
-    eq $S2, 'Integer', OK11
-    $I1 = 0
-    print 'shl(integer 1000001,integer 10) did not return an Integer PMC; got a '
-    print $S2
-    say ' instead.'
-
-OK11:
-    eq $S1,'1024001024', OK12
-    $I1 = 0
-    print 'shl(integer 1000001,integer 10) did not return 1024001024; got '
-    print $S1
-    say ' instead.'
-OK12:
-
-    ## then by 60 bits.
-    $P0 = 1000001
-    $P1 = 60
-    push_eh E1
-        $I1 = 1
-        $P2 = new ['Integer']
-        $P2 = shl $P0, $P1
-        $I1 = 0
-        $S1 = $P2
-        $S2 = typeof $P2
-        print 'Failed to throw exception; return type '
-        print $S2
-        print ', return value '
-        say $P1
-E1:
-    pop_eh
-    get_results '0', $P2
-    $S0 = $P2
-    eq $S0, 'Integer overflow', OK13
-    $I1 = 0
-    say 'shl(integer 1000001, integer 60) throws exception, but wrong type'
-OK13:
-    ok($I1, 'shl(integer 1000001, integer 60) throws "Integer overflow" exception')
-    $I1 = 1
-
-# shl_int and i_shl_int promote Integer to Bigint
-
-    errorsoff .PARROT_ERRORS_OVERFLOW_FLAG
-    ## shift left by 20 bits ...
-    $P0 = new ['Integer']
-    $P0 = 1000001
-    $P1 = new ['Integer']
-    $P1 = 20
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    ## ... then by another 40 bits (total 60) in place.
-    $P1 = 40
-    $P2 = shl $P2, $P1
-    $S1 = $P2
-    $S2 = typeof $P2
-    eq $S2, 'BigInt', OK14
-    $S1 = ''
-OK14:
-    is($S1, '1152922657528351582846976', 'shl(shl(integer 1000001, 20), 40) => bigint 1152922657528351582846976')
-
-# shl_int by 64 bits also promotes to Bigint
-## The C << and >> ops take the right arg modulo the word size in bits (at least
-## on all the systems I have available), so both 32- and 64-bit systems treat
-## shifting by 64 bits as shifting by zero.
-    $P0 = new ['Integer']
-    $P0 = 1000001
-    $P1 = new ['Integer']
-    $P1 = 64
-    $P2 = new ['Integer']
-    $P2 = shl $P0, $P1
-    $S1 = $P2
-    $S2 = typeof $P2
-    eq $S2, 'BigInt', OK15
-    $S1 = ''
-OK15:
-    is($S1, '18446762520453625325551616', 'shl(integer 1000001, 64) => bigint 18446762520453625325551616')
-.end
-
-.sub right_shift
-    $I1 = 1
-#shr_int and i_shr_int with a neg shift promote Integer to Bigint
-
-    $P0 = new ['Integer']
-    $P0 = 1000001
-    $P1 = new ['Integer']
-    $P1 = -10
-    $P2 = new ['Integer']
-    ## shift by 10 bits . . .
-    $P2 = shr $P0, $P1
-#   $S2 = typeof $P2
-#   ne $S2, 'Integer', OK2
-
-    ## then by another 50 bits (total 60) in place.
-    $P1 = -50
-    $P2 = shr $P1
-    $S1 = $P2
-    $S2 = typeof $P2
-    eq $S2, 'BigInt', OK2
-    $S1 = ''
-OK2:
-    is($S1, '1152922657528351582846976', 'shr(shr(integer 1000001, integer -10), -50) => bigint 1152922657528351582846976')
-
-#   shr_bigint
-    $P0 = new ['BigInt']
-    $P0 = 8
-    $P1 = new ['BigInt']
-    $P1 = 2
-    $P2 = new ['BigInt']
-    $P2 = shr $P0, $P1
-    $S0 = $P2
-    eq $S0, '2', OK3
-    $I1 = 0
-    say 'shr(bigint 8, bigint 2) did not return 2'
-OK3:
-
-    $P0 = '102400000000000'
-    $P1 = 10
-    $P2 = shr $P0, $P1
-    $S0 = $P2
-    eq $S0, '100000000000', OK4
-    $I1 = 0
-    say 'shr(bigint 102400000000000, bigint 10) did not return 100000000000'
-OK4:
-    ok($I1, 'shr(bigint, +bigint)')
-    $I1 = 1
-
-# shr_bigint with a negative shift
-## cf the shl_bigint case.
-
-    $P0 = new ['BigInt']
-    $P0 = 2
-    $P1 = new['BigInt']
-    $P1 = -2
-    $P2 = new ['BigInt']
-    $P2 = shr $P0, $P1
-    $S0 = $P2
-    eq $S0, '8', OK5
-    $I1 = 0
-    say 'shr(bigint 2, bigint -2) did not return 8'
-OK5:
-
-    $P0 = '100000000000'
-    $P1 = -10
-    $P2 = shr $P0, $P1
-    $S0 = $P2
-    eq $S0, '102400000000000', OK6
-    $I1 = 0
-    say 'shr(bigint 100000000000, bigint -10) did not return 102400000000000'
-OK6:
-    ok($I1, 'shr(bigint, -bigint)')
-    $I1 = 1
-
-# shr_int
-    $P0 = new ['BigInt']
-    $P0 = 4
-    $P1 = new ['Integer']
-    $P1 = 1
-    $P2 = new ['BigInt']
-    $P2 = shr $P0, $P1
-    $S0 = $P2
-    eq $S0, '2', OK7
-    $I1 = 0
-    say 'shr(bigint 4, integer 1) did not return 2'
-OK7:
-
-    $P0 = '200000000000'
-    $P1 = 1
-    $P2 = shr $P0, $P1
-    $S0 = $P2
-    eq $S0, '100000000000', OK8
-    $I1 = 0
-    say 'shr(bigint 200000000000, integer 1) did not return 100000000000'
-OK8:
-
-    $P0 = '102400000000000'
-    $P1 = 10
-    $P2 = shr $P0, $P1
-    $S0 = $P2
-    eq $S0, '100000000000', OK9
-    $I1 = 0
-    say 'shr(bigint 102400000000000, integer 10) did not return 100000000000'
-OK9:
-
-    ok($I1,'shr(bigint, +integer)')
-    $I1 = 1
-
-# shr_int with a negative shift
-## cf the shl_int case.
-
-    $P0 = new ['BigInt']
-    $P0 = 2
-    $P1 = new ['Integer']
-    $P1 = -1
-    $P2 = new ['BigInt']
-    $P2 = shr $P0, $P1
-    $S0 = $P2
-    eq $S0, '4', OK10
-    $I1 = 0
-    say 'shr(bigint 2, int -1) did not return 4'
-OK10:
-
-    $P0 = '100000000000'
-    $P1 = -1
-    $P2 = new ['BigInt']
-    $P2 = shr $P0, $P1
-    $S0 = $P2
-    eq $S0, '200000000000', OK11
-    $I1 = 0
-    say 'shr(bigint 100000000000, int -1) did not return 200000000000'
-OK11:
-
-    $P1 = -10
-    $P2 = new ['BigInt']
-    $P2 = shr $P0, $P1
-    $S0 = $P2
-    eq $S0, '102400000000000', OK12
-    $I1 = 0
-    say 'shr(bigint 100000000000,int -10) did not return 102400000000000'
-OK12:
-
-    ok($I1,'shr(bigint, -integer)')
-.end
-
 .sub bugfixes
 
     $P0 = new ['BigInt']
@@ -1331,7 +987,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/capture.t
==============================================================================
--- branches/ops_pct/t/pmc/capture.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/capture.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -79,7 +79,7 @@
 
     $I0 = capt[11]
     is($I0, 7, 'get_integer_keyed_int')
-    
+
     $P0 = capt[10]
     is($P0, 'six', 'get_pmc_keyed_int')
 
@@ -106,13 +106,13 @@
 
     $I0 = shift capt
     is($I0, 11, 'shift an integer')
-    
+
     $P0 = shift capt
     is($P0, 'ten', 'shift a PMC')
-    
+
     $N0 = shift capt
     is($N0, 9.5, 'shift a number')
-    
+
     $S0 = shift capt
     is($S0, '8', 'shift a string')
 
@@ -136,7 +136,7 @@
 
     $P0 = capt['gamma']
     is($P0, 'fourteen', 'get_pmc_keyed_str')
-    
+
     $N0 = capt['beta']
     is($N0, 13.5, 'get_number_keyed_str')
 

Modified: branches/ops_pct/t/pmc/class.t
==============================================================================
--- branches/ops_pct/t/pmc/class.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/class.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2007-2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -17,7 +17,7 @@
 =cut
 
 
-.const int TESTS = 63 
+.const int TESTS = 63
 
 
 .sub 'main' :main

Modified: branches/ops_pct/t/pmc/complex.t
==============================================================================
--- branches/ops_pct/t/pmc/complex.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/complex.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -21,7 +21,7 @@
     .include 'fp_equality.pasm'
     .include "iglobals.pasm"
 
-    plan(467)
+    plan(458)
 
     string_parsing()
     exception_malformed_string__real_part()
@@ -53,7 +53,6 @@
     test_sub()
     test_i_sub()
     sprintf_with_a_complex()
-    pow_with_complex_numbers()
     e_raised_pi_time_i__plus_1_equal_0()
     ln_of_complex_numbers()
     exp_of_complex_numbers()
@@ -641,33 +640,6 @@
     .sprintf_is( "%.3f%+.3fi", "0+i", "0.000+1.000i" )
 .end
 
-.macro pow_test_is(base, power, message)
-    c = .base
-    c2 = .power
-    c3 = pow c, c2
-    $S0 = sprintf "%.6f%+.6fi", c3
-    $S1 = .message
-    is( $S0, $S1, $S1 )
-.endm
-
-.sub pow_with_complex_numbers
-    .local pmc c, c2, c3
-    c  = new ['Complex']
-    c2 = new ['Complex']
-    c3 = new ['Complex']
-    .pow_test_is( "i", "i", "0.207880+0.000000i" )
-    .pow_test_is( "i", "2", "-1.000000+0.000000i" )
-    .pow_test_is( "2i", "2", "-4.000000+0.000000i" )
-    .pow_test_is( "2+2i", "2+2i", "-1.452505-0.809890i" )
-    .pow_test_is( "i", "0.5i", "0.455938+0.000000i" )
-    .pow_test_is( 2, "2i", "0.183457+0.983028i" )
-    c2 = new ['Integer']
-    .pow_test_is( "2i", 2, "-4.000000+0.000000i" )
-    .pow_test_is( "2", 4, "16.000000+0.000000i" )
-    c2 = new ['Float']
-    .pow_test_is( "2i", 0.5, "1.000000+1.000000i" )
-.end
-
 .sub e_raised_pi_time_i__plus_1_equal_0
     .local pmc c, c2, c3
     c  = new ['Complex']
@@ -1206,8 +1178,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/continuation.t
==============================================================================
--- branches/ops_pct/t/pmc/continuation.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/continuation.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2006-2007, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -45,7 +45,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/default.t
==============================================================================
--- branches/ops_pct/t/pmc/default.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/default.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -45,8 +45,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/env.t
==============================================================================
--- branches/ops_pct/t/pmc/env.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/env.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -184,7 +184,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/eventhandler.t
==============================================================================
--- branches/ops_pct/t/pmc/eventhandler.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/eventhandler.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,6 +1,6 @@
 #! parrot
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id $
+# Copyright (C) 2007-2010, Parrot Foundation.
+# $Id$
 
 =head1 NAME
 

Modified: branches/ops_pct/t/pmc/exception.t
==============================================================================
--- branches/ops_pct/t/pmc/exception.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/exception.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -172,8 +172,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/exporter.t
==============================================================================
--- branches/ops_pct/t/pmc/exporter.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/exporter.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -405,7 +405,7 @@
 ok 1
 OUT
 
-# TODO: Test exporting mmd subs: TT #1205
+# Test exporting mmd subs: TT #1205
 # https://trac.parrot.org/parrot/ticket/1205
 
 # Local Variables:

Modified: branches/ops_pct/t/pmc/filehandle.t
==============================================================================
--- branches/ops_pct/t/pmc/filehandle.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/filehandle.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2006-2008, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -258,7 +258,7 @@
 
     counter = 0
   read_loop:
-    inc counter 
+    inc counter
     # read in the file one line at a time...
     \$I0 = filehandle.'eof'()
     if \$I0 goto end_read_loop
@@ -444,7 +444,7 @@
 
     \$P0.'print'(1234567890)
     \$P0.'print'("\\n")
-    \$S0 = iso-8859-1:"TÖTSCH" 
+    \$S0 = iso-8859-1:"TÖTSCH"
     \$P0.'print'(\$S0)
     \$P0.'close'()
 
@@ -551,7 +551,7 @@
     .local pmc ifh
     ifh = new ['FileHandle']
     ifh.'encoding'('utf8')
-   
+
     \$S0 = ifh.'readall'('$temp_file')
 
     \$I0 = encoding \$S0

Modified: branches/ops_pct/t/pmc/fixedbooleanarray.t
==============================================================================
--- branches/ops_pct/t/pmc/fixedbooleanarray.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/fixedbooleanarray.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -17,7 +17,7 @@
 
 =cut
 
-.const int TESTS = 36
+.const int TESTS = 37
 
 .sub 'test' :main
     .include 'test_more.pir'
@@ -292,18 +292,17 @@
     size = 1564
     $P0 = size
 
-    $P0.'fill'(0)
+    # Fresh array is empty.
     i = 0
     result = 0
-    $I1 = 0
-  fill_false_loop:
-    unless i < size goto fill_false_end
+  initial_false_loop:
+    unless i < size goto initial_false_end
     $I0 = $P0[i]
     result = or result, $I0
     inc i
-    goto fill_false_loop
-  fill_false_end:
-    nok(result, "Fill with 0")
+    goto initial_false_loop
+  initial_false_end:
+    nok(result, "Fresh array filled with 0")
 
     $P0.'fill'(1)
     i = 0
@@ -317,12 +316,25 @@
     goto fill_true_loop
   fill_true_end:
     ok(result, "Fill with 1")
+
+    $P0.'fill'(0)
+    i = 0
+    result = 0
+    $I1 = 0
+  fill_false_loop:
+    unless i < size goto fill_false_end
+    $I0 = $P0[i]
+    result = or result, $I0
+    inc i
+    goto fill_false_loop
+  fill_false_end:
+    nok(result, "Fill with 0")
+
 .end
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/fixedintegerarray.t
==============================================================================
--- branches/ops_pct/t/pmc/fixedintegerarray.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/fixedintegerarray.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -164,7 +164,7 @@
     $P0[1023] = $P1
 
     $P2 = new ['Key']
-    
+
     $P2 = 25
     $I0 = $P0[$P2]
     is($I0, 125, "Get INTVAL via Key works")
@@ -218,7 +218,7 @@
     a2 = new ['FixedIntegerArray']
 
     is(a1, a2, "Empty arrays are equal")
-    
+
     a1 = 3
     isnt(a1, a2, "Different size arrays aren't equal")
 
@@ -230,15 +230,14 @@
 
     a1[1] = 84
     isnt(a1, a2, "Not equal when second element differ")
-    
+
     a2[1] = 84
     is(a1, a2, "Equal when second element same")
 .end
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/fixedpmcarray.t
==============================================================================
--- branches/ops_pct/t/pmc/fixedpmcarray.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/fixedpmcarray.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -19,7 +19,7 @@
 
 .sub main :main
     .include 'test_more.pir'
-    plan(76)
+    plan(78)
     test_setting_array_size()
     test_assign_from_another()
     test_assign_self()
@@ -27,6 +27,7 @@
     test_resize_exception()
     test_truthiness()
     test_tt991()
+    test_tt1039()
     test_setting_first_elem()
     test_setting_second_elem()
     test_negative_index()
@@ -555,6 +556,48 @@
 CODE
 .end
 
+.sub test_tt1039
+    .local pmc arr
+    arr = new 'FixedPMCArray'
+    arr = 4
+    arr[0] = 'just'
+    arr[1] = 'another'
+    arr[2] = 'perl'
+    arr[3] = 'hacker'
+
+    .local pmc sorted_arr
+    sorted_arr = new 'FixedPMCArray'
+    sorted_arr = 4
+    sorted_arr[0] = 'another'
+    sorted_arr[1] = 'hacker'
+    sorted_arr[2] = 'just'
+    sorted_arr[3] = 'perl'
+
+    $P0 = get_global 'cmpfn1'
+    $P1 = clone arr
+    $P1.'sort'($P0)
+    is_deeply($P1, sorted_arr, 'fpa.sort called with normal Sub')
+
+    $P0 = get_global 'cmpfn2'
+    $P1 = clone arr
+    $P1.'sort'($P0)
+    is_deeply($P1, sorted_arr, 'fpa.sort called with MultiSub')
+.end
+
+.sub 'cmpfn1'
+    .param pmc a
+    .param pmc b
+    $I0 = cmp_str a, b
+    .return ($I0)
+.end
+
+.sub 'cmpfn2' :multi(_, _)
+    .param pmc a
+    .param pmc b
+    $I0 = cmp_str a, b
+    .return ($I0)
+.end
+
 .sub test_resize_exception
     throws_substring(<<'CODE',"FixedPMCArray: Can't resize",'cannot resize FixedPMCArray')
         .sub main
@@ -624,8 +667,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/fixedstringarray.t
==============================================================================
--- branches/ops_pct/t/pmc/fixedstringarray.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/fixedstringarray.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -19,7 +19,7 @@
 
 .sub 'main' :main
     .include 'test_more.pir'
-    plan(44)
+    plan(46)
 
     'test_set_size'()       # 2 tests
     'test_reset_size'()     # 1 test
@@ -37,6 +37,7 @@
     'test_get_string'()     # 1 test
     'test_equality'()       # 5 tests
     'test_gc'()             # 4 tests
+    'test_number'()         # 2 tests
 .end
 
 .sub 'test_set_size'
@@ -364,9 +365,20 @@
 .end
 
 
+.sub 'test_number'
+    .local pmc fsa
+    fsa = new ['FixedStringArray']
+    fsa = 3
+
+    $I0 = fsa
+    is($I0, 3, "get_integer returns correct size")
+    $N0 = fsa
+    is($N0, 3.0, "get_number returns correct size")
+.end
+
+
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/handle.t
==============================================================================
--- branches/ops_pct/t/pmc/handle.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/handle.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -29,8 +29,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/hash.t
==============================================================================
--- branches/ops_pct/t/pmc/hash.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/hash.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -678,7 +678,7 @@
     s1 = get_repr h
     s2 = get_repr cloned
     if s1 != s2 goto fail
-    
+
     goto end
 fail:
     all_ok = 0
@@ -755,7 +755,7 @@
     s1 = get_repr h
     s2 = get_repr cloned
     if s1 != s2 goto fail
-    
+
     goto end
 fail:
     all_ok = 0
@@ -1437,7 +1437,7 @@
     types[$S0] = 1
     goto loop
   done:
-    
+
     $I0 = elements types
     is($I0, 3, "Got 3 different types of PMC keys")
     $I0 = types['ResizableStringArray']

Modified: branches/ops_pct/t/pmc/hashiterator.t
==============================================================================
--- branches/ops_pct/t/pmc/hashiterator.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/hashiterator.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME

Modified: branches/ops_pct/t/pmc/hashiteratorkey.t
==============================================================================
--- branches/ops_pct/t/pmc/hashiteratorkey.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/hashiteratorkey.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!./parrot
-# Copyright (C) 2001-2006, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -37,8 +37,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Copied: branches/ops_pct/t/pmc/imageio.t (from r44740, trunk/t/pmc/imageio.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/t/pmc/imageio.t	Sun Mar  7 19:33:20 2010	(r44743, copy of r44740, trunk/t/pmc/imageio.t)
@@ -0,0 +1,79 @@
+#! parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/pmc/imageio.t - test ImageIO PMC
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/imagio.t
+
+=head1 DESCRIPTION
+
+Tests the ImageIO PMC.
+
+=cut
+
+.sub main :main
+    .include 'test_more.pir'
+
+    plan(11)
+
+    .local pmc imageio
+    imageio = new ['ImageIO']
+    ok(1, 'instantiated ImageIO')
+
+    .local pmc test_pmc
+    test_pmc = 'get_test_simple'()
+    setref imageio, test_pmc
+    $S0 = imageio
+    ok($S0, 'frozen PMC is true (simple)')
+    $S1 = freeze test_pmc
+    is($S0, $S1, 'freeze gives same image as ImageIO (simple)')
+
+    imageio = new ['ImageIO']
+    imageio = $S0
+    $P0 = deref imageio
+    ok($P0, 'thawed PMC is true (simple)')
+    $P1 = thaw $S1
+    is($P0, $P1, 'thaw gives same PMC as ImageIO (simple)')
+    is($P0, test_pmc, 'round trip gives same PMC (simple)')
+
+    imageio = new ['ImageIO']
+    test_pmc = 'get_test_aggregate'()
+    setref imageio, test_pmc
+    $S0 = imageio
+    ok($S0, 'frozen PMC is true (aggregate)')
+    $S1 = freeze test_pmc
+    is($S0, $S1, 'freeze gives same image as ImageIO (aggregate)')
+
+    imageio = new ['ImageIO']
+    imageio = $S0
+    $P0 = deref imageio
+    ok($P0, 'thawed PMC is true (aggregate)')
+    $P1 = thaw $S1
+    is_deeply($P0, $P1, 'thaw gives same PMC as ImageIO (aggregate)')
+    is_deeply($P0, test_pmc, 'round trip gives same PMC (aggregate)')
+.end
+
+.sub get_test_simple
+    $P0 = new ['Integer']
+    $P0 = -99
+    .return ($P0)
+.end
+
+.sub get_test_aggregate
+    $P0 = new ['ResizableStringArray']
+    $P0[0] = 'parrot'
+    $P0[1] = '???'
+    $P0[2] = 'profit'
+    .return ($P0)
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Copied: branches/ops_pct/t/pmc/imageiosize.t (from r44740, trunk/t/pmc/imageiosize.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/t/pmc/imageiosize.t	Sun Mar  7 19:33:20 2010	(r44743, copy of r44740, trunk/t/pmc/imageiosize.t)
@@ -0,0 +1,74 @@
+#! parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/pmc/imageiosize.t - test ImageIOSize PMC
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/imagiosize.t
+
+=head1 DESCRIPTION
+
+Tests the ImageIOSize PMC.
+
+=cut
+
+.sub main :main
+    .include 'test_more.pir'
+
+    plan(4)
+
+    .local pmc iios
+    iios = new ['ImageIOSize']
+    ok(1, 'instantiated ImageIOSize')
+
+    .local pmc test_pmc
+    test_pmc = null
+    setref iios, test_pmc
+    $P0 = deref iios
+    $S0 = freeze test_pmc
+    $I0 = $P0
+    $I1 = length $S0
+    is($I0, $I1, 'gets the same size as freeze (null)')
+
+    iios = new ['ImageIOSize']
+    test_pmc = 'get_test_simple'()
+    setref iios, test_pmc
+    $P0 = deref iios
+    $S0 = freeze test_pmc
+    $I0 = $P0
+    $I1 = length $S0
+    is($I0, $I1, 'gets the same size as freeze (simple)')
+
+    iios = new ['ImageIOSize']
+    test_pmc = 'get_test_aggregate'()
+    setref iios, test_pmc
+    $P0 = deref iios
+    $S0 = freeze test_pmc
+    $I0 = $P0
+    $I1 = length $S0
+    is($I0, $I1, 'gets the same size as freeze (aggregate)')
+.end
+
+.sub get_test_simple
+    $P0 = new ['Integer']
+    $P0 = -99
+    .return ($P0)
+.end
+
+.sub get_test_aggregate
+    $P0 = new ['ResizableStringArray']
+    $P0[0] = 'parrot'
+    $P0[1] = '???'
+    $P0[2] = 'profit'
+    .return ($P0)
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/integer.t
==============================================================================
--- branches/ops_pct/t/pmc/integer.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/integer.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -416,8 +416,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/iterator.t
==============================================================================
--- branches/ops_pct/t/pmc/iterator.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/iterator.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -23,7 +23,7 @@
 
 =cut
 
-# XXX Split this test into aggregate specific one.
+# TT #1478: Split this test into aggregate specific one.
 
 pasm_output_is( <<'CODE', <<'OUTPUT', "new iter" );
     new P2, ['ResizablePMCArray']

Modified: branches/ops_pct/t/pmc/lexinfo.t
==============================================================================
--- branches/ops_pct/t/pmc/lexinfo.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/lexinfo.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2006-2007, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -39,7 +39,7 @@
 .sub inspect_test
     .lex "$a", $P0
     .lex "$b", $P1
-    
+
     $P2 = new 'ParrotInterpreter'
     $P2 = $P2['sub']
     $P2 = $P2.'get_lexinfo'()
@@ -72,7 +72,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/lexpad.t
==============================================================================
--- branches/ops_pct/t/pmc/lexpad.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/lexpad.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2006-2007, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -70,7 +70,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/multidispatch.t
==============================================================================
--- branches/ops_pct/t/pmc/multidispatch.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/multidispatch.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -9,7 +9,7 @@
 use Test::More;
 use Parrot::Test::Util 'create_tempfile';
 
-use Parrot::Test tests => 48;
+use Parrot::Test tests => 46;
 
 =head1 NAME
 
@@ -239,88 +239,6 @@
 42
 OUTPUT
 
-pasm_output_is( <<'CODE', <<'OUTPUT', "PASM INTVAL - new result", todo => 'TT #452' );
-.include "datatypes.pasm"
-    get_global P10, "Integer_bxor_Intval"
-    add_multi "bitwise_xor_int", "Integer,INTVAL,PMC", P10
-
-    new P1, ['Integer']
-    set P1, 3
-    bxor P9, P1, 2
-    print P9
-    print "\n"
-    end
-.pcc_sub Integer_bxor_Intval:
-    get_params "0,0,0", P5, I5, P6
-    print "ok\n"
-    set I10, P5
-    bxor I11, I10, I5
-    new P6, ['Integer']
-    set P6, I11
-    set_returns "0", P6
-    returncc
-CODE
-ok
-1
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "PASM INTVAL - existing result", todo => 'TT #452' );
-.include "datatypes.pasm"
-    get_global P10, "Integer_bxor_Intval"
-    add_multi "bitwise_xor_int", "Integer,INTVAL,PMC", P10
-
-    new P0, ['Integer']
-    new P1, ['Integer']
-    set P1, 3
-    bxor P0, P1, 2
-    print P0
-    print "\n"
-    end
-.pcc_sub Integer_bxor_Intval:
-    get_params "0,0,0", P5, I5, P6
-    print "ok\n"
-    set I10, P5
-    bxor I11, I10, I5
-    set P6, I11
-    set_returns "0", P6
-    returncc
-CODE
-ok
-1
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "PASM INTVAL - mixed", todo => 'TT #452' );
-.include "datatypes.pasm"
-    get_global P10, "Integer_bxor_Intval"
-    add_multi "bitwise_xor_int", "Integer,INTVAL,PMC", P10
-
-    new P0, ['Integer']
-    new P1, ['Integer']
-    set P1, 3
-    bxor P0, P1, 2
-    print P0
-    print "\n"
-    bxor P9, P1, 2
-    print P9
-    print "\n"
-    end
-.pcc_sub Integer_bxor_Intval:
-    get_params "0,0,0", P5, I5, P6
-    print "ok\n"
-    set I10, P5
-    bxor I11, I10, I5
-    new P6, ['Integer']
-    set P6, I11
-    set_returns "0", P6
-    returncc
-
-CODE
-ok
-1
-ok
-1
-OUTPUT
-
 pir_output_is( <<'CODE', <<'OUT', "first dynamic MMD call" );
 
 .sub main :main
@@ -1575,6 +1493,29 @@
 77.788.899.9
 OUTPUT
 
+pir_output_is( <<'CODE', <<'OUTPUT', 'Integer subclass and MMD - TT #784' );
+.sub main :main
+    .local pmc int_c
+    int_c = get_class "Integer"
+
+    .local pmc sub_c
+    sub_c = subclass int_c, "MyInt"
+
+    $P1 = new 'Integer'
+    $P1 = 4
+    $P1 -= 3
+    say $P1
+
+    $P1 = new 'MyInt'
+    $P1 = 4
+    $P1 -= 3
+    say $P1
+.end
+CODE
+1
+1
+OUTPUT
+
 # Local Variables:
 #   mode: cperl
 #   cperl-indent-level: 4

Modified: branches/ops_pct/t/pmc/namespace.t
==============================================================================
--- branches/ops_pct/t/pmc/namespace.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/namespace.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2006-2007, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -56,11 +56,12 @@
 
 .sub main :main
     .include 'test_more.pir'
-    plan(70)
+    plan(74)
 
     create_namespace_pmc()
     verify_namespace_type()
     get_namespace_class()
+    keyed_namespace_lookup()
     get_global_opcode()
     get_sub_from_namespace_hash()
     access_sub_in_namespace()
@@ -167,6 +168,40 @@
 
 .end
 
+.sub keyed_namespace_lookup
+    # Tests to verify behavior of TT #1449
+    $P0 = get_root_namespace
+
+    # Keyed lookup
+    $P1 = $P0["parrot";"Foo";"Bar"]
+    $I0 = isnull $P1
+    is($I0, 0, "can lookup nested namespace by Key")
+    # TODO: Get the function from this namespace and call it to verify we have
+    #       the correct one.
+
+    # Array lookup
+    $P1 = new ['ResizableStringArray']
+    $P1[0] = "parrot"
+    $P1[1] = "Foo"
+    $P1[2] = "Bar"
+    $P1[3] = "Baz"
+    $P2 = $P0[$P1]
+    $I0 = isnull $P1
+    is($I0, 0, "can lookup nested namespace by RSA")
+    # TODO: Get the function from this namespace and call it to verify we have
+    #       the correct one.
+
+    # String lookup
+    $P1 = $P0["parrot"]
+    $P2 = $P1["Foo"]
+    $I0 = isnull $P1
+    is($I0, 0, "can lookup namespace by string")
+    $I0 = isnull $P2
+    is($I0, 0, "can lookup namespace by string")
+    # TODO: Get the function from this namespace and call it to verify we have
+    #       the correct one.
+.end
+
 # L<PDD21//>
 .sub 'get_global_opcode'
   test1:
@@ -486,7 +521,7 @@
 
     # ...now we do!
     $P1 = $P0.'make_namespace'("NewNamespace1")
-    $P2 = $P1["baz"]    
+    $P2 = $P1["baz"]
     $I0 = isnull $P2
     is($I0, 1, "make_namespace also creates new namespaces")
 
@@ -632,6 +667,12 @@
     .return("Foo::Bar")
 .end
 
+# Namespace "Foo";"Bar";"Baz". Nested namespace
+.namespace ["Foo";"Bar";"Baz"]
+.sub 'widget'
+    .return("Foo::Bar::Baz")
+.end
+
 # Namespace specified in ISO-8859-1
 .namespace [ iso-8859-1:"Fran\x{E7}ois" ]
 .sub 'baz'
@@ -660,3 +701,9 @@
 .sub 'baz'
     .return("MyHLL")
 .end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/objects.t
==============================================================================
--- branches/ops_pct/t/pmc/objects.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/objects.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -1790,8 +1790,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Copied: branches/ops_pct/t/pmc/opcode.t (from r44740, trunk/t/pmc/opcode.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/t/pmc/opcode.t	Sun Mar  7 19:33:20 2010	(r44743, copy of r44740, trunk/t/pmc/opcode.t)
@@ -0,0 +1,35 @@
+#! parrot
+# Copyright (C) 2001-2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/pmc/opcode.t - Opcode PMC
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/opcode.t
+
+=cut
+
+.sub main :main
+    .include 'test_more.pir'
+    plan(1)
+    cannot_create_directly()
+.end
+
+.sub cannot_create_directly
+    push_eh cannot_create
+    $P0 = new ['Opcode']
+    ok(0, "shouldn't be able to create new opcode")
+    goto create_end
+  cannot_create:
+    ok(1)
+  create_end:
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Copied: branches/ops_pct/t/pmc/oplib.t (from r44740, trunk/t/pmc/oplib.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/t/pmc/oplib.t	Sun Mar  7 19:33:20 2010	(r44743, copy of r44740, trunk/t/pmc/oplib.t)
@@ -0,0 +1,70 @@
+#! parrot
+# Copyright (C) 2001-2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/pmc/oplib.t - OpLib PMC
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/oplib.t
+
+=cut
+
+.sub main :main
+    .include 'test_more.pir'
+    plan(5)
+    new_oplib()
+    get_end()
+    get_no_opcode()
+    family_end()
+    family_no_opcode()
+.end
+
+.sub new_oplib
+    $P0 = new ['OpLib']
+    $I0 = isnull $P0
+    nok($I0, "new OpLib")
+.end
+
+.sub get_end
+    $P0 = new ['OpLib']
+    # Assumption: we'll always have an end opcode.
+    $I1 = $P0['end']
+    $I0 = isne $I1, -1
+    ok($I0, "got end opcode")
+.end
+
+.sub get_no_opcode
+    $P0 = new ['OpLib']
+    $I1 = $P0['hopeweneverhaveopcodesnamedlikethis']
+    $I0 = iseq $I1, -1
+    ok($I0, "get non existent opcode fails")
+.end
+
+.sub family_end
+    $P0 = new ['OpLib']
+    # Assumption: we'll always have an end opcode.
+    $P1 = $P0.'op_family'('end')
+    $I0 = isnull $P1
+    dec $I0
+    unless $I0 goto done
+    $I0 = elements $P1
+done:
+    is($I0, 1, "'end' family is not null and has 1 element")
+.end
+
+.sub family_no_opcode
+    $P0 = new ['OpLib']
+    $P1 = $P0.'op_family'('hopeweneverhaveopcodesnamedlikethis')
+    $I0 = isnull $P1
+    ok($I0, "non existent opcode family is null")
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+

Modified: branches/ops_pct/t/pmc/orderedhashiterator.t
==============================================================================
--- branches/ops_pct/t/pmc/orderedhashiterator.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/orderedhashiterator.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!./parrot
-# Copyright (C) 2001-2006, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -41,8 +41,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/os.t
==============================================================================
--- branches/ops_pct/t/pmc/os.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/os.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -238,7 +238,8 @@
         end
 .end
 CODE
-} else {
+}
+else {
   SKIP: {
     skip 'broken test TT #457', 1 if $solaris;
 

Modified: branches/ops_pct/t/pmc/packfile.t
==============================================================================
--- branches/ops_pct/t/pmc/packfile.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/packfile.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -308,8 +308,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/packfileannotation.t
==============================================================================
--- branches/ops_pct/t/pmc/packfileannotation.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/packfileannotation.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,6 @@
 #!parrot
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
+# $Id$
 
 =head1 NAME
 
@@ -49,8 +50,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/packfileannotations.t
==============================================================================
--- branches/ops_pct/t/pmc/packfileannotations.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/packfileannotations.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,6 @@
 #!parrot
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
+# $Id$
 
 
 =head1 NAME
@@ -149,8 +150,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/packfileconstanttable.t
==============================================================================
--- branches/ops_pct/t/pmc/packfileconstanttable.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/packfileconstanttable.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -195,8 +195,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/packfiledirectory.t
==============================================================================
--- branches/ops_pct/t/pmc/packfiledirectory.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/packfiledirectory.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -143,8 +143,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/packfilefixupentry.t
==============================================================================
--- branches/ops_pct/t/pmc/packfilefixupentry.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/packfilefixupentry.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -82,8 +82,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/packfilefixuptable.t
==============================================================================
--- branches/ops_pct/t/pmc/packfilefixuptable.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/packfilefixuptable.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -62,8 +62,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/packfilerawsegment.t
==============================================================================
--- branches/ops_pct/t/pmc/packfilerawsegment.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/packfilerawsegment.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -110,8 +110,7 @@
 
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/packfilesegment.t
==============================================================================
--- branches/ops_pct/t/pmc/packfilesegment.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/packfilesegment.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -26,8 +26,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/parrotinterpreter.t
==============================================================================
--- branches/ops_pct/t/pmc/parrotinterpreter.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/parrotinterpreter.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!parrot
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -83,11 +83,11 @@
     $P0 = interp['namespace';0]
     $I0 = isa $P0, 'NameSpace'
     ok($I0, 'Got ParrotInterp.namespace')
-    
+
     $P0 = interp['continuation';0]
     $I0 = isa $P0, 'Continuation'
     ok($I0, 'Got ParrotInterp.continuation')
-    
+
     $P0 = interp['annotations';1]
     $S0 = $P0['foo']
     is($S0, 'bar', 'Got ParrotInterp.annotations')
@@ -116,8 +116,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/pmc.t
==============================================================================
--- branches/ops_pct/t/pmc/pmc.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/pmc.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -51,7 +51,7 @@
 my $checkTypes;
 my %types_we_cant_test
     = map { $_ => 1; } (    # These require initializers.
-    qw(default Null Iterator ArrayIterator HashIterator StringIterator OrderedHashIterator Enumerate ParrotObject ParrotThread BigInt LexInfo LexPad Object Handle),
+    qw(default Null Iterator ArrayIterator HashIterator StringIterator OrderedHashIterator Enumerate ParrotObject ParrotThread BigInt LexInfo LexPad Object Handle Opcode),
 
     # Instances of these appear to have other types.
     qw(PMCProxy Class) );

Modified: branches/ops_pct/t/pmc/prop.t
==============================================================================
--- branches/ops_pct/t/pmc/prop.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/prop.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2005, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -134,7 +134,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/ro.t
==============================================================================
--- branches/ops_pct/t/pmc/ro.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/ro.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2006-2007, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -225,7 +225,7 @@
 
 =pod
 
-TT #1036: should this work? 
+TT #1036: should this work?
 
 .sub resizablepmcarray_recursive
     .local pmc foo

Modified: branches/ops_pct/t/pmc/scalar.t
==============================================================================
--- branches/ops_pct/t/pmc/scalar.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/scalar.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2006-2007, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -26,8 +26,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/scheduler.t
==============================================================================
--- branches/ops_pct/t/pmc/scheduler.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/scheduler.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -116,7 +116,6 @@
 
 # Local Variables:
 #   mode: pir
-#   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/signal.t
==============================================================================
--- branches/ops_pct/t/pmc/signal.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/signal.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -22,8 +22,7 @@
 
 =cut
 
-# actually more platforms should work - all POSIX compliant ones - but
-# signals are currently not enabled for all in src/events.c
+# actually more platforms should work - all POSIX compliant ones
 # a second problem is to get the test doing the right thing: mainly figuring
 # out what PID to kill. The "ps" command isn't one of the portable ones.
 

Modified: branches/ops_pct/t/pmc/string.t
==============================================================================
--- branches/ops_pct/t/pmc/string.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/string.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -230,7 +230,7 @@
     new $P1, ['Float']
     set $P1, 6.5
     repeat $P2, $P0, $P1
-    is( $P2, 'yyyyyy', 'Float arg to repeat' ) 
+    is( $P2, 'yyyyyy', 'Float arg to repeat' )
 
     set $P0, "z"
     new $P1, ['String']
@@ -256,7 +256,7 @@
     new $P1, ['Float']
     set $P1, 6.5
     repeat $P3, $P0, $P1
-    is( $P3, 'yyyyyy', 'Float arg to repeat' ) 
+    is( $P3, 'yyyyyy', 'Float arg to repeat' )
 
     set $P0, "z"
     new $P1, ['String']
@@ -1026,11 +1026,11 @@
     # Get
     $S0 = s[0]
     is($S0, 'B', 'Get string by index')
-    
+
     $I0 = s[1]
     $I1 = ord 'A'
     is($I0, $I1, 'Get integer by index')
-    
+
     $P0 = s[2]
     is($P0, 'R', 'Get PMC by index')
 
@@ -1052,8 +1052,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/stringhandle.t
==============================================================================
--- branches/ops_pct/t/pmc/stringhandle.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/stringhandle.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2006-2008, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -255,7 +255,7 @@
 
     counter = 0
   write_loop:
-    inc counter 
+    inc counter
     if counter > 10000 goto end_write_loop
 
     stringhandle.'print'(counter)
@@ -268,7 +268,7 @@
 
     counter = 0
   read_loop:
-    inc counter 
+    inc counter
     # read in the file one line at a time...
     $I0 = stringhandle.'eof'()
     if $I0 goto end_read_loop
@@ -448,7 +448,7 @@
 
     \$P0.'print'(1234567890)
     \$P0.'print'("\\n")
-    \$S0 = iso-8859-1:"TÖTSCH" 
+    \$S0 = iso-8859-1:"TÖTSCH"
     \$P0.'print'(\$S0)
     \$P0.'close'()
 
@@ -549,7 +549,7 @@
     .local pmc ifh
     ifh = new ['StringHandle']
     ifh.'encoding'('utf8')
-   
+
     \$S0 = ifh.'readall'('temp_file')
 
     \$I0 = encoding \$S0

Modified: branches/ops_pct/t/pmc/stringiterator.t
==============================================================================
--- branches/ops_pct/t/pmc/stringiterator.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/stringiterator.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -97,8 +97,7 @@
 .end
 
 # Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
+#   mode: pir
 #   fill-column: 100
 # End:
-# vim: expandtab shiftwidth=4 filetype=pir:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/t/pmc/sub.t
==============================================================================
--- branches/ops_pct/t/pmc/sub.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/pmc/sub.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -27,6 +27,8 @@
 
 =cut
 
+my @todo;
+
 pasm_output_is( <<'CODE', <<'OUTPUT', "PASM subs - invokecc" );
     .const 'Sub' P0 = "func"
 
@@ -835,9 +837,14 @@
 main
 OUTPUT
 
-my @todo = ( todo => 'broken with JIT (TT #983)' )
-    if ( defined $ENV{TEST_PROG_ARGS} and
-        $ENV{TEST_PROG_ARGS} =~ /--runcore=jit/ );
+ at todo = (
+    defined $ENV{TEST_PROG_ARGS}
+        and
+    $ENV{TEST_PROG_ARGS} =~ /--runcore=jit/
+)
+    ? ( todo => 'broken with JIT (TT #983)' )
+    : ();
+
 pir_output_is( <<'CODE', <<'OUTPUT', "caller introspection via interp", @todo );
 .sub main :main
 .include "interpinfo.pasm"
@@ -1425,12 +1432,12 @@
 PIR
     $P1 = compreg 'PIR'
     $P1 = $P1($S1)
-    
+
     $P3 = new 'ParrotInterpreter'
     $P3 = $P3['sub']
     $P2 = $P1[0]
     $P2.'set_outer'($P3)
-    
+
     $P1()
 .end
 CODE
@@ -1637,11 +1644,11 @@
 pir_output_is( <<'CODE', <<'OUTPUT', 'init_pmc' );
 .sub 'main'
     .local pmc init, s, regs, arg_info
-    
+
     init = new ['Hash']
     init['start_offs']  = 42
     init['end_offs']    = 115200
-    
+
     regs = new ['FixedIntegerArray']
     regs = 4
     regs[0] = 1
@@ -1694,7 +1701,7 @@
     $P0 = inspect s, 'pos_optional'
     print 'pos_optional '
     say $P0
-    
+
     $P0 = inspect s, 'pos_slurpy'
     print 'pos_slurpy '
     say $P0

Modified: branches/ops_pct/t/run/options.t
==============================================================================
--- branches/ops_pct/t/run/options.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/run/options.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2005-2007, Parrot Foundation.
+# Copyright (C) 2005-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -20,7 +20,7 @@
 use warnings;
 use lib qw( lib . ../lib ../../lib );
 
-use Test::More tests => 26;
+use Test::More tests => 27;
 use Parrot::Config;
 use File::Temp 0.13 qw/tempfile/;
 use File::Spec;
@@ -80,7 +80,7 @@
     for my $val (qw/ slow fast bounds trace /) {
         for my $opt ( '-R ', '--runcore ', '--runcore=' ) {
             $cmd = qq{"$PARROT" $opt$val "$second_pir_file" $redir};
-            is( qx{$cmd}, "second\n", "<$opt$val> option" );
+            is( qx{$cmd}, "second\n", "<$opt$val> option)" ) or diag $cmd;
         }
     }
 
@@ -93,6 +93,9 @@
 
 ## TT #1150 test remaining options
 
+# Test --runtime-prefix
+like( qx{$PARROT --runtime-prefix}, qr/^.+$/, "--runtime-prefix" );
+
 # clean up temporary files
 unlink $first_pir_file;
 unlink $second_pir_file;

Modified: branches/ops_pct/t/src/embed.t
==============================================================================
--- branches/ops_pct/t/src/embed.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/src/embed.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -93,7 +93,7 @@
 "\n",
         &errstr
     );
-    Parrot_call_sub(interp, code, "v");
+    Parrot_ext_call(interp, code, "->");
 
     Parrot_destroy(interp);
     return 0;
@@ -160,7 +160,7 @@
     subname = Parrot_new_string(interp, "hello", 5, (const char *)NULL, 0);
     sub = Parrot_PMC_get_pmc_strkey(interp, parrotns,  subname);
     /* Execute it */
-    Parrot_call_sub(interp, sub, "v");
+    Parrot_ext_call(interp, sub, "->");
 
     Parrot_destroy(interp);
     return 0;
@@ -216,7 +216,7 @@
         &errstr
     );
     hellosub = Parrot_sub_new_from_c_func(interp, (void (*)())& hello, "vJ");
-    Parrot_call_sub(interp, code, "vP", hellosub);
+    Parrot_ext_call(interp, code, "P->", hellosub);
 
     Parrot_destroy(interp);
     return 0;
@@ -285,7 +285,7 @@
     Parrot_PMC_set_pmc_strkey(interp, parrotns, helloname, hellosub);
 
     /* Call it */
-    discard = Parrot_call_sub(interp, code, "v");
+    Parrot_ext_call(interp, code, "->");
 
     Parrot_destroy(interp);
     return 0;

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

Modified: branches/ops_pct/t/steps/auto/cgoto-01.t
==============================================================================
--- branches/ops_pct/t/steps/auto/cgoto-01.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/steps/auto/cgoto-01.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -5,7 +5,7 @@
 
 use strict;
 use warnings;
-use Test::More tests =>  45;
+use Test::More tests =>  25;
 use Carp;
 use lib qw( lib t/configure/testlib );
 use_ok('config::auto::cgoto');
@@ -37,10 +37,6 @@
 my $ret = $step->runstep($conf);
 ok( $ret, "runstep() returned true value" );
 ok(defined($step->result()), "A result was defined");
-ok(defined($conf->data->get('TEMP_cg_h')), "An attribute has been defined");
-ok(defined($conf->data->get('TEMP_cg_c')), "An attribute has been defined");
-ok(defined($conf->data->get('TEMP_cg_o')), "An attribute has been defined");
-ok(defined($conf->data->get('TEMP_cg_r')), "An attribute has been defined");
 ok(defined($conf->data->get('cg_flag')), "An attribute has been defined");
 
 $conf->replenish($serialized);
@@ -68,18 +64,10 @@
 ########### _evaluate_cgoto() ###########
 
 $step->_evaluate_cgoto($conf, 1);
-ok($conf->data->get('TEMP_cg_h'), "An attribute was set to true value");
-ok($conf->data->get('TEMP_cg_c'), "An attribute was set to true value");
-ok($conf->data->get('TEMP_cg_o'), "An attribute was set to true value");
-ok($conf->data->get('TEMP_cg_r'), "An attribute was set to true value");
 ok($conf->data->get('cg_flag'), "An attribute was set to true value");
 is($step->result(), q{yes}, "Expected result was set");
 
 $step->_evaluate_cgoto($conf, 0);
-is($conf->data->get('TEMP_cg_h'), q{}, "An attribute was set to empty string");
-is($conf->data->get('TEMP_cg_c'), q{}, "An attribute was set to empty string");
-is($conf->data->get('TEMP_cg_o'), q{}, "An attribute was set to empty string");
-is($conf->data->get('TEMP_cg_r'), q{}, "An attribute was set to empty string");
 is($conf->data->get('cg_flag'), q{}, "An attribute was set to empty string");
 is($step->result(), q{no}, "Expected result was set");
 
@@ -99,10 +87,6 @@
         sub { $step->_evaluate_cgoto($conf, 1) },
         \$stdout
     );
-    ok($conf->data->get('TEMP_cg_h'), "An attribute was set to true value");
-    ok($conf->data->get('TEMP_cg_c'), "An attribute was set to true value");
-    ok($conf->data->get('TEMP_cg_o'), "An attribute was set to true value");
-    ok($conf->data->get('TEMP_cg_r'), "An attribute was set to true value");
     ok($conf->data->get('cg_flag'), "An attribute was set to true value");
     is($step->result(), q{yes}, "Expected result was set");
 }
@@ -113,14 +97,6 @@
         sub { $step->_evaluate_cgoto($conf, 0) },
         \$stdout
     );
-    is($conf->data->get('TEMP_cg_h'), q{},
-        "An attribute was set to empty string");
-    is($conf->data->get('TEMP_cg_c'), q{},
-        "An attribute was set to empty string");
-    is($conf->data->get('TEMP_cg_o'), q{},
-        "An attribute was set to empty string");
-    is($conf->data->get('TEMP_cg_r'), q{},
-        "An attribute was set to empty string");
     is($conf->data->get('cg_flag'), q{},
         "An attribute was set to empty string");
     is($step->result(), q{no}, "Expected result was set");

Modified: branches/ops_pct/t/steps/auto/snprintf-01.t
==============================================================================
--- branches/ops_pct/t/steps/auto/snprintf-01.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/steps/auto/snprintf-01.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -35,24 +35,6 @@
 $conf->options->set(%{$args});
 my $step = test_step_constructor_and_description($conf);
 
-# The test of runstep() below will need to be TODO-ed until such time as
-# we can test with all the data which the Parrot::Configure object would
-# normally have during regular configuration at the onset of this step.
-# That's because runstep() consists almost solely of calls to C
-# programs.  We can't refactor runstep()'s guts out into internal
-# subroutines and test them explicitly as we've been able to do for
-# other configuration steps.  We won't lose any coverage by commenting
-# out the TODO block for the time being, as the coverage analysis will,
-# at the very least, pick up runstep() while running the step itself.
-#
-#TODO: {
-#    # http://rt.perl.org/rt3/Ticket/Display.html?id=47391
-#    local $TODO =
-#        q<Reported failing where vendor-supplied Perl 5 Config.pm does not match true state of system available for Parrot configuration>;
-#    ok($step->runstep($conf), "runstep() returned true value");
-#} #'
-
-
 $conf->replenish($serialized);
 
 ########## _evaluate_snprintf() ##########

Modified: branches/ops_pct/t/steps/auto/warnings-01.t
==============================================================================
--- branches/ops_pct/t/steps/auto/warnings-01.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/steps/auto/warnings-01.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -5,7 +5,7 @@
 
 use strict;
 use warnings;
-use Test::More tests =>  41;
+use Test::More qw(no_plan); # tests =>  26;
 use Carp;
 use lib qw( lib t/configure/testlib );
 use_ok('config::auto::warnings');
@@ -31,111 +31,59 @@
 $conf->add_steps($pkg);
 
 my $serialized = $conf->pcfreeze();
+my $step;
 
-$conf->options->set( %{$args} );
 SKIP: {
     skip 'Tests not yet passing on Sun/Solaris',
-    39
+    23
     if $^O =~ m/sun|solaris/i;
 
-my $step = test_step_constructor_and_description($conf);
-
-my %potential_warnings_seen;
-$conf->options->set(cage => 1);
-$step->_add_cage_warnings($conf);
-%potential_warnings_seen = map { $_, 1 } @{ $step->{potential_warnings} };
-ok($potential_warnings_seen{'-std=c89'}, "Cage warning added");
-
-$conf->replenish($serialized);
+# Simulate the  case where C compiler is not gcc.
 $conf->options->set( %{$args} );
 $step = test_step_constructor_and_description($conf);
-$conf->options->set(maintainer => 1);
-$step->_add_maintainer_warnings($conf);
-%potential_warnings_seen = map { $_, 1 } @{ $step->{potential_warnings} };
-ok($potential_warnings_seen{'-Wlarger-than-4096'}, "Maintainer warning added");
-
-$conf->replenish($serialized);
-
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-my $warning = q{-Wphony_warning};
-auto::warnings::_set_warning($conf, $warning, 1, undef);
-ok(! $conf->data->get($warning),
-    "Got expected setting for warning");
-
-$conf->replenish($serialized);
-
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-{
-    my $warning = q{-Wphony_warning};
-    my $stdout;
-    capture(
-        sub { auto::warnings::_set_warning($conf, $warning, 1, 1); },
-        \$stdout,
-    );
-    ok(! $conf->data->get($warning),
-        "Got expected setting for warning");
-    like($stdout, qr/exit code:\s+1/, "Got expected verbose output");
-}
-
-$conf->replenish($serialized);
-
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-my $output = q{some string};
-my $tryflags = q{some flag};
-my $rv = auto::warnings::_set_ccflags($conf, $output, $tryflags, undef);
-is($rv, 1, "_set_ccflags() returned 1 as expected");
-is($conf->data->get("ccflags"), $tryflags, "ccflags changed as expected");
-
-$conf->replenish($serialized);
-
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-{
-    my $output = q{some string};
-    my $tryflags = q{some flag};
-    my ($rv, $stdout);
-    capture(
-        sub { $rv = auto::warnings::_set_ccflags($conf, $output, $tryflags, 1); },
-        \$stdout,
-    );
-    is($rv, 1, "_set_ccflags() returned 1 as expected");
-    is($conf->data->get("ccflags"), $tryflags, "ccflags changed as expected");
-    like($stdout, qr/ccflags:\s+$tryflags/, "Got expected verbose output");
-}
-
-$conf->replenish($serialized);
-
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-# Mock case where C compiler is not gcc.
 $conf->data->set( gccversion => undef );
 ok($step->runstep($conf), "runstep() returned true value");
 is($step->result(), q{skipped}, "Got expected result");
 
+$step->set_result( undef );
 $conf->replenish($serialized);
 
-$conf->options->set( %{$args} );
+# Simulate the case where C compiler is not gcc:  verbose
+$conf->options->set( verbose => 1 );
 $step = test_step_constructor_and_description($conf);
+$conf->data->set( gccversion => undef );
 {
-    my ($stdout, $rv);
-    # Mock case where C compiler is not gcc.
-    $conf->data->set( gccversion => undef );
-    $conf->options->set( verbose => 1 );
+    my ($stdout, $stderr, $rv);
     capture(
         sub { $rv = $step->runstep($conf); },
         \$stdout,
+        \$stderr,
     );
     ok($rv, "runstep() returned true value");
     is($step->result(), q{skipped}, "Got expected result");
-    like($stdout,
-        qr/Currently we only set warnings/,
-        "Got expected verbose output"
-    );
+    like($stdout, qr/We do not \(yet\) probe for warnings for your compiler/s,
+        "Got expected verbose output: compiler with warnings not yet supported" );
 }
 
+$step->set_result( undef );
+$conf->replenish($serialized);
+
+# Simulate case where --cage warnings are requested
+$conf->options->set( verbose => undef );
+$step = test_step_constructor_and_description($conf);
+$conf->data->set( gccversion => 'defined' );
+$conf->data->set( 'g++' => undef );
+$conf->options->set( cage => 1 );
+ok($step->runstep($conf), "runstep() returned true value");
+
+# This test is fragile, as it depends on the current state of --cage,
+# which changes over time, and on the compiler, which may not support
+# this option.
+like($conf->data->get( 'ccwarn' ),
+    qr/-Wunreachable-code/,
+    "'cage' warning set as expected"
+);
+
 } # End SKIP block for Sun/Solaris
 
 $conf->cc_clean();

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

Modified: branches/ops_pct/t/steps/gen/makefiles-01.t
==============================================================================
--- branches/ops_pct/t/steps/gen/makefiles-01.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/steps/gen/makefiles-01.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -68,16 +68,10 @@
        #["IF(value == xx)",                 0], # invalid op error
        #["IF(value = xx)",                  0], # invalid op error
        ["IF(value=xx)",                     0], # also invalid, no warning. checks for key value=xx
-
-       # Legacy syntax                 true or false
-       ["CONDITIONED_LINE(true)",           1],
-       ["INVERSE_CONDITIONED_LINE(true)",   0],
-       ["CONDITIONED_LINE(false)",          0],
-       ["INVERSE_CONDITIONED_LINE(false)",  1],
       );
 }
 
-use Test::More tests => (8 + @cond_tests);
+use Test::More tests => (7 + @cond_tests);
 use Carp;
 use lib qw( . lib );
 
@@ -114,7 +108,6 @@
 }
 
 is($missing_SOURCE, 0, "No Makefile source file missing");
-ok(-f $step->{CFLAGS_source}, "CFLAGS source file located");
 
 my $index = undef;
 sub result {

Modified: branches/ops_pct/t/steps/init/hints/darwin-01.t
==============================================================================
--- branches/ops_pct/t/steps/init/hints/darwin-01.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/steps/init/hints/darwin-01.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -96,7 +96,7 @@
       $defaults{architectures}, $stored, $flagsref, $flag
     );
     like(
-        $flagsref->{$flag}, 
+        $flagsref->{$flag},
         qr{-someflag -someotherflag},
         "_strip_arch_flags_engine(): '-arch' flags and extra whitespace removed",
     );
@@ -162,7 +162,7 @@
     like($flagsref->{$flag},
         qr/-someflag -someotherflag/,
         "_strip_arch_flags(): '-arch' flags and extra whitespace removed",
-    );    
+    );
 
     my ($stdout, $stderr);
     capture(

Modified: branches/ops_pct/t/tools/dev/pmctree.t
==============================================================================
--- branches/ops_pct/t/tools/dev/pmctree.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/tools/dev/pmctree.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 202007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 # pmctree.t
 

Modified: branches/ops_pct/t/tools/install/02-install_files.t
==============================================================================
--- branches/ops_pct/t/tools/install/02-install_files.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/tools/install/02-install_files.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -30,7 +30,7 @@
 
     {
         my ( $stdout, $stderr, $rv );
-    
+
         eval {
             capture(
                 sub { $rv = install_files($tdir, 1); },
@@ -60,8 +60,8 @@
             \$stderr,
         );
         like($stderr, qr/Bad reference passed in \$files/, "Catches non-HASH files");
-    
-        like( $stdout, qr/Installing \.\.\./, 
+
+        like( $stdout, qr/Installing \.\.\./,
             'Got expected installation message' );
     }
 }
@@ -87,7 +87,7 @@
             \$stderr,
         );
         ok( $rv, 'install_files() completed successfully in dry-run case' );
-    
+
         my $files_created = 0;
         foreach my $el (@$files_ref) {
             $files_created++ if -f $tdir . $el->{Dest};
@@ -107,7 +107,7 @@
             \$stderr,
         );
         ok( $rv, 'install_files() completed successfully in production case' );
-    
+
         my $files_created = 0;
         foreach my $el (@$files_ref) {
             $files_created++ if -f "$tdir$el->{Dest}";
@@ -152,7 +152,7 @@
             \$stderr,
         );
         ok( $rv, 'install_files() completed successfully in mock-Cygwin case' );
-    
+
         my $files_created = 0;
         foreach my $el (@$files_ref) {
             $files_created++ if -f "$tdir$el->{Dest}";
@@ -202,7 +202,7 @@
             \$stderr,
         );
         ok( $rv, 'install_files() completed successfully in mock-Cygwin case' );
-    
+
         my $files_created = 0;
         foreach my $el (@$files_ref) {
             $files_created++ if -f "$tdir$el->{Dest}";
@@ -240,8 +240,8 @@
             \$stderr,
         );
         ok( $rv, 'install_files() handled non-existent file as expected' );
-    
-        like( $stdout, qr/Installing \.\.\./, 
+
+        like( $stdout, qr/Installing \.\.\./,
             'Got expected installation message' );
     }
 }

Modified: branches/ops_pct/t/tools/install/03-lines_to_files.t
==============================================================================
--- branches/ops_pct/t/tools/install/03-lines_to_files.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/tools/install/03-lines_to_files.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -232,7 +232,7 @@
 
 __END__
 
-# Can't safely run lines_to_files() more than once in a program until it's been fixed, 
+# Can't safely run lines_to_files() more than once in a program until it's been fixed,
 # and we can't fix it until its tested, so I've commented most of these out until we've
 # fixed lines_to_files() not to use @ARGV
 
@@ -254,8 +254,8 @@
 #
 #    # Second lines_to_files test
 ##    eval { lines_to_files(
-##        $metatransforms, $transformorder, 
-##        [qw(MANIFEST MANIFEST.generated)], 
+##        $metatransforms, $transformorder,
+##        [qw(MANIFEST MANIFEST.generated)],
 ##        $options, $parrotdir
 ##    ); };
 ##    ok($@ =~ /^Unknown install location in MANIFEST for file/, 'fails for install locations not specified in transforms');
@@ -282,8 +282,8 @@
 #    };
 #
 #    ($files, $installable_exe, $directories) = lines_to_files(
-#        $metatransforms, $othertransforms, 
-#        [qw(MANIFEST MANIFEST.generated)], 
+#        $metatransforms, $othertransforms,
+#        [qw(MANIFEST MANIFEST.generated)],
 #        { packages => 'main' }, $parrotdir
 #    );
 #    ok((ref($files) and ref($installable_exe) and ref($directories)), 'lines_to_files returns something vaguely sensible');

Modified: branches/ops_pct/t/tools/ops2pm/05-renum_op_map_file.t
==============================================================================
--- branches/ops_pct/t/tools/ops2pm/05-renum_op_map_file.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/tools/ops2pm/05-renum_op_map_file.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 # 05-renum_op_map_file.t
 
@@ -127,3 +127,10 @@
     return ($lastcode, $lastnumber);
 }
 
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
+

Modified: branches/ops_pct/t/tools/ops2pm/08-sort_ops.t
==============================================================================
--- branches/ops_pct/t/tools/ops2pm/08-sort_ops.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/tools/ops2pm/08-sort_ops.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -177,17 +177,12 @@
             \$stderr
         );
         ok($ret, "sort_ops returned successfully" );
-#  TODO: {
-#             local $TODO = 'broken warning about experimental ops';
 
-            like(
-                $stderr,
-                qr|experimental, not in ops\.num|,
-                "Got expected warning about experimental ops"
-            );
-#        }
-
-        # To do:  Test that the sorting was correct.
+        like(
+            $stderr,
+            qr|experimental, not in ops\.num|,
+            "Got expected warning about experimental ops"
+        );
 
         ok( chdir $cwd, 'changed back to starting directory after testing' );
     }

Modified: branches/ops_pct/t/tools/pbc_disassemble.t
==============================================================================
--- branches/ops_pct/t/tools/pbc_disassemble.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/tools/pbc_disassemble.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2009, Parrot Foundation
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME

Modified: branches/ops_pct/t/tools/pmc2cutils/03-dump_vtable.t
==============================================================================
--- branches/ops_pct/t/tools/pmc2cutils/03-dump_vtable.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/tools/pmc2cutils/03-dump_vtable.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -23,7 +23,6 @@
 use_ok('Parrot::Pmc2c::Pmc2cMain');
 use_ok('File::Basename');
 use_ok( 'File::Temp', qw| tempdir | );
-use Data::Dumper;
 
 my ( %opt, @include, @args );
 my $self;

Modified: branches/ops_pct/t/tools/pmc2cutils/04-dump_pmc.t
==============================================================================
--- branches/ops_pct/t/tools/pmc2cutils/04-dump_pmc.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/tools/pmc2cutils/04-dump_pmc.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -23,7 +23,6 @@
 use File::Basename;
 use File::Copy;
 use FindBin;
-use Data::Dumper;
 use_ok('Parrot::Pmc2c::Pmc2cMain');
 use_ok('Cwd');
 use_ok( 'File::Temp', qw| tempdir | );
@@ -111,7 +110,7 @@
     #create a dump for default.pmc
     Parrot::Pmc2c::Pmc2cMain->new(
         {
-            include => \@include, 
+            include => \@include,
             opt=>\%opt,
             args=>[qq{$temppmcdir/default.pmc}],
             bin=>$Bin
@@ -215,7 +214,7 @@
     #create a dump for default.pmc
     Parrot::Pmc2c::Pmc2cMain->new(
         {
-            include => \@include, 
+            include => \@include,
             opt=>\%opt,
             args=>[qq{$temppmcdir/default.pmc}],
             bin=>$Bin
@@ -272,7 +271,7 @@
     for my $pmc ( qq{$temppmcdir/default.pmc},  qq{$temppmcdir/scalar.pmc}, qq{$temppmcdir/integer.pmc} ) {
         Parrot::Pmc2c::Pmc2cMain->new(
             {
-                include => \@include, 
+                include => \@include,
                 opt=>\%opt,
                 args=>[$pmc],
                 bin=>$Bin
@@ -376,7 +375,7 @@
     #create a dump for default.pmc
     Parrot::Pmc2c::Pmc2cMain->new(
         {
-            include => \@include, 
+            include => \@include,
             opt=>\%opt,
             args=>[qq{$temppmcdir/default.pmc}],
             bin=>$Bin
@@ -470,7 +469,7 @@
     #create a dump for default.pmc
     Parrot::Pmc2c::Pmc2cMain->new(
         {
-            include => \@include, 
+            include => \@include,
             opt=>\%opt,
             args=>[qq{$temppmcdir/default.pmc}],
             bin=>$Bin
@@ -538,7 +537,7 @@
     #create a dump for default.pmc
     Parrot::Pmc2c::Pmc2cMain->new(
         {
-            include => \@include, 
+            include => \@include,
             opt=>\%opt,
             args=>[qq{$temppmcdir/default.pmc}],
             bin=>$Bin

Modified: branches/ops_pct/t/tools/pmc2cutils/05-gen_c.t
==============================================================================
--- branches/ops_pct/t/tools/pmc2cutils/05-gen_c.t	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/t/tools/pmc2cutils/05-gen_c.t	Sun Mar  7 19:33:20 2010	(r44743)
@@ -119,7 +119,7 @@
     #create a dump for default.pmc
     Parrot::Pmc2c::Pmc2cMain->new(
         {
-            include => \@include, 
+            include => \@include,
             opt=>\%opt,
             args=>[qq{$temppmcdir/default.pmc}],
             bin=>$Bin
@@ -228,7 +228,7 @@
     for my $pmc ( qq{$temppmcdir/default.pmc},  qq{$temppmcdir/class.pmc} ) {
         Parrot::Pmc2c::Pmc2cMain->new(
             {
-                include => \@include, 
+                include => \@include,
                 opt=>\%opt,
                 args=>[$pmc],
                 bin=>$Bin

Deleted: branches/ops_pct/tools/build/cc_flags.pl
==============================================================================
--- branches/ops_pct/tools/build/cc_flags.pl	Sun Mar  7 19:33:20 2010	(r44742)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,131 +0,0 @@
-#! perl
-################################################################################
-# Copyright (C) 2001-2003, Parrot Foundation.
-# $Id$
-################################################################################
-
-=head1 NAME
-
-tools/build/cc_flags.pl - Process compiler flags
-
-=head1 SYNOPSIS
-
-    % perl tools/build/cc_flags.pl transform compiler flags
-
-=head1 DESCRIPTION
-
-This script is used in a F<Makefile> to process the flags to pass to the
-compiler for each C file.
-
-See F<config/gen/makefiles/CFLAGS.in> for the transformation file format.
-
-=cut
-
-################################################################################
-
-use strict;
-use warnings;
-
-my $cflags = shift;
-
-open my $F, '<', $cflags or die "open $cflags: $!\n";
-
-my @options;
-
-while (<$F>) {
-    chomp;
-    s/#.*//;
-    next unless /\S/;
-
-    my $regex;
-    if (s/^\{(.*?)\}\s*//) {
-        next unless $1;
-        $regex = qr/$1/;
-    }
-    elsif (s/^(\S+)\s*//) {
-        $regex = qr/^\Q$1\E$/;
-    }
-    else {
-        die "syntax error in $cflags: line $., $_\n";
-    }
-
-    for ( ; ; ) {
-        if (s/^([-+])\{(.*?)\}\s*//) {
-            next unless $2;
-            my ( $sign, $options ) = ( $1, $2 );
-            foreach my $option ( split ' ', $options ) {
-                push @options, [ $regex, $sign, $option ];
-            }
-        }
-        elsif (s{s(.)(.*?)\1(.*?)\1([imsx]*)\s*}{}) {
-            my $mod = "";
-            $mod = "(?$4)" if $4;
-
-            push @options, [ $regex, 's', "$mod$2", $3 ];
-        }
-        elsif (/\S/) {
-            die "syntax error in $cflags: line $., $_\n";
-        }
-        else {
-            last;
-        }
-    }
-}
-
-my ($cfile) = grep /\.c$/, @ARGV;
-
-my ( $inject_point, $where );
-
-foreach (@ARGV) {
-    last if $_ eq '';
-    ++$where;
-}
-if ($where) {
-
-    # Found a "" - remove it
-    splice @ARGV, $where, 1;
-    $inject_point = $where;
-}
-else {
-    $inject_point = 1;
-}
-
-if ($cfile) {
-    foreach my $option (@options) {
-        if ( $cfile =~ $option->[0] ) {
-            if ( $option->[1] eq '+' ) {
-                splice @ARGV, $inject_point, 0, $option->[2];
-            }
-            elsif ( $option->[1] eq '-' ) {
-                @ARGV = grep { $_ ne $option->[2] } @ARGV;
-            }
-            else {
-                foreach my $arg (@ARGV) {
-                    $arg =~ s/$option->[2]/$option->[3]/;
-                }
-            }
-        }
-    }
-
-    # Visual C++ already prints the source file name...
-    if ( $ARGV[0] =~ /cl(?:\.exe)?/i ) {
-
-        # ...but only the file name, so we print the path
-        # to the directory first
-        if ( $cfile =~ /(.*[\/\\])/ ) {
-            print $1;
-        }
-    }
-    else {
-        print "$cfile\n";
-    }
-}
-
-exit system(@ARGV) / 256;
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/ops_pct/tools/build/nativecall.pir
==============================================================================
--- branches/ops_pct/tools/build/nativecall.pir	Sun Mar  7 19:33:20 2010	(r44742)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,891 +0,0 @@
-# Copyright (C) 2010, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-tools/build/nativecall.pir - Build up the native call routines
-
-=head1 SYNOPSIS
-
-    % ./parrot tools/build/nativecall.pir <src/call_list.txt >src/nci.c
-
-=head1 DESCRIPTION
-
-This script creates the Native Call Interface file F<src/nci.c>. It
-parses a file of function signatures of the form:
-
- <return-type-specifier><ws><parameter-type-specifiers>[<ws>][#<comment>]
-    ...
-Empty lines and lines containing only whitespace or comment are ignored.
-The types specifiers are documented in F<src/call_list.txt>.
-
-=head1 SEE ALSO
-
-F<src/call_list.txt>.
-F<docs/pdds/pdd16_native_call.pod>.
-
-=cut
-
-.sub 'main' :main
-    .local pmc sig_table, sigs
-    sig_table = 'gen_sigtable'()
-    sigs = 'read_sigs'()
-
-    $S0 = 'get_head'(sig_table, sigs)
-    say $S0
-    $S0 = 'get_thunks'(sig_table, sigs)
-    say $S0
-    $S0 = 'get_loader'(sig_table, sigs)
-    say $S0
-    $S0 = 'get_coda'(sig_table, sigs)
-    say $S0
-.end
-
-# get_{head,thunks,loader,coda} {{{
-
-.sub 'get_head'
-    .param pmc ignored :slurpy
-    .return (<<'HEAD')
-/* ex: set ro ft=c:
- * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
- *
- * This file is generated automatically by tools/build/nativecall.pir
- *
- * Any changes made here will be lost!
- *
- */
-
-/* nci.c
- *  Copyright (C) 2001-2009, Parrot Foundation.
- *  SVN Info
- *     $Id$
- *  Overview:
- *     Native Call Interface routines. The code needed to build a
- *     parrot to C call frame is in here
- *  Data Structure and Algorithms:
- *  History:
- *  Notes:
- *  References:
- */
-#include "parrot/parrot.h"
-#include "parrot/hash.h"
-#include "parrot/oplib/ops.h"
-#include "pmc/pmc_managedstruct.h"
-#include "pmc/pmc_nci.h"
-#include "pmc/pmc_pointer.h"
-#include "pmc/pmc_callcontext.h"
-#include "nci.str"
-
-/* HEADERIZER HFILE: none */
-/* HEADERIZER STOP */
-
-/*
- * if the architecture can build some or all of these signatures
- * enable the define below
- * - the JITed function will be called first
- * - if it returns NULL, the hardcoded version will do the job
- */
-
-#include "frame_builder.h"
-
-/* All our static functions that call in various ways. Yes, terribly
-   hackish, but that is just fine */
-
-HEAD
-.end
-
-.sub 'get_thunks'
-    .param pmc sig_table
-    .param pmc sigs
-    .local string code
-    .local int i, n
-    code = ''
-    i = 0
-    n = sigs
-    loop:
-        if i >= n goto end_loop
-
-        .local pmc sig
-        sig = sigs[i]
-        $S0 = 'sig_to_fn_code'(sig_table, sig :flat)
-        code = concat code, $S0
-
-        inc i
-        goto loop
-    end_loop:
-    .return (code)
-.end
-
-.sub 'get_loader'
-    .param pmc sig_table
-    .param pmc sigs
-    .local string code
-    .local int i, n
-    code = <<'FN_HEADER'
-
-
-/* This function serves a single purpose. It takes the function
-   signature for a C function we want to call and returns a pointer
-   to a function that can call it. */
-void *
-build_call_func(PARROT_INTERP,
-#if defined(CAN_BUILD_CALL_FRAMES)
-PMC *pmc_nci, NOTNULL(STRING *signature), NOTNULL(int *jitted))
-#else
-SHIM(PMC *pmc_nci), NOTNULL(STRING *signature), SHIM(int *jitted))
-#endif
-{
-    char       *c;
-    STRING     *ns, *message;
-    PMC        *b;
-    PMC        *iglobals;
-    PMC        *temp_pmc;
-
-    PMC        *HashPointer   = NULL;
-
-    /* And in here is the platform-independent way. Which is to say
-       "here there be hacks" */
-
-    /* fixup empty signatures */
-    if (STRING_IS_EMPTY(signature))
-        signature = CONST_STRING(interp, "v");
-
-    iglobals = interp->iglobals;
-
-    if (PMC_IS_NULL(iglobals))
-        PANIC(interp, "iglobals isn't created yet");
-    HashPointer = VTABLE_get_pmc_keyed_int(interp, iglobals,
-            IGLOBALS_NCI_FUNCS);
-
-    if (!HashPointer) {
-        HashPointer = pmc_new(interp, enum_class_Hash);
-        VTABLE_set_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS,
-                HashPointer);
-    }
-
-#if defined(CAN_BUILD_CALL_FRAMES)
-    /* Try if JIT code can build that signature. If yes, we are done */
-    b            = VTABLE_get_pmc_keyed_str(interp, HashPointer, signature);
-
-    PARROT_ASSERT(PMC_IS_NULL(b) || b->vtable);
-
-    if ((!PMC_IS_NULL(b)) && b->vtable->base_type == enum_class_ManagedStruct) {
-        *jitted = 1;
-        return F2DPTR(VTABLE_get_pointer(interp, b));
-    }
-    else {
-        int jit_size;
-        void * const result = Parrot_jit_build_call_func(interp, pmc_nci, signature, &jit_size);
-        if (result) {
-            struct jit_buffer_private_data *priv;
-            *jitted = 1;
-            temp_pmc = pmc_new(interp, enum_class_ManagedStruct);
-            VTABLE_set_pointer(interp, temp_pmc, (void *)result);
-#ifdef PARROT_HAS_EXEC_PROTECT
-            priv = (struct jit_buffer_private_data *)
-                mem_sys_allocate(sizeof(struct jit_buffer_private_data));
-            priv->size = jit_size;
-            SETATTR_ManagedStruct_custom_free_func(interp, temp_pmc, Parrot_jit_free_buffer);
-            SETATTR_ManagedStruct_custom_free_priv(interp, temp_pmc, priv);
-            SETATTR_ManagedStruct_custom_clone_func(interp, temp_pmc, Parrot_jit_clone_buffer);
-            SETATTR_ManagedStruct_custom_clone_priv(interp, temp_pmc, priv);
-#endif /* PARROT_HAS_EXEC_PROTECT */
-            VTABLE_set_pmc_keyed_str(interp, HashPointer, signature, temp_pmc);
-            return result;
-        }
-    }
-
-#endif
-
-    b = VTABLE_get_pmc_keyed_str(interp, HashPointer, signature);
-
-    if (PMC_IS_NULL(b)) {
-FN_HEADER
-
-    i = 0
-    n = sigs
-    loop:
-        if i >= n goto end_loop
-
-        .local pmc sig
-        sig = shift sigs
-
-        .local string fn_name
-        fn_name = 'sig_to_fn_name'(sig_table, sig :flat)
-
-        .local string key
-        key = join '', sig
-
-        $S0 = 'sprintf'(<<'TEMPLATE', fn_name, key)
-        temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
-        VTABLE_set_pointer(interp, temp_pmc, (void *)%s);
-        VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "%s"), temp_pmc);
-TEMPLATE
-        code = concat code, $S0
-
-        inc i
-        goto loop
-    end_loop:
-
-    code = concat code, <<'FN_FOOTER'
-
-        b = VTABLE_get_pmc_keyed_str(interp, HashPointer, signature);
-    }
-
-    PARROT_ASSERT(PMC_IS_NULL(b) || b->vtable);
-
-    if ((!PMC_IS_NULL(b)) && b->vtable->base_type == enum_class_UnManagedStruct)
-        return F2DPTR(VTABLE_get_pointer(interp, b));
-
-    /*
-      These three lines have been added to aid debugging. I want to be able to
-      see which signature has an unknown type. I am sure someone can come up
-      with a neater way to do this.
-     */
-    ns = string_make(interp, " is an unknown signature type", 29, "ascii", 0);
-    message = Parrot_str_concat(interp, signature, ns, 0);
-
-#if defined(CAN_BUILD_CALL_FRAMES)
-    ns = string_make(interp, ".\\nCAN_BUILD_CALL_FRAMES is enabled, this should not happen", 58, "ascii", 0);
-#else
-    ns = string_make(interp, ".\\nCAN_BUILD_CALL_FRAMES is disabled, add the signature to src/call_list.txt", 75, "ascii", 0);
-#endif
-    message = Parrot_str_concat(interp, message, ns, 0);
-
-    /*
-     * I think there may be memory issues with this but if we get to here we are
-     * aborting.
-     */
-    c = Parrot_str_to_cstring(interp, message);
-    PANIC(interp, c);
-}
-
-FN_FOOTER
-    .return (code)
-.end
-
-.sub 'get_coda'
-    .param pmc ignored :slurpy
-    .return (<<'CODA')
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
-CODA
-.end
-
-# }}}
-
-# sig_to_* {{{
-
-.sub 'sig_to_fn_code'
-    .param pmc args :slurpy
-
-    .local string fn_decl
-    fn_decl = 'sig_to_fn_decl'(args :flat)
-
-    .local string var_decls
-    var_decls = 'sig_to_var_decls'(args :flat)
-
-    .local string preamble
-    preamble = 'sig_to_preamble'(args :flat)
-
-    .local string call
-    call = 'sig_to_call'(args :flat)
-
-    .local string postamble
-    postamble = 'sig_to_postamble'(args :flat)
-
-    .local string fn_code
-    fn_code = 'sprintf'("%s{\n%s%s%s%s}\n", fn_decl, var_decls, preamble, call, postamble)
-    .return (fn_code)
-.end
-
-.sub 'sig_to_postamble'
-    .param pmc sig_table
-    .param string ret
-    .param string params
-
-    .local string final_assign
-    $P0 = 'map_from_sig_table'(sig_table, ret, 'ret_assign')
-    final_assign = $P0[0]
-
-    .local string extra_postamble
-    $P0 = 'map_from_sig_table'(sig_table, params, 'postamble_tmpl')
-    'fill_tmpls_ascending_ints'($P0)
-    extra_postamble = join "\n", $P0
-
-    .local string postamble
-    postamble = 'sprintf'(<<'TEMPLATE', final_assign, extra_postamble)
-    %s
-    %s
-TEMPLATE
-    .return (postamble)
-.end
-
-.sub 'sig_to_call'
-    .param pmc sig_table
-    .param string ret
-    .param string params
-
-    .local string return_assign
-    $P0 = 'map_from_sig_table'(sig_table, ret, 'func_call_assign')
-    return_assign = $P0[0]
-
-    .local string ret_cast
-    $P0 = 'map_from_sig_table'(sig_table, ret, 'as_return')
-    ret_cast = $P0[0]
-    if ret_cast == 'void' goto void_fn
-        ret_cast = 'sprintf'('(%s)', ret_cast)
-        goto end_ret_cast
-    void_fn:
-        ret_cast = ''
-    end_ret_cast:
-
-    .local string call_params
-    $P0 = 'map_from_sig_table'(sig_table, params, 'call_param_tmpl')
-    'fill_tmpls_ascending_ints'($P0)
-    call_params = join ', ', $P0
-
-    .local string call
-    call = 'sprintf'(<<'TEMPLATE', return_assign, ret_cast, call_params)
-    GETATTR_NCI_orig_func(interp, self, orig_func);
-    fn_pointer = (func_t)D2FPTR(orig_func);
-    %s %s(*fn_pointer)(%s);
-TEMPLATE
-    .return (call)
-.end
-
-.sub 'sig_to_preamble'
-    .param pmc sig_table
-    .param string ret
-    .param string params
-
-    unless params goto return
-
-    .local string sig
-    $P0 = 'map_from_sig_table'(sig_table, params, 'sig_char')
-    sig = join "", $P0
-
-    .local string fill_params
-    $P0 = 'map_from_sig_table'(sig_table, params, 'fill_params_tmpl')
-    'fill_tmpls_ascending_ints'($P0)
-    fill_params = join "", $P0
-
-    .local string extra_preamble
-    $P0 = 'map_from_sig_table'(sig_table, params, 'preamble_tmpl')
-    'fill_tmpls_ascending_ints'($P0)
-    extra_preamble = join "", $P0
-
-    .local string preamble
-    preamble = 'sprintf'(<<'TEMPLATE', sig, fill_params, extra_preamble)
-    Parrot_pcc_fill_params_from_c_args(interp, call_object, "%s" %s);
-    %s
-TEMPLATE
-
-  return:
-    .return (preamble)
-.end
-
-.sub 'sig_to_var_decls'
-    .param pmc sig_table
-    .param string ret
-    .param string params
-
-    .local string ret_csig
-    $P0 = 'map_from_sig_table'(sig_table, ret, 'as_return')
-    ret_csig = $P0[0]
-
-    .local string params_csig
-    $P0 = 'map_from_sig_table'(sig_table, params, 'as_proto')
-    params_csig = join ', ', $P0
-
-    .local string ret_tdecl
-    ret_tdecl = ""
-    $P0 = 'map_from_sig_table'(sig_table, ret, 'return_type')
-    $S0 = $P0[0]
-    unless $S0 goto end_ret_type
-    if $S0 == 'void' goto end_ret_type
-        $S0 = 'sprintf'("%s return_data;\n", $S0)
-        ret_tdecl = concat ret_tdecl, $S0
-    end_ret_type:
-    $P0 = 'map_from_sig_table'(sig_table, ret, 'final_dest')
-    $S0 = $P0[0]
-    unless $S0 goto end_final_dest
-        $S0 = concat $S0, "\n"
-        ret_tdecl = concat ret_tdecl, $S0
-    end_final_dest:
-
-    .local string params_tdecl
-    $P0 = 'map_from_sig_table'(sig_table, params, 'temp_tmpl')
-    'fill_tmpls_ascending_ints'($P0)
-    $P0 = 'grep_for_true'($P0)
-    params_tdecl = join ";\n    ", $P0
-
-    .local string var_decls
-    var_decls = 'sprintf'(<<'TEMPLATE', ret_csig, params_csig, ret_tdecl, params_tdecl)
-    typedef %s(* func_t)(%s);
-    func_t fn_pointer;
-    void *orig_func;
-    PMC *ctx         = CURRENT_CONTEXT(interp);
-    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
-    %s
-    %s;
-TEMPLATE
-
-    .return (var_decls)
-.end
-
-.sub 'sig_to_fn_decl'
-    .param pmc sig_table
-    .param pmc sig :slurpy
-    .local string fn_name, fn_decl
-    fn_name = 'sig_to_fn_name'(sig_table, sig :flat)
-    fn_decl = 'sprintf'(<<'TEMPLATE', fn_name)
-static void
-%s(PARROT_INTERP, PMC *self)
-TEMPLATE
-    .return (fn_decl)
-.end
-
-.sub 'sig_to_fn_name'
-    .param pmc sig_table
-    .param string ret
-    .param string params
-
-    .local string fix_params
-    $P0 = 'map_from_sig_table'(sig_table, params, 'cname')
-    fix_params = join '', $P0
-
-    $S0 = 'sprintf'('pcf_%s_%s', ret, fix_params)
-    .return ($S0)
-.end
-
-.sub 'map_from_sig_table'
-    .param pmc sig_table
-    .param string sig
-    .param string field_name
-
-    $P0 = split '', sig
-
-    .local pmc result
-    result = new ['ResizableStringArray']
-    $I0 = $P0
-    result = $I0
-
-    $I0 = $P0
-    $I1 = 0
-    loop:
-        if $I1 >= $I0 goto end_loop
-        $S0 = $P0[$I1]
-        $S1 = sig_table[$S0; field_name]
-        result[$I1] = $S1
-        inc $I1
-        goto loop
-    end_loop:
-
-    .return (result)
-.end
-
-# }}}
-
-# read_sigs {{{
-
-.sub 'read_sigs'
-    .local pmc stdin, seen, sigs
-    stdin = getstdin
-    seen  = new ['Hash']
-    sigs  = new ['ResizablePMCArray']
-
-    .local int lineno
-    lineno = 0
-    read_loop:
-        unless stdin goto end_read_loop
-
-        .local string ret_sig, param_sig, full_sig
-        (ret_sig, param_sig) = 'read_one_sig'(stdin)
-        inc lineno
-        full_sig = concat ret_sig, param_sig
-
-        # filter out empty sigs (and empty lines)
-        unless full_sig goto read_loop
-
-        # de-dup sigs
-        $I0 = seen[full_sig]
-        unless $I0 goto unseen
-            $S0 = 'sprintf'("Ignored signature '%s' on line %d (previously seen on line %d)\n", full_sig, lineno, $I0)
-            printerr $S0
-            goto read_loop
-        unseen:
-        seen[full_sig] = lineno
-
-        .local pmc sig
-        sig = new ['ResizableStringArray']
-        sig = 2
-        sig[0] = ret_sig
-        sig[1] = param_sig
-        push sigs, sig
-
-        goto read_loop
-    end_read_loop:
-
-    .return (sigs)
-.end
-
-.sub 'read_one_sig'
-    .param pmc fh
-
-    .local string line
-    line = readline fh
-
-    # handle comments
-    $I0 = index line, '#'
-    if $I0 < 0 goto end_comment
-        line = substr line, 0, $I0
-    end_comment:
-
-    # convert whitespace into spaces
-    $S0 = '\t'
-    whitespace_loop:
-        $I0 = index line, $S0
-        if $I0 < 0 goto end_whitespace_loop
-        substr line, $I0, 1, ' '
-        goto whitespace_loop
-    end_whitespace_loop:
-
-    if $S0 == "\n" goto end_whitespace
-        $S0 = "\n"
-        goto whitespace_loop
-    end_whitespace:
-
-    # turn multiple spaces into a single space
-    multispace_loop:
-        $I0 = index line, '  '
-        if $I0 < 0 goto end_multispace_loop
-        $S0 = substr line, $I0, 2, ' '
-        goto multispace_loop
-    end_multispace_loop:
-
-    # remove leading whitespace
-    $S0 = substr line, 0, 1
-    unless $S0 == ' ' goto end_leading
-        $S0 = substr line, 0, 1, ''
-    end_leading:
-
-    # handle empty (or whitespace only) lines
-    if line == '' goto ret
-    if line == ' ' goto ret
-
-    # remove trailing whitespace
-    $S0 = substr line, -1, 1
-    unless $S0 == ' ' goto end_trailing
-        $S0 = substr line, -1, 1, ''
-    end_trailing:
-
-    # read the signature
-    .local string ret_sig, param_sig
-    $P0 = split ' ', line
-    ret_sig   = $P0[0]
-    param_sig = $P0[1]
-
-  ret:
-    .return (ret_sig, param_sig)
-.end
-
-#}}}
-
-# gen_sigtable {{{
-
-.sub 'gen_sigtable'
-    $S0 = 'sigtable_json'()
-    $P0 = 'decode_table'($S0)
-    'fixup_table'($P0)
-    .return ($P0)
-.end
-
-.sub 'decode_table'
-    .param string json
-
-    .local pmc compiler
-    load_bytecode 'data_json.pbc'
-    compiler = compreg 'data_json'
-
-    .local pmc table
-    $P0 = compiler.'compile'(json)
-    table = $P0()
-
-    .return (table)
-.end
-
-.sub 'fixup_table'
-    .param pmc table
-
-    .local pmc table_iter
-    table_iter = iter table
-  iter_loop:
-    unless table_iter goto iter_end
-
-    .local string k
-    .local pmc v
-    k = shift table_iter
-    v = table[k]
-
-    $I0 = exists v['cname']
-    if $I0 goto has_cname
-        v['cname'] = k
-    has_cname:
-
-    $I0 = exists v['as_return']
-    if $I0 goto has_as_return
-        $S0 = v['as_proto']
-        v['as_return'] = $S0
-    has_as_return:
-
-    $I0 = exists v['return_type']
-    if $I0 goto has_return_type
-        $S0 = v['as_proto']
-        v['return_type'] = $S0
-    has_return_type:
-
-    $I0 = exists v['ret_assign']
-    $I1 = exists v['sig_char']
-    $I1 = !$I1
-    $I0 = $I0 || $I1 # not (not exists v[ret_assign] and exists v[sig_char])
-    if $I0 goto has_ret_assign
-        $S0 = 'Parrot_pcc_fill_returns_from_c_args(interp, call_object, "'
-        $S1 = v['sig_char']
-        $S0 = concat $S0, $S1
-        $S0 = concat $S0, '", return_data);'
-        v['ret_assign'] = $S0
-    has_ret_assign:
-
-    $I0 = exists v['func_call_assign']
-    if $I0 goto has_func_call_assign
-        v['func_call_assign'] = 'return_data = '
-    has_func_call_assign:
-
-    $I0 = exists v['temp_tmpl']
-    if $I0 goto has_temp_tmpl
-        $S0 = v['return_type']
-        $S0 = concat $S0, " t_%i"
-        v['temp_tmpl'] = $S0
-    has_temp_tmpl:
-
-    $I0 = exists v['fill_params_tmpl']
-    if $I0 goto has_fill_params_tmpl
-        v['fill_params_tmpl'] = ', &t_%i'
-    has_fill_params_tmpl:
-
-    $I0 = exists v['call_param_tmpl']
-    if $I0 goto has_call_param_tmpl
-        v['call_param_tmpl'] = 't_%i'
-    has_call_param_tmpl:
-
-    goto iter_loop
-  iter_end:
-
-    .return ()
-.end
-
-.sub 'sigtable_json'
-    .const string retv = <<'JSON'
-{
-    "p": { "as_proto":   "void *",
-           "final_dest": "PMC * final_destination = PMCNULL;",
-           "temp_tmpl": "PMC *t_%i",
-           "sig_char":   "P",
-           "call_param_tmpl": "PMC_IS_NULL((PMC*)t_%i) ? (void *)NULL : VTABLE_get_pointer(interp, t_%i)",
-           "ret_assign": "if (return_data != NULL) {
-                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
-                             VTABLE_set_pointer(interp, final_destination, return_data);
-                          }
-                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"P\", final_destination);" },
-    "i": { "as_proto": "int", "sig_char": "I",
-           "return_type": "INTVAL" },
-    "l": { "as_proto": "long",   "sig_char": "I", "return_type": "INTVAL" },
-    "c": { "as_proto": "char",   "sig_char": "I", "return_type": "INTVAL" },
-    "s": { "as_proto": "short",  "sig_char": "I", "return_type": "INTVAL" },
-    "f": { "as_proto": "float",  "sig_char": "N", "return_type": "FLOATVAL" },
-    "d": { "as_proto": "double", "sig_char": "N", "return_type": "FLOATVAL" },
-    "t": { "as_proto": "char *",
-           "final_dest": "STRING *final_destination;",
-           "ret_assign": "final_destination = Parrot_str_new(interp, return_data, 0);
-                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"S\", final_destination);",
-           "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;",
-           "postamble_tmpl": "if (t_%i) Parrot_str_free_cstring(t_%i);" },
-    "v": { "as_proto": "void",
-           "return_type": "void *",
-           "sig_char": "v",
-           "ret_assign": "",
-           "func_call_assign": "" },
-    "P": { "as_proto": "PMC *", "sig_char": "P" },
-    "O": { "as_proto": "PMC *", "returns": "", "sig_char": "Pi" },
-    "J": { "as_proto": "PARROT_INTERP",
-           "returns": "",
-           "fill_params_tmpl": "",
-           "call_param_tmpl": "interp",
-           "temp_tmpl": "",
-           "sig_char": "" },
-    "S": { "as_proto": "STRING *", "sig_char": "S" },
-    "I": { "as_proto": "INTVAL", "sig_char": "I" },
-    "N": { "as_proto": "FLOATVAL", "sig_char": "N" },
-    "b": { "as_proto": "void *",
-           "as_return": "",
-           "sig_char": "S",
-           "temp_tmpl":"STRING *t_%i",
-           "call_param_tmpl": "Buffer_bufstart(t_%i)" },
-    "B": { "as_proto": "char **",
-           "as_return": "",
-           "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;",
-           "call_param_tmpl": "&t_%i",
-           "postamble_tmpl": "if (t_%i) Parrot_str_free_cstring(t_%i);" },
-    "2": { "as_proto": "short *",
-           "sig_char": "P",
-           "return_type": "short",
-           "ret_assign": "Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"I\", return_data);",
-           "temp_tmpl": "PMC *t_%i; short i_%i",
-           "preamble_tmpl": "i_%i = VTABLE_get_integer(interp, t_%i);",
-           "call_param_tmpl": "&i_%i",
-           "postamble_tmpl": "VTABLE_set_integer_native(interp, t_%i, i_%i);" },
-    "3": { "as_proto": "int *",
-           "sig_char": "P",
-           "return_type": "int",
-           "ret_assign": "Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"I\", return_data);",
-           "temp_tmpl": "PMC *t_%i; int i_%i",
-           "preamble_tmpl": "i_%i = VTABLE_get_integer(interp, t_%i);",
-           "call_param_tmpl": "&i_%i",
-           "postamble_tmpl": "VTABLE_set_integer_native(interp, t_%i, i_%i);" },
-    "4": { "as_proto": "long *",
-           "sig_char": "P",
-           "return_type": "long",
-           "ret_assign": "Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"I\", return_data);",
-           "temp_tmpl": "PMC *t_%i; long i_%i",
-           "preamble_tmpl": "i_%i = VTABLE_get_integer(interp, t_%i);",
-           "call_param_tmpl": "&i_%i",
-           "postamble_tmpl": "VTABLE_set_integer_native(interp, t_%i, i_%i);" },
-    "L": { "as_proto": "long *", "as_return": "" },
-    "T": { "as_proto": "char **", "as_return": "" },
-    "V": { "as_proto": "void **",
-           "as_return": "",
-           "sig_char": "P",
-           "temp_tmpl": "PMC *t_%i; void *v_%i",
-           "preamble_tmpl": "v_%i = VTABLE_get_pointer(interp, t_%i);",
-           "call_param_tmpl": "&v_%i",
-           "postamble_tmpl": "VTABLE_set_pointer(interp, t_%i, v_%i);" },
-    "@": { "as_proto": "PMC *", "as_return": "", "cname": "xAT_", "sig_char": "Ps" }
-}
-JSON
-    .return (retv)
-.end
-
-# }}}
-
-# utility fn's {{{
-
-.sub 'sprintf'
-    .param string tmpl
-    .param pmc args :slurpy
-    $S0 = sprintf tmpl, args
-    .return ($S0)
-.end
-
-.sub 'fill_tmpls_ascending_ints'
-    .param pmc tmpls
-    .local int idx, n
-
-    idx = 0
-    n = tmpls
-    loop:
-        if idx >= n goto end_loop
-        $S0 = tmpls[idx]
-        $I0 = 'printf_arity'($S0)
-        $P0 = 'xtimes'(idx, $I0)
-        $S1 = sprintf $S0, $P0
-        tmpls[idx] = $S1
-        inc idx
-        goto loop
-    end_loop:
-.end
-
-.sub 'printf_arity'
-    .param string tmpl
-
-    .local int count, idx
-    idx = 0
-    count = 0
-
-    loop:
-        idx = index tmpl, '%', idx
-        if idx < 0 goto end_loop
-
-        # check against '%%' escapes
-        $I0 = idx + 1
-        $S0 = substr tmpl, $I0, 1
-        unless $S0 == '%' goto is_valid_placeholder
-            idx = idx + 2 # skip both '%'s
-            goto loop
-        is_valid_placeholder:
-
-        inc idx
-        inc count
-        goto loop
-    end_loop:
-
-    .return (count)
-.end
-
-.sub 'xtimes'
-    .param pmc what
-    .param int times
-
-    .local pmc retv
-    retv = new ['ResizablePMCArray']
-    retv = times
-
-    $I0 = 0
-    loop:
-        if $I0 >= times goto end_loop
-        retv[$I0] = what
-        inc $I0
-        goto loop
-    end_loop:
-
-    .return (retv)
-.end
-
-.sub 'grep_for_true'
-    .param pmc input
-    .local pmc output
-    .local int i, n
-    output = new ['ResizableStringArray']
-    i = 0
-    n = input
-    loop:
-        if i >= n goto end_loop
-        $S0 = input[i]
-        unless $S0 goto end_cond
-            push output, $S0
-        end_cond:
-        inc i
-        goto loop
-    end_loop:
-    .return (output)
-.end
-
-# }}}
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
-

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

Modified: branches/ops_pct/tools/dev/checkdepend.pl
==============================================================================
--- branches/ops_pct/tools/dev/checkdepend.pl	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/tools/dev/checkdepend.pl	Sun Mar  7 19:33:20 2010	(r44743)
@@ -11,6 +11,7 @@
 use File::Spec;
 use Test::More;
 use Test::Harness;
+use Test::Differences;
 
 =head1 NAME
 
@@ -29,8 +30,9 @@
 =head1 REQUIREMENTS
 
 A built parrot (Configure and make) to generate all files so we can analyze
-them. Ack is used to find the files. We are not currently requiring ack
-for development, so this is an optional test.
+them. App::Ack is used to find the files, and Test::Differences is used to
+make the test output usable - these non standard modules make this an
+optional test.
 
 =head1 BUGS
 
@@ -262,10 +264,10 @@
             $extra_info = "($active_makefile: line $active_line_num)";
         }
 
-        $rule_deps        = join ' ', sort split /\s+/, $rule_deps;
-        my $expected_deps = join ' ', sort (get_deps($file));
+        $rule_deps        = join "\n", sort split /\s+/, $rule_deps;
+        my $expected_deps = join "\n", sort (get_deps($file));
 
-        is($rule_deps, $expected_deps, "$file has correct dependencies $extra_info.");
+        eq_or_diff_text($rule_deps, $expected_deps, "$file has correct dependencies $extra_info.", {context => 0});
     }
 }
 

Modified: branches/ops_pct/tools/dev/mk_language_shell.pl
==============================================================================
--- branches/ops_pct/tools/dev/mk_language_shell.pl	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/tools/dev/mk_language_shell.pl	Sun Mar  7 19:33:20 2010	(r44743)
@@ -1,10 +1,10 @@
 #! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
 
-tools/dev/mk_language_shell.pl -- create initial files for a new language
+tools/dev/mk_language_shell.pl -- create initial files for a new language implementation
 
 =head1 SYNOPSIS
 
@@ -19,8 +19,8 @@
 =head1 DESCRIPTION
 
 This script populates a directory with files for building a
-new language translator in Parrot.  The first argument is the
-name of the language to be built.  The C<path> argument
+new language translator in Parrot. The first argument is the
+name of the language to be built. The C<path> argument
 says where to populate the directory, if no C<path> is specified
 then it is taken to be a subdirectory of the current directory
 with the same name as the language (converted to lowercase).
@@ -61,12 +61,15 @@
 
 use strict;
 use warnings;
-use File::Path;
-use File::Spec;
-use Getopt::Long;
+
 use FindBin qw($Bin);
 use lib "$Bin/../lib";    # install location
 use lib "$Bin/../../lib"; # build location
+
+use File::Path;
+use File::Spec;
+use Getopt::Long;
+
 use Parrot::Config qw/ %PConfig /;
 
 my ($with_doc, $with_ops, $with_pmc);
@@ -96,8 +99,7 @@
 
 ##  get the path from the command line, or if not supplied then
 ##  use $lclang.
-my $path = $ARGV[1] ||
-           "$lclang";
+my $path = $ARGV[1] || $lclang;
 
 ##  now loop through the file information (see below), substituting
 ##  any instances of @lang@, @lclang@, @UCLANG@, and @Id@ with
@@ -163,6 +165,8 @@
     }
     print "creating $filepath\n";
     open $fh, '>', $filepath;
+
+    return;
 }
 
 
@@ -665,10 +669,10 @@
             * specify it?
             */
             /*
-            array_t = pmc_type(INTERP,
+            array_t = Parrot_pmc_get_type_str(INTERP,
                 string_from_literal(INTERP, "@lang@"));
             */
-            property = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+            property = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
             VTABLE_set_integer_native(INTERP, property, 1);
             VTABLE_set_integer_keyed_int(INTERP, property, 0,

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

Copied: branches/ops_pct/tools/dev/nci_thunk_gen.pir (from r44740, trunk/tools/dev/nci_thunk_gen.pir)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/tools/dev/nci_thunk_gen.pir	Sun Mar  7 19:33:20 2010	(r44743, copy of r44740, trunk/tools/dev/nci_thunk_gen.pir)
@@ -0,0 +1,1144 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+tools/dev/nci_thunk_gen.pir - Build up native call thunk routines
+
+=head1 SYNOPSIS
+
+    % ./parrot tools/dev/nci_thunk_gen.pir -o src/nci/extra_thunks.c <src/nci/extra_thunks.nci
+
+=head1 DESCRIPTION
+
+This script creates Native Call Interface files. It parses a file of function
+signatures of the form:
+
+ <return-type-specifier><ws><parameter-type-specifiers>[<ws>][#<comment>]
+    ...
+Empty lines and lines containing only whitespace or comment are ignored.
+The types specifiers are documented in F<src/nci/extra_thunks.nci>.
+
+=head1 SEE ALSO
+
+F<src/nci/extra_thunks.nci>.
+F<docs/pdds/pdd16_native_call.pod>.
+
+=cut
+
+.macro_const VERSION 0.01
+
+.macro_const SIG_TABLE_GLOBAL_NAME  'signature_table'
+.macro_const OPTS_GLOBAL_NAME       'options'
+
+.sub 'main' :main
+    .param pmc argv
+
+    # initialize global variables
+    'gen_sigtable'()
+    'get_options'(argv)
+
+    .local string targ
+    targ = 'read_from_opts'('target')
+
+    .local pmc sigs
+    sigs = 'read_sigs'()
+
+    $S0 = 'read_from_opts'('output')
+    $P0 = open $S0, 'w'
+    setstdout $P0
+
+    if targ == 'head'          goto get_targ
+    if targ == 'thunks'        goto get_targ
+    if targ == 'loader'        goto get_targ
+    if targ == 'loader-dynext' goto get_dynext_loader
+    if targ == 'coda'          goto get_targ
+    if targ == 'all'           goto all
+    if targ == 'all-dynext'    goto all_dynext
+    if targ == 'names'         goto names
+    if targ == 'signatures'    goto signatures
+
+    # unknown target
+    $S0 = 'sprintf'("Unknown target type '%s'", targ)
+    die $S0
+
+  all:
+    $S0 = 'get_head'(sigs)
+    say $S0
+    $S0 = 'get_thunks'(sigs)
+    say $S0
+    $S0 = 'get_loader'(sigs)
+    say $S0
+    $S0 = 'get_coda'(sigs)
+    say $S0
+    exit 0
+
+  all_dynext:
+    $S0 = 'get_head'(sigs)
+    say $S0
+    $S0 = 'get_thunks'(sigs)
+    say $S0
+    $S0 = 'get_dynext_loader'(sigs)
+    say $S0
+    $S0 = 'get_coda'(sigs)
+    say $S0
+    exit 0
+
+  get_dynext_loader:
+    $S0 = 'get_dynext_loader'(sigs)
+    say $S0
+    exit 0
+
+  get_targ:
+    $S0 = concat 'get_', targ
+    $P0 = get_global $S0
+    $S1 = $P0(sigs)
+    say $S1
+    exit 0
+
+  names:
+    die "names not yet implemented"
+  signatures:
+    die "signatures not yet implemented"
+.end
+
+# getopt stuff {{{
+
+.macro_const OUTPUT                 'output'
+.macro_const THUNK_STORAGE_CLASS    'thunk-storage-class'
+.macro_const THUNK_NAME_PROTO       'thunk-name-proto'
+.macro_const LOADER_STORAGE_CLASS   'loader-storage-class'
+.macro_const LOADER_NAME            'loader-name'
+.macro_const CORE                   'core'
+.macro_const NO_WARN_DUPS           'no-warn-dups'
+
+.sub 'get_options'
+    .param pmc argv
+
+    load_bytecode 'Getopt/Obj.pbc'
+
+    .local pmc getopt
+    getopt = new ['Getopt';'Obj']
+    push getopt, 'help|h'
+    push getopt, 'version|v'
+    push getopt, 'no-warn-dups|f'
+    push getopt, 'core'
+    push getopt, 'dynext'
+    push getopt, 'output|o=s'
+    push getopt, 'target=s'
+    push getopt, 'thunk-storage-class=s'
+    push getopt, 'thunk-name-proto=s'
+    push getopt, 'loader-storage-class=s'
+    push getopt, 'loader-name=s'
+
+    .local string prog_name
+    prog_name = shift argv
+
+    .local pmc opt
+    opt = getopt.'get_options'(argv)
+
+    $I0 = opt['help']
+    if $I0 goto print_help
+
+    $I0 = opt['version']
+    if $I0 goto print_version
+
+    'fixup_opts'(opt)
+
+    set_global .OPTS_GLOBAL_NAME, opt
+    .return()
+
+  print_help:
+    'usage'(prog_name)
+  print_version:
+    'version'(prog_name)
+.end
+
+.sub 'usage'
+    .param string prog_name
+    print prog_name
+    say ' - Parrot NCI thunk library creation utility'
+    say <<'USAGE'
+
+Creates a C file of routines suitable for use as Parrot NCI thunks.
+
+Usage ./parrot nci_thunk_gen.pir [options] -o output_c_file.c <input_signature_list.nci
+
+Options
+    --help              print this message and exit
+    --version           print the version number of this utility
+    -f --no-warn-dups   don't complain about duplicated signatures. Default is to warn.
+    --core              output a thunks file suitable for inclusion in Parrot core. Default is no.
+    --dynext            use default values for loader-name, loader-storage-class, and target
+                        suitable for use in a Parrot dynext library.
+    -o --output <file>  specify output file to use.
+    --target <target>   select what to output (valid options are 'head', 'thunks',
+                        'loader', 'loader-dynext', 'coda', 'all', 'all-dynext', 'names', and
+                        'signatures'). Default value is 'all'
+    --thunk-storage-class <storage class>
+                        set the storage class used for the thunks. Default value is 'static'.
+    --thunk-name-proto <printf prototype>
+                        set the prototype used for the thunk function names. Must be a printf
+                        format with arity 1. Default value is 'pcf_%s'
+    --loader-storage-class
+                        set the storage class used for the loader function. Default value is none.
+    --loader-name       set the name used for the loader function. Default value is
+                        'Parrot_load_nci_thunks'.
+USAGE
+    exit 0
+.end
+
+.sub 'version'
+    .param string prog_name
+    print prog_name
+    print ' version '
+    say .VERSION
+    exit 0
+.end
+
+.sub 'fixup_opts'
+    .param pmc opts
+
+    $I0 = defined opts['no-warn-dups']
+    if $I0 goto end_no_warn_dups
+        opts['no-warn-dups'] = ''
+    end_no_warn_dups:
+
+    $I0 = defined opts['core']
+    if $I0 goto in_core
+        opts['core'] = ''
+        goto end_core
+    in_core:
+        opts['core'] = 'true'
+    end_core:
+
+    $I0 = defined opts['dynext']
+    if $I0 goto is_dynext
+        opts['dynext'] = ''
+        goto end_dynext
+    is_dynext:
+        $I0 = defined opts['target']
+        if $I0 goto end_dynext_target
+            opts['target'] = 'all-dynext'
+        end_dynext_target:
+
+        $I0 = defined opts['loader-storage-class']
+        if $I0 goto end_dynext_loader_storage_class
+            opts['loader-storage-class'] = 'PARROT_DYNEXT_EXPORT'
+        end_dynext_loader_storage_class:
+
+        $I0 = defined opts['loader-name']
+        if $I0 goto end_dynext_loader_name
+            $S0 = opts['output']
+            ($S0, $S1, $S0) = 'file_basename'($S0, '.c')
+            $S0 = 'sprintf'('Parrot_lib_%s_init', $S1)
+            opts['loader-name'] = $S0
+        end_dynext_loader_name:
+    end_dynext:
+
+    $I0 = defined opts['target']
+    if $I0 goto end_target
+        opts['target'] = 'all'
+    end_target:
+
+    $I0 = defined opts['thunk-storage-class']
+    if $I0 goto end_thunk_storage_class
+        opts['thunk-storage-class'] = 'static'
+    end_thunk_storage_class:
+
+    $I0 = defined opts['thunk-name-proto']
+    if $I0 goto end_thunk_name_proto
+        opts['thunk-name-proto'] = 'pcf_%s'
+    end_thunk_name_proto:
+
+    $S0 = opts['thunk-name-proto']
+    $I0 = 'printf_arity'($S0)
+    if $I0 == 1 goto end_thunk_name_proto_printf_arity
+        'sprintf'("Provided proto for 'thunk-name-proto' is of incorrect arity %i (expected 1)", $I0)
+        die $S0
+    end_thunk_name_proto_printf_arity:
+
+    $I0 = defined opts['loader-storage-class']
+    if $I0 goto end_loader_storage_class
+        opts['loader-storage-class'] = ''
+    end_loader_storage_class:
+
+    $I0 = defined opts['loader-name']
+    if $I0 goto end_loader_name
+        opts['loader-name'] = 'Parrot_load_nci_thunks'
+    end_loader_name:
+.end
+
+.sub 'read_from_opts'
+    .param string key
+
+    .local pmc opts
+    opts = get_global .OPTS_GLOBAL_NAME
+
+    $I0 = defined opts[key]
+    unless $I0 goto not_present
+
+    $S0 = opts[key]
+    .return ($S0)
+
+  not_present:
+    $S0 = 'sprintf'("Parameter '%s' required but not provided", key)
+    die $S0
+.end
+
+# }}}
+
+# get_{head,thunks,loader,dynext_loader,coda} {{{
+
+.sub 'get_head'
+    .param pmc ignored :slurpy
+
+    .local string in_core
+    in_core = 'read_from_opts'(.CORE)
+
+    .local string ext_defn
+    ext_defn = ''
+    if in_core goto end_ext_defn
+        ext_defn = '#define PARROT_IN_EXTENSION'
+    end_ext_defn:
+
+    .local string c_file
+    c_file = 'read_from_opts'(.OUTPUT)
+
+    .local string str_file
+    ($S0, str_file, $S0) = 'file_basename'(c_file, '.c')
+    str_file = concat str_file, '.str'
+
+    .local string head
+    head = 'sprintf'(<<'HEAD', c_file, ext_defn, str_file)
+/* ex: set ro ft=c:
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ *
+ * This file is generated automatically by tools/dev/nci_thunk_gen.pir
+ *
+ * Any changes made here will be lost!
+ *
+ */
+
+/* %s
+ *  Copyright (C) 2010, Parrot Foundation.
+ *  SVN Info
+ *     $Id$
+ *  Overview:
+ *     Native Call Interface routines. The code needed to build a
+ *     parrot to C call frame is in here
+ *  Data Structure and Algorithms:
+ *  History:
+ *  Notes:
+ *  References:
+ */
+
+%s
+#include "parrot/parrot.h"
+#include "pmc/pmc_nci.h"
+
+
+#ifdef PARROT_IN_EXTENSION
+/* external libraries can't have strings statically compiled into parrot */
+#  define CONST_STRING(i, s) Parrot_str_new_constant((i), (s))
+#else
+#  include "%s"
+#endif
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER STOP */
+
+/* All our static functions that call in various ways. Yes, terribly
+   hackish, but that is just fine */
+
+HEAD
+    .return (head)
+.end
+
+.sub 'get_thunks'
+    .param pmc sigs
+    .local string code
+    .local int i, n
+    code = ''
+    i = 0
+    n = sigs
+    loop:
+        if i >= n goto end_loop
+
+        .local pmc sig
+        sig = sigs[i]
+        $S0 = 'sig_to_fn_code'(sig :flat)
+        code = concat code, $S0
+
+        inc i
+        goto loop
+    end_loop:
+    .return (code)
+.end
+
+.sub 'get_loader'
+    .param pmc sigs
+
+    $S0 = 'get_loader_decl'(sigs)
+    $S1 = 'get_loader_body'(sigs)
+    $S2 = 'sprintf'(<<'LOADER', $S0, $S0, $S1)
+%s;
+%s {
+%s
+}
+LOADER
+    .return ($S2)
+.end
+
+.sub 'get_loader_decl'
+    .param pmc sigs
+    $S0 = 'read_from_opts'(.LOADER_STORAGE_CLASS)
+    $S1 = 'read_from_opts'(.LOADER_NAME)
+    $S2 = 'sprintf'(<<'DECL', $S0, $S1)
+%s void
+%s(PARROT_INTERP)
+DECL
+    .return ($S2)
+.end
+
+.sub 'get_dynext_loader'
+    .param pmc sigs
+
+    $S0 = 'get_dynext_loader_decl'(sigs)
+    $S1 = 'get_loader_body'(sigs)
+    $S2 = 'sprintf'(<<'LOADER', $S0, $S0, $S1)
+%s;
+%s {
+%s
+}
+LOADER
+    .return ($S2)
+.end
+
+.sub 'get_dynext_loader_decl'
+    .param pmc sigs
+
+    $S0 = 'read_from_opts'(.LOADER_STORAGE_CLASS)
+    $S1 = 'read_from_opts'(.LOADER_NAME)
+    $S2 = 'sprintf'(<<'DECL', $S0, $S1)
+%s void
+%s(PARROT_INTERP, SHIM(PMC *lib))
+DECL
+    .return ($S2)
+.end
+
+.sub 'get_loader_body'
+    .param pmc sigs
+    .local string code
+    code = 'sprintf'(<<'HEADER', $S0, $S1)
+    PMC *iglobals;
+    PMC *nci_funcs;
+    PMC *temp_pmc;
+
+    iglobals = interp->iglobals;
+    PARROT_ASSERT(!(PMC_IS_NULL(iglobals)));
+
+    nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals,
+            IGLOBALS_NCI_FUNCS);
+    PARROT_ASSERT(!(PMC_IS_NULL(nci_funcs)));
+
+HEADER
+
+    .local int i, n
+    i = 0
+    n = sigs
+    loop:
+        if i >= n goto end_loop
+
+        .local pmc sig
+        sig = shift sigs
+
+        .local string fn_name
+        fn_name = 'sig_to_fn_name'(sig :flat)
+
+        .local string key
+        key = join '', sig
+
+        $S0 = 'sprintf'(<<'TEMPLATE', fn_name, key)
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)%s);
+    VTABLE_set_pmc_keyed_str(interp, nci_funcs, CONST_STRING(interp, "%s"), temp_pmc);
+
+TEMPLATE
+        code = concat code, $S0
+
+        inc i
+        goto loop
+    end_loop:
+
+    .return (code)
+.end
+
+.sub 'get_coda'
+    .param pmc ignored :slurpy
+    .return (<<'CODA')
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+CODA
+.end
+
+# }}}
+
+# sig_to_* {{{
+
+.sub 'sig_to_fn_code'
+    .param pmc args :slurpy
+
+    .local string fn_decl
+    fn_decl = 'sig_to_fn_decl'(args :flat)
+
+    .local string var_decls
+    var_decls = 'sig_to_var_decls'(args :flat)
+
+    .local string preamble
+    preamble = 'sig_to_preamble'(args :flat)
+
+    .local string call
+    call = 'sig_to_call'(args :flat)
+
+    .local string postamble
+    postamble = 'sig_to_postamble'(args :flat)
+
+    .local string fn_code
+    fn_code = 'sprintf'("%s{\n%s%s%s%s}\n", fn_decl, var_decls, preamble, call, postamble)
+
+    .return (fn_code)
+.end
+
+.sub 'sig_to_postamble'
+    .param string ret
+    .param string params
+
+    .local string final_assign
+    $P0 = 'map_from_sig_table'(ret, 'ret_assign')
+    final_assign = $P0[0]
+
+    .local string extra_postamble
+    $P0 = 'map_from_sig_table'(params, 'postamble_tmpl')
+    'fill_tmpls_ascending_ints'($P0)
+    extra_postamble = join "\n", $P0
+
+    .local string postamble
+    postamble = 'sprintf'(<<'TEMPLATE', final_assign, extra_postamble)
+    %s
+    %s
+TEMPLATE
+    .return (postamble)
+.end
+
+.sub 'sig_to_call'
+    .param string ret
+    .param string params
+
+    .local string return_assign
+    $P0 = 'map_from_sig_table'(ret, 'func_call_assign')
+    return_assign = $P0[0]
+
+    .local string ret_cast
+    $P0 = 'map_from_sig_table'(ret, 'as_return')
+    ret_cast = $P0[0]
+    if ret_cast == 'void' goto void_fn
+        ret_cast = 'sprintf'('(%s)', ret_cast)
+        goto end_ret_cast
+    void_fn:
+        ret_cast = ''
+    end_ret_cast:
+
+    .local string call_params
+    $P0 = 'map_from_sig_table'(params, 'call_param_tmpl')
+    'fill_tmpls_ascending_ints'($P0)
+    call_params = join ', ', $P0
+
+    .local string call
+    call = 'sprintf'(<<'TEMPLATE', return_assign, ret_cast, call_params)
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    %s %s(*fn_pointer)(%s);
+TEMPLATE
+    .return (call)
+.end
+
+.sub 'sig_to_preamble'
+    .param string ret
+    .param string params
+
+    unless params goto return
+
+    .local string sig
+    $P0 = 'map_from_sig_table'(params, 'sig_char')
+    sig = join "", $P0
+
+    .local string fill_params
+    $P0 = 'map_from_sig_table'(params, 'fill_params_tmpl')
+    'fill_tmpls_ascending_ints'($P0)
+    fill_params = join "", $P0
+
+    .local string extra_preamble
+    $P0 = 'map_from_sig_table'(params, 'preamble_tmpl')
+    'fill_tmpls_ascending_ints'($P0)
+    extra_preamble = join "", $P0
+
+    .local string preamble
+    preamble = 'sprintf'(<<'TEMPLATE', sig, fill_params, extra_preamble)
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "%s"%s);
+    %s
+TEMPLATE
+
+  return:
+    .return (preamble)
+.end
+
+.sub 'sig_to_var_decls'
+    .param string ret
+    .param string params
+
+    .local string ret_csig
+    $P0 = 'map_from_sig_table'(ret, 'as_return')
+    ret_csig = $P0[0]
+
+    .local string params_csig
+    $P0 = 'map_from_sig_table'(params, 'as_proto')
+    params_csig = join ', ', $P0
+    if params_csig goto end_default_params_csig_to_void
+        params_csig = 'void'
+    end_default_params_csig_to_void:
+
+    .local string ret_tdecl
+    ret_tdecl = ""
+    $P0 = 'map_from_sig_table'(ret, 'return_type')
+    $S0 = $P0[0]
+    unless $S0 goto end_ret_type
+    if $S0 == 'void' goto end_ret_type
+        $S0 = 'sprintf'("%s return_data;\n", $S0)
+        ret_tdecl = concat ret_tdecl, $S0
+    end_ret_type:
+    $P0 = 'map_from_sig_table'(ret, 'final_dest')
+    $S0 = $P0[0]
+    unless $S0 goto end_final_dest
+        $S0 = concat $S0, "\n"
+        ret_tdecl = concat ret_tdecl, $S0
+    end_final_dest:
+
+    .local string params_tdecl
+    $P0 = 'map_from_sig_table'(params, 'temp_tmpl')
+    'fill_tmpls_ascending_ints'($P0)
+    $P0 = 'grep_for_true'($P0)
+    params_tdecl = join ";\n    ", $P0
+
+    .local string var_decls
+    var_decls = 'sprintf'(<<'TEMPLATE', ret_csig, params_csig, ret_tdecl, params_tdecl)
+    typedef %s(* func_t)(%s);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    %s
+    %s;
+TEMPLATE
+
+    .return (var_decls)
+.end
+
+.sub 'sig_to_fn_decl'
+    .param pmc sig :slurpy
+    .local string storage_class, fn_name, fn_decl
+    storage_class = 'read_from_opts'(.THUNK_STORAGE_CLASS)
+    fn_name = 'sig_to_fn_name'(sig :flat)
+    fn_decl = 'sprintf'(<<'TEMPLATE', storage_class, fn_name)
+%s void
+%s(PARROT_INTERP, PMC *self)
+TEMPLATE
+    .return (fn_decl)
+.end
+
+.sub 'sig_to_fn_name'
+    .param string ret
+    .param string params
+
+    .local string fix_params
+    $P0 = 'map_from_sig_table'(params, 'cname')
+    fix_params = join '', $P0
+
+
+    $S0 = 'sprintf'('%s_%s', ret, fix_params)
+    $S1 = 'read_from_opts'(.THUNK_NAME_PROTO)
+    $S2 = 'sprintf'($S1, $S0)
+    .return ($S2)
+.end
+
+.sub 'map_from_sig_table'
+    .param string sig
+    .param string field_name
+
+    .local pmc sig_table
+    sig_table = get_global .SIG_TABLE_GLOBAL_NAME
+
+    $P0 = split '', sig
+
+    .local pmc result
+    result = new ['ResizableStringArray']
+    $I0 = $P0
+    result = $I0
+
+    $I0 = $P0
+    $I1 = 0
+    loop:
+        if $I1 >= $I0 goto end_loop
+        $S0 = $P0[$I1]
+        $S1 = sig_table[$S0; field_name]
+        result[$I1] = $S1
+        inc $I1
+        goto loop
+    end_loop:
+
+    .return (result)
+.end
+
+# }}}
+
+# read_sigs {{{
+
+.sub 'read_sigs'
+    .local pmc stdin, seen, sigs
+    stdin = getstdin
+    seen  = new ['Hash']
+    sigs  = new ['ResizablePMCArray']
+
+    .local int no_warn_dups
+    no_warn_dups = 'read_from_opts'(.NO_WARN_DUPS)
+
+    .local int lineno
+    lineno = 0
+    read_loop:
+        unless stdin goto end_read_loop
+
+        .local string ret_sig, param_sig, full_sig
+        (ret_sig, param_sig) = 'read_one_sig'(stdin)
+        inc lineno
+        full_sig = concat ret_sig, param_sig
+
+        # filter out empty sigs (and empty lines)
+        unless full_sig goto read_loop
+
+        # de-dup sigs
+        $I0 = seen[full_sig]
+        unless $I0 goto unseen
+            if no_warn_dups goto end_dup_warn
+                $S0 = 'sprintf'(<<'ERROR', full_sig, lineno, $I0)
+Ignored signature '%s' on line %d (previously seen on line %d)
+ERROR
+                printerr $S0
+            end_dup_warn:
+            goto read_loop
+        unseen:
+        seen[full_sig] = lineno
+
+        .local pmc sig
+        sig = new ['ResizableStringArray']
+        sig = 2
+        sig[0] = ret_sig
+        sig[1] = param_sig
+        push sigs, sig
+
+        goto read_loop
+    end_read_loop:
+
+    .return (sigs)
+.end
+
+.sub 'read_one_sig'
+    .param pmc fh
+
+    .local string line
+    line = readline fh
+
+    # handle comments
+    $I0 = index line, '#'
+    if $I0 < 0 goto end_comment
+        line = substr line, 0, $I0
+    end_comment:
+
+    # convert whitespace into spaces
+    .const 'Sub' $P0 = 'alternate_whitespaces'
+    $P1 = iter $P0
+    outer_whitespace_loop:
+        unless $P1 goto end_outer_whitespace_loop
+        $S0 = shift $P1
+
+        inner_whitespace_loop:
+            $I0 = index line, $S0
+            if $I0 < 0 goto end_inner_whitespace_loop
+            substr line, $I0, 1, ' '
+            goto inner_whitespace_loop
+        end_inner_whitespace_loop:
+
+        goto outer_whitespace_loop
+    end_outer_whitespace_loop:
+
+    # turn multiple spaces into a single space
+    multispace_loop:
+        $I0 = index line, '  '
+        if $I0 < 0 goto end_multispace_loop
+        $S0 = substr line, $I0, 2, ' '
+        goto multispace_loop
+    end_multispace_loop:
+
+    # remove leading whitespace
+    $S0 = substr line, 0, 1
+    unless $S0 == ' ' goto end_leading
+        $S0 = substr line, 0, 1, ''
+    end_leading:
+
+    # handle empty (or whitespace only) lines
+    if line == '' goto ret
+    if line == ' ' goto ret
+
+    # remove trailing whitespace
+    $S0 = substr line, -1, 1
+    unless $S0 == ' ' goto end_trailing
+        $S0 = substr line, -1, 1, ''
+    end_trailing:
+
+    # read the signature
+    .local string ret_sig, param_sig
+    $P0 = split ' ', line
+    ret_sig   = $P0[0]
+    param_sig = $P0[1]
+
+  ret:
+    .return (ret_sig, param_sig)
+.end
+
+#}}}
+
+# gen_sigtable {{{
+
+.sub 'gen_sigtable'
+    .const string json_table = <<'JSON'
+{
+    "p": { "as_proto":   "void *",
+           "final_dest": "PMC * final_destination = PMCNULL;",
+           "temp_tmpl": "PMC *t_%i",
+           "sig_char":   "P",
+           "call_param_tmpl": "PMC_IS_NULL((PMC*)t_%i) ? (void *)NULL : VTABLE_get_pointer(interp, t_%i)",
+           "ret_assign": "if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"P\", final_destination);" },
+    "i": { "as_proto": "int", "sig_char": "I",
+           "return_type": "INTVAL" },
+    "l": { "as_proto": "long",   "sig_char": "I", "return_type": "INTVAL" },
+    "c": { "as_proto": "char",   "sig_char": "I", "return_type": "INTVAL" },
+    "s": { "as_proto": "short",  "sig_char": "I", "return_type": "INTVAL" },
+    "f": { "as_proto": "float",  "sig_char": "N", "return_type": "FLOATVAL" },
+    "d": { "as_proto": "double", "sig_char": "N", "return_type": "FLOATVAL" },
+    "t": { "as_proto": "char *",
+           "final_dest": "STRING *final_destination;",
+           "ret_assign": "final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"S\", final_destination);",
+           "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;",
+           "postamble_tmpl": "if (t_%i) Parrot_str_free_cstring(t_%i);" },
+    "v": { "as_proto": "void",
+           "return_type": "void *",
+           "sig_char": "v",
+           "ret_assign": "",
+           "func_call_assign": "" },
+    "P": { "as_proto": "PMC *", "sig_char": "P" },
+    "O": { "as_proto": "PMC *", "returns": "", "sig_char": "Pi" },
+    "J": { "as_proto": "PARROT_INTERP",
+           "returns": "",
+           "fill_params_tmpl": "",
+           "call_param_tmpl": "interp",
+           "temp_tmpl": "",
+           "sig_char": "" },
+    "S": { "as_proto": "STRING *", "sig_char": "S" },
+    "I": { "as_proto": "INTVAL", "sig_char": "I" },
+    "N": { "as_proto": "FLOATVAL", "sig_char": "N" },
+    "b": { "as_proto": "void *",
+           "as_return": "",
+           "sig_char": "S",
+           "temp_tmpl":"STRING *t_%i",
+           "call_param_tmpl": "Buffer_bufstart(t_%i)" },
+    "B": { "as_proto": "char **",
+           "as_return": "",
+           "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;",
+           "call_param_tmpl": "&t_%i",
+           "postamble_tmpl": "if (t_%i) Parrot_str_free_cstring(t_%i);" },
+    "2": { "as_proto": "short *",
+           "sig_char": "P",
+           "return_type": "short",
+           "ret_assign": "Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"I\", return_data);",
+           "temp_tmpl": "PMC *t_%i; short i_%i",
+           "preamble_tmpl": "i_%i = VTABLE_get_integer(interp, t_%i);",
+           "call_param_tmpl": "&i_%i",
+           "postamble_tmpl": "VTABLE_set_integer_native(interp, t_%i, i_%i);" },
+    "3": { "as_proto": "int *",
+           "sig_char": "P",
+           "return_type": "int",
+           "ret_assign": "Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"I\", return_data);",
+           "temp_tmpl": "PMC *t_%i; int i_%i",
+           "preamble_tmpl": "i_%i = VTABLE_get_integer(interp, t_%i);",
+           "call_param_tmpl": "&i_%i",
+           "postamble_tmpl": "VTABLE_set_integer_native(interp, t_%i, i_%i);" },
+    "4": { "as_proto": "long *",
+           "sig_char": "P",
+           "return_type": "long",
+           "ret_assign": "Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"I\", return_data);",
+           "temp_tmpl": "PMC *t_%i; long i_%i",
+           "preamble_tmpl": "i_%i = VTABLE_get_integer(interp, t_%i);",
+           "call_param_tmpl": "&i_%i",
+           "postamble_tmpl": "VTABLE_set_integer_native(interp, t_%i, i_%i);" },
+    "L": { "as_proto": "long *", "as_return": "" },
+    "T": { "as_proto": "char **", "as_return": "" },
+    "V": { "as_proto": "void **",
+           "as_return": "",
+           "sig_char": "P",
+           "temp_tmpl": "PMC *t_%i; void *v_%i",
+           "preamble_tmpl": "v_%i = VTABLE_get_pointer(interp, t_%i);",
+           "call_param_tmpl": "&v_%i",
+           "postamble_tmpl": "VTABLE_set_pointer(interp, t_%i, v_%i);" },
+    "@": { "as_proto": "PMC *", "as_return": "", "cname": "xAT_", "sig_char": "Ps" }
+}
+JSON
+
+    # decode table
+    .local pmc compiler
+    load_bytecode 'data_json.pbc'
+    compiler = compreg 'data_json'
+
+    .local pmc table
+    $P0 = compiler.'compile'(json_table)
+    table = $P0()
+
+    # fixup table
+    .local pmc table_iter
+    table_iter = iter table
+  iter_loop:
+    unless table_iter goto iter_end
+
+    .local string k
+    .local pmc v
+    k = shift table_iter
+    v = table[k]
+
+    $I0 = exists v['cname']
+    if $I0 goto has_cname
+        v['cname'] = k
+    has_cname:
+
+    $I0 = exists v['as_return']
+    if $I0 goto has_as_return
+        $S0 = v['as_proto']
+        v['as_return'] = $S0
+    has_as_return:
+
+    $I0 = exists v['return_type']
+    if $I0 goto has_return_type
+        $S0 = v['as_proto']
+        v['return_type'] = $S0
+    has_return_type:
+
+    $I0 = exists v['ret_assign']
+    $I1 = exists v['sig_char']
+    $I1 = !$I1
+    $I0 = $I0 || $I1 # not (not exists v[ret_assign] and exists v[sig_char])
+    if $I0 goto has_ret_assign
+        $S0 = 'Parrot_pcc_fill_returns_from_c_args(interp, call_object, "'
+        $S1 = v['sig_char']
+        $S0 = concat $S0, $S1
+        $S0 = concat $S0, '", return_data);'
+        v['ret_assign'] = $S0
+    has_ret_assign:
+
+    $I0 = exists v['func_call_assign']
+    if $I0 goto has_func_call_assign
+        v['func_call_assign'] = 'return_data = '
+    has_func_call_assign:
+
+    $I0 = exists v['temp_tmpl']
+    if $I0 goto has_temp_tmpl
+        $S0 = v['return_type']
+        $S0 = concat $S0, " t_%i"
+        v['temp_tmpl'] = $S0
+    has_temp_tmpl:
+
+    $I0 = exists v['fill_params_tmpl']
+    if $I0 goto has_fill_params_tmpl
+        v['fill_params_tmpl'] = ', &t_%i'
+    has_fill_params_tmpl:
+
+    $I0 = exists v['call_param_tmpl']
+    if $I0 goto has_call_param_tmpl
+        v['call_param_tmpl'] = 't_%i'
+    has_call_param_tmpl:
+
+    goto iter_loop
+  iter_end:
+
+    set_global .SIG_TABLE_GLOBAL_NAME, table
+.end
+
+# }}}
+
+# utility fn's {{{
+
+.sub 'sprintf'
+    .param string tmpl
+    .param pmc args :slurpy
+    $S0 = sprintf tmpl, args
+    .return ($S0)
+.end
+
+.sub 'fill_tmpls_ascending_ints'
+    .param pmc tmpls
+    .local int idx, n
+
+    idx = 0
+    n = tmpls
+    loop:
+        if idx >= n goto end_loop
+        $S0 = tmpls[idx]
+        $I0 = 'printf_arity'($S0)
+        $P0 = 'xtimes'(idx, $I0)
+        $S1 = sprintf $S0, $P0
+        tmpls[idx] = $S1
+        inc idx
+        goto loop
+    end_loop:
+.end
+
+.sub 'printf_arity'
+    .param string tmpl
+
+    .local int count, idx
+    idx = 0
+    count = 0
+
+    loop:
+        idx = index tmpl, '%', idx
+        if idx < 0 goto end_loop
+
+        # check against '%%' escapes
+        $I0 = idx + 1
+        $S0 = substr tmpl, $I0, 1
+        unless $S0 == '%' goto is_valid_placeholder
+            idx = idx + 2 # skip both '%'s
+            goto loop
+        is_valid_placeholder:
+
+        inc idx
+        inc count
+        goto loop
+    end_loop:
+
+    .return (count)
+.end
+
+.sub 'xtimes'
+    .param pmc what
+    .param int times
+
+    .local pmc retv
+    retv = new ['ResizablePMCArray']
+    retv = times
+
+    $I0 = 0
+    loop:
+        if $I0 >= times goto end_loop
+        retv[$I0] = what
+        inc $I0
+        goto loop
+    end_loop:
+
+    .return (retv)
+.end
+
+.sub 'grep_for_true'
+    .param pmc input
+    .local pmc output
+    .local int i, n
+    output = new ['ResizableStringArray']
+    i = 0
+    n = input
+    loop:
+        if i >= n goto end_loop
+        $S0 = input[i]
+        unless $S0 goto end_cond
+            push output, $S0
+        end_cond:
+        inc i
+        goto loop
+    end_loop:
+
+    .return (output)
+.end
+
+.sub 'file_basename'
+    .param string full_path
+    .param pmc extns :slurpy
+
+    .local string dir, file, extn
+
+    # replace native file separator with '/'
+    $S0 = 'native_file_separator'()
+    $P0 = split $S0, full_path
+    file = join "/", $P0
+
+    $P0 = split '/', file
+    file = pop $P0
+    dir = join '/', $P0
+
+    extn_loop:
+        unless extns goto end_extn_loop
+        $S0 = shift extns
+        $I0 = length $S0
+        $I1 = -$I0
+        $S1 = substr file, $I1, $I0
+        unless $S1 == $S0 goto extn_loop
+        extn = $S1
+        substr file, $I1, $I0, ''
+    end_extn_loop:
+
+    .return (dir, file, extn)
+.end
+
+.sub 'native_file_separator'
+    load_bytecode 'config.pbc'
+    $P0 = '_config'()
+    $S0 = $P0['slash']
+    .return ($S0)
+.end
+
+.sub 'alternate_whitespaces' :anon :immediate
+    $P0 = new ['ResizableStringArray']
+    push $P0, "\t"
+    push $P0, "\n"
+    push $P0, "\r"
+    .return ($P0)
+.end
+
+# }}}
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+

Modified: branches/ops_pct/tools/dev/vtablize.pl
==============================================================================
--- branches/ops_pct/tools/dev/vtablize.pl	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/tools/dev/vtablize.pl	Sun Mar  7 19:33:20 2010	(r44743)
@@ -63,7 +63,6 @@
 s/^(\s*)(PMC\s+\*get_pmc_keyed\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(PMC\s+\*get_pmc_keyed_int\(INTVAL\s+\w*\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(PMC\s+\*get_pmc_keyed_str\(STRING\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*get_bignum\(\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(PMC\s+\*slice\(PMC\s+\*\w*,\s+INTVAL\s+\w*\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(void\s+\*get_pointer\(\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(void\s+\*get_pointer_keyed\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
@@ -157,58 +156,12 @@
 s/^(\s*)(void\s+i_cmodulus\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(void\s+i_cmodulus_int\(INTVAL\s+\w*\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(void\s+i_cmodulus_float\(FLOATVAL\s+\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*pow\(PMC\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*pow_int\(INTVAL\s+\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*pow_float\(FLOATVAL\s+\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_pow\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_pow_int\(INTVAL\s+\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_pow_float\(FLOATVAL\s+\w*\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(void\s+increment\(\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(void\s+decrement\(\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(PMC\s+\*absolute\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(void\s+i_absolute\(\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(PMC\s+\*neg\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(void\s+i_neg\(\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_or\(PMC\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_or_int\(INTVAL\s+\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_or\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_or_int\(INTVAL\s+\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_xor\(PMC\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_xor_int\(INTVAL\s+\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_xor\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_xor_int\(INTVAL\s+\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_ors\(PMC\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_ors_str\(STRING\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_ors\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_ors_str\(STRING\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_xors\(PMC\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_xors_str\(STRING\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_xors\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_xors_str\(STRING\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_and\(PMC\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_and_int\(INTVAL\s+\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_and\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_and_int\(INTVAL\s+\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_ands\(PMC\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_ands_str\(STRING\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_ands\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_ands_str\(STRING\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_not\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_not\(\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_nots\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_nots\(\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_shl\(PMC\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_shl_int\(INTVAL\s+\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_shl\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_shl_int\(INTVAL\s+\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_shr\(PMC\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_shr_int\(INTVAL\s+\w*,\s+PMC\s+\*\w*\)\s\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_shr\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_shr_int\(INTVAL\s+\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_lsr\(PMC\s+\*\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(PMC\s+\*bitwise_lsr_int\(INTVAL\s+\w*,\s+PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_lsr\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
-s/^(\s*)(void\s+i_bitwise_lsr_int\(INTVAL\s+\w*\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(INTVAL\s+is_equal\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(INTVAL\s+is_equal_num\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;
 s/^(\s*)(INTVAL\s+is_equal_string\(PMC\s+\*\w*\)\s+{)/$1VTABLE $2/;

Modified: branches/ops_pct/tools/util/release.json
==============================================================================
--- branches/ops_pct/tools/util/release.json	Sun Mar  7 17:00:27 2010	(r44742)
+++ branches/ops_pct/tools/util/release.json	Sun Mar  7 19:33:20 2010	(r44743)
@@ -2,8 +2,8 @@
     "release.version"  : "2.0.0",
     "release.name"     : "Inevitable",
     "release.day"      : "Tuesday",
-    "release.date"     : "19 January 2010",
-    "release.nextdate" : "16 Februuary 2010",
+    "release.date"     : "16 Februuary 2010",
+    "release.nextdate" : "16 March 2010",
 
     "web.root"         : "http://parrot.org/",
     "web.source"       : "download",
@@ -11,13 +11,13 @@
     "web.repository"   : "https://svn.parrot.org/parrot/trunk/",
 
     "bugday.day"       : "Saturday",
-    "bugday.date"      : "14 February 2010",
+    "bugday.date"      : "13 March 2010",
 
     "wiki.root"        : "https://trac.parrot.org/parrot/wiki/",
-    "wiki.bugday"      : "bug_day_2010_02_14",
+    "wiki.bugday"      : "bug_day_2010_03_13",
 
     "cpan.search"      : "http://search.cpan.org/dist/parrot",
-    "ftp.path"         : "ftp://ftp.parrot.org/pub/parrot/releases/stable/2.0.0/",
+    "ftp.path"         : "ftp://ftp.parrot.org/pub/parrot/devel/stable/2.1.0/",
     "subversion.root"  : "http://subversion.tigris.org/",
     "svk.root"         : "http://svk.bestpractical.com/"
 }


More information about the parrot-commits mailing list