[svn:parrot] r46399 - in branches/ops_pct: . compilers/imcc compilers/opsc config/gen config/gen/makefiles examples/shootout examples/tools include/parrot lib/Parrot/Pmc2c runtime/parrot/library runtime/parrot/library/Archive runtime/parrot/library/Getopt runtime/parrot/library/PGE runtime/parrot/library/Test runtime/parrot/library/Test/Builder src src/dynpmc src/gc src/interp src/ops src/pmc src/runcore src/string t/distro t/dynpmc t/library t/native_pbc t/pmc t/src tools/dev

cotto at svn.parrot.org cotto at svn.parrot.org
Sat May 8 02:08:43 UTC 2010


Author: cotto
Date: Sat May  8 02:08:40 2010
New Revision: 46399
URL: https://trac.parrot.org/parrot/changeset/46399

Log:
sync branch with trunk

Added:
   branches/ops_pct/runtime/parrot/library/Archive/Zip.pir
      - copied unchanged from r46398, trunk/runtime/parrot/library/Archive/Zip.pir
   branches/ops_pct/src/pmc/stringbuilder.pmc
      - copied unchanged from r46398, trunk/src/pmc/stringbuilder.pmc
   branches/ops_pct/t/distro/manifest_generated.t
      - copied unchanged from r46398, trunk/t/distro/manifest_generated.t
   branches/ops_pct/t/library/archive_zip.t
      - copied unchanged from r46398, trunk/t/library/archive_zip.t
   branches/ops_pct/t/pmc/stringbuilder.t
      - copied unchanged from r46398, trunk/t/pmc/stringbuilder.t
Modified:
   branches/ops_pct/   (props changed)
   branches/ops_pct/MANIFEST
   branches/ops_pct/MANIFEST.generated
   branches/ops_pct/PBC_COMPAT
   branches/ops_pct/compilers/imcc/pbc.c
   branches/ops_pct/compilers/opsc/Defines.mak   (props changed)
   branches/ops_pct/compilers/opsc/Rules.mak   (props changed)
   branches/ops_pct/config/gen/config_pm.pm
   branches/ops_pct/config/gen/makefiles/root.in
   branches/ops_pct/examples/shootout/revcomp.pir
   branches/ops_pct/examples/tools/pbc_checker.cpp
   branches/ops_pct/include/parrot/embed.h
   branches/ops_pct/include/parrot/interpreter.h
   branches/ops_pct/include/parrot/packfile.h
   branches/ops_pct/include/parrot/runcore_trace.h   (props changed)
   branches/ops_pct/include/parrot/string_funcs.h
   branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm
   branches/ops_pct/runtime/parrot/library/Getopt/Obj.pir
   branches/ops_pct/runtime/parrot/library/PGE/Dumper.pir
   branches/ops_pct/runtime/parrot/library/Test/Builder.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/distutils.pir
   branches/ops_pct/runtime/parrot/library/parrotlib.pir
   branches/ops_pct/src/dynpmc/gziphandle.pmc
   branches/ops_pct/src/embed.c
   branches/ops_pct/src/gc/gc_ms.c
   branches/ops_pct/src/hll.c
   branches/ops_pct/src/interp/inter_create.c   (contents, props changed)
   branches/ops_pct/src/library.c
   branches/ops_pct/src/ops/core_ops.c
   branches/ops_pct/src/ops/io.ops
   branches/ops_pct/src/ops/string.ops
   branches/ops_pct/src/packfile.c
   branches/ops_pct/src/packout.c
   branches/ops_pct/src/pmc/codestring.pmc
   branches/ops_pct/src/pmc/filehandle.pmc
   branches/ops_pct/src/pmc/imageio.pmc
   branches/ops_pct/src/pmc/imageiosize.pmc
   branches/ops_pct/src/pmc/packfileannotations.pmc
   branches/ops_pct/src/pmc/string.pmc
   branches/ops_pct/src/runcore/cores.c   (props changed)
   branches/ops_pct/src/runcore/trace.c   (props changed)
   branches/ops_pct/src/string/api.c
   branches/ops_pct/t/dynpmc/gziphandle.t
   branches/ops_pct/t/native_pbc/annotations.pbc
   branches/ops_pct/t/native_pbc/integer_1.pbc
   branches/ops_pct/t/native_pbc/number_1.pbc
   branches/ops_pct/t/native_pbc/string_1.pbc
   branches/ops_pct/t/pmc/string.t
   branches/ops_pct/t/src/embed.t   (contents, props changed)
   branches/ops_pct/tools/dev/mk_gitignore.pl   (props changed)
   branches/ops_pct/tools/dev/pbc_to_exe.pir

Modified: branches/ops_pct/MANIFEST
==============================================================================
--- branches/ops_pct/MANIFEST	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/MANIFEST	Sat May  8 02:08:40 2010	(r46399)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Thu May  6 01:22:31 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sat May  8 02:06:01 2010 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -1153,6 +1153,7 @@
 runtime/parrot/include/test_more.pir                        [library]
 runtime/parrot/languages/parrot/parrot.pir                  [library]
 runtime/parrot/library/Archive/Tar.pir                      [library]
+runtime/parrot/library/Archive/Zip.pir                      [library]
 runtime/parrot/library/CGI/QueryHash.pir                    [library]
 runtime/parrot/library/Config/JSON.pir                      [library]
 runtime/parrot/library/Configure/genfile.pir                [library]
@@ -1426,6 +1427,7 @@
 src/pmc/sockaddr.pmc                                        []
 src/pmc/socket.pmc                                          []
 src/pmc/string.pmc                                          []
+src/pmc/stringbuilder.pmc                                   []
 src/pmc/stringhandle.pmc                                    []
 src/pmc/stringiterator.pmc                                  []
 src/pmc/sub.pmc                                             []
@@ -1642,6 +1644,7 @@
 t/configure/testlib/verbosefoobar                           [test]
 t/distro/file_metadata.t                                    [test]
 t/distro/manifest.t                                         [test]
+t/distro/manifest_generated.t                               [test]
 t/dynoplibs/math.t                                          [test]
 t/dynoplibs/obscure.t                                       [test]
 t/dynpmc/dynlexpad.t                                        [test]
@@ -1671,6 +1674,7 @@
 t/harness.pir                                               [test]
 t/include/fp_equality.t                                     [test]
 t/library/archive_tar.t                                     [test]
+t/library/archive_zip.t                                     [test]
 t/library/cgi_query_hash.t                                  [test]
 t/library/configure.t                                       [test]
 t/library/coroutine.t                                       [test]
@@ -1912,6 +1916,7 @@
 t/pmc/sockaddr.t                                            [test]
 t/pmc/socket.t                                              [test]
 t/pmc/string.t                                              [test]
+t/pmc/stringbuilder.t                                       [test]
 t/pmc/stringhandle.t                                        [test]
 t/pmc/stringiterator.t                                      [test]
 t/pmc/sub.t                                                 [test]

Modified: branches/ops_pct/MANIFEST.generated
==============================================================================
--- branches/ops_pct/MANIFEST.generated	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/MANIFEST.generated	Sat May  8 02:08:40 2010	(r46399)
@@ -2,255 +2,390 @@
 # 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.3.0.dylib                    [main]lib
-blib/lib/libparrot.a                              [main]lib
-blib/lib/libparrot.dylib                          [main]lib
-blib/lib/libparrot.so.2.3.0                       [main]lib
-blib/lib/libparrot.so                             [main]lib
-compilers/data_json/data_json.pbc                 [data_json]
-config/gen/call_list/opengl.in                    []
-docs/ops/bit.pod                                  [doc]
-docs/ops/cmp.pod                                  [doc]
-docs/ops/core.pod                                 [doc]
-docs/ops/debug.pod                                [doc]
-docs/ops/dotgnu.pod                               [doc]
-docs/ops/experimental.pod                         [doc]
-docs/ops/io.pod                                   [doc]
-docs/ops/math.pod                                 [doc]
-docs/ops/object.pod                               [doc]
-docs/ops/obscure.pod                              [doc]
-docs/ops/pic.pod                                  [doc]
-docs/ops/pmc.pod                                  [doc]
-docs/ops/python.pod                               [doc]
-docs/ops/set.pod                                  [doc]
-docs/ops/stack.pod                                [doc]
-docs/ops/string.pod                               [doc]
-docs/ops/sys.pod                                  [doc]
-docs/ops/var.pod                                  [doc]
-include/parrot/config.h                           [main]include
-include/parrot/core_pmcs.h                        [main]include
-include/parrot/exec_dep.h                         [main]include
-include/parrot/extend_vtable.h                    [main]include
-include/parrot/feature.h                          [main]include
-include/parrot/has_header.h                       [main]include
-include/parrot/oplib/core_ops.h                   [main]include
-include/parrot/oplib/ops.h                        [main]include
-include/parrot/pbcversion.h                       [devel]include
-include/parrot/platform.h                         [main]include
-include/parrot/platform_limits.h                  [devel]include
-include/parrot/vtable.h                           [main]include
-install_config.fpmc                               [main]lib
-src/install_config.o                              [main]lib
-src/install_config.obj                            [main]lib
-installable_parrot_config.exe                     [main]bin
-installable_parrot_config                         [main]bin
-installable_parrot_debugger.exe                   [main]bin
-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
-installable_pbc_dump                              [main]bin
-installable_pbc_merge.exe                         [main]bin
-installable_pbc_merge                             [main]bin
-installable_pbc_to_exe.exe                        [main]bin
-installable_pbc_to_exe                            [main]bin
-installable_parrot-nqp.exe                        [main]bin
-installable_parrot-nqp                            [main]bin
-installable_tapir.exe                             [main]bin
-installable_tapir                                 [main]bin
-lib/Parrot/Config/Generated.pm                    [devel]lib
-libparrot.dll                                     [main]bin
-libparrot.lib                                     [main]bin
-lib/Parrot/OpLib/core.pm                          [devel]lib
-lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm                [devel]lib
-lib/Parrot/PMC.pm                                 [devel]lib
-parrot.pc                                         [main]pkgconfig
-runtime/parrot/dynext/dynlexpad.bundle            [library]
-runtime/parrot/dynext/dynlexpad.dll               [library]
-runtime/parrot/dynext/dynlexpad.dylib             [library]
-runtime/parrot/dynext/dynlexpad.so                [library]
-runtime/parrot/dynext/file.bundle                 [library]
-runtime/parrot/dynext/file.dll                    [library]
-runtime/parrot/dynext/file.dylib                  [library]
-runtime/parrot/dynext/file.so                     [library]
-runtime/parrot/dynext/gziphandle.bundle           [library]
-runtime/parrot/dynext/gziphandle.dll              [library]
-runtime/parrot/dynext/gziphandle.dylib            [library]
-runtime/parrot/dynext/gziphandle.so               [library]
-runtime/parrot/dynext/libglutcb.bundle            [library]
-runtime/parrot/dynext/libglutcb.dll               [library]
-runtime/parrot/dynext/libglutcb.dylib             [library]
-runtime/parrot/dynext/libglutcb.so                [library]
-runtime/parrot/dynext/math_ops.so                 [library]
-runtime/parrot/dynext/math_ops.bundle             [library]
-runtime/parrot/dynext/math_ops.dll                [library]
-runtime/parrot/dynext/math_ops.dylib              [library]
-runtime/parrot/dynext/obscure_ops.bundle          [library]
-runtime/parrot/dynext/obscure_ops.dll             [library]
-runtime/parrot/dynext/obscure_ops.dylib           [library]
-runtime/parrot/dynext/obscure_ops.so              [library]
-runtime/parrot/dynext/os.bundle                   [library]
-runtime/parrot/dynext/os.dll                      [library]
-runtime/parrot/dynext/os.dylib                    [library]
-runtime/parrot/dynext/os.so                       [library]
-runtime/parrot/dynext/rational.bundle             [library]
-runtime/parrot/dynext/rational.dll                [library]
-runtime/parrot/dynext/rational.dylib              [library]
-runtime/parrot/dynext/rational.so                 [library]
-runtime/parrot/include/call_bits.pasm             [main]
-runtime/parrot/include/cclass.pasm                [main]
-runtime/parrot/include/config.fpmc                []
-runtime/parrot/include/datatypes.pasm             [main]
-runtime/parrot/include/dlopenflags.pasm           [main]
-runtime/parrot/include/errors.pasm                [main]
-runtime/parrot/include/except_severity.pasm       [main]
-runtime/parrot/include/except_types.pasm          [main]
-runtime/parrot/include/hash_key_type.pasm         [main]
-runtime/parrot/include/iglobals.pasm              [main]
-runtime/parrot/include/interpcores.pasm           [main]
-runtime/parrot/include/interpdebug.pasm           [main]
-runtime/parrot/include/interpflags.pasm           [main]
-runtime/parrot/include/interpinfo.pasm            [main]
-runtime/parrot/include/interptrace.pasm           [main]
-runtime/parrot/include/iotypes.pasm               [main]
-runtime/parrot/include/iterator.pasm              [main]
-runtime/parrot/include/libpaths.pasm              [main]
-runtime/parrot/include/longopt.pasm               [main]
-runtime/parrot/include/opengl_defines.pasm        [main]
-runtime/parrot/include/parrotlib.pbc              [main]
-runtime/parrot/include/pmctypes.pasm              [main]
-runtime/parrot/include/signal.pasm                [main]
-runtime/parrot/include/socket.pasm                [main]
-runtime/parrot/include/stat.pasm                  [main]
-runtime/parrot/include/stdio.pasm                 [main]
-runtime/parrot/include/stringinfo.pasm            [main]
-runtime/parrot/include/sysinfo.pasm               [main]
-runtime/parrot/include/timer.pasm                 [main]
-runtime/parrot/include/tm.pasm                    [main]
-runtime/parrot/include/vtable_methods.pasm        [main]
-runtime/parrot/include/warnings.pasm              [main]
-runtime/parrot/library/Archive/TAR.pbc            [main]
-runtime/parrot/library/CGI/QueryHash.pbc          [main]
-runtime/parrot/library/Config/JSON.pbc            [main]
-runtime/parrot/library/Configure/genfile.pbc      [main]
-runtime/parrot/library/config.pbc                 [main]
-runtime/parrot/library/config.pir                 [main]
-runtime/parrot/library/Crow.pbc                   [main]
-runtime/parrot/library/Data/Dumper/Base.pbc       [main]
-runtime/parrot/library/Data/Dumper/Default.pbc    [main]
-runtime/parrot/library/Data/Dumper.pbc            [main]
-runtime/parrot/library/Data/Replace.pbc           [main]
-runtime/parrot/library/Digest/MD5.pbc             [main]
-runtime/parrot/library/distutils.pbc              [main]
-runtime/parrot/library/dumper.pbc                 [main]
-runtime/parrot/library/Getopt/Obj.pbc             [main]
-runtime/parrot/library/HLL.pbc                    [main]
-runtime/parrot/library/HTTP/Daemon.pbc            [main]
-runtime/parrot/library/Iter.pbc                   [main]
-runtime/parrot/library/JSON.pbc                   [main]
-runtime/parrot/library/libpcre.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]
-runtime/parrot/library/ncurses.pbc                [main]
-runtime/parrot/library/nqp-rx.pbc                 [nqp]
-runtime/parrot/library/OpenGL_funcs.pir           [main]
-runtime/parrot/library/OpenGL_funcs.pbc           [main]
-runtime/parrot/library/OpenGL.pbc                 [main]
-runtime/parrot/library/osutils.pbc                [main]
-runtime/parrot/library/P6object.pbc               [main]
-runtime/parrot/library/P6Regex.pbc                [main]
-runtime/parrot/library/Parrot/Capture_PIR.pbc     [main]
-runtime/parrot/library/Parrot/Coroutine.pbc       [main]
-runtime/parrot/library/Parrot/Exception.pbc       [main]
-runtime/parrot/library/Parrot/HLLCompiler.pbc     [main]
-runtime/parrot/library/parrotlib.pbc              [main]
-runtime/parrot/library/pcore.pbc                  [main]
-runtime/parrot/library/pcre.pbc                   [main]
-runtime/parrot/library/PCT/Grammar.pbc            [main]
-runtime/parrot/library/PCT/HLLCompiler.pbc        [main]
-runtime/parrot/library/PCT/PAST.pbc               [main]
-runtime/parrot/library/PCT.pbc                    [main]
-runtime/parrot/library/PGE/Dumper.pbc             [main]
-runtime/parrot/library/PGE/Glob.pbc               [main]
-runtime/parrot/library/PGE/Hs.pbc                 [main]
-runtime/parrot/library/PGE.pbc                    [main]
-runtime/parrot/library/PGE/Perl6Grammar.pbc       [main]
-runtime/parrot/library/PGE/Text.pbc               [main]
-runtime/parrot/library/PGE/Util.pbc               [main]
-runtime/parrot/library/Protoobject.pbc            [main]
-runtime/parrot/library/Range.pbc                  [main]
-runtime/parrot/library/Regex.pbc                  [main]
-runtime/parrot/library/Stream/Base.pbc            [main]
-runtime/parrot/library/Stream/Combiner.pbc        [main]
-runtime/parrot/library/Stream/Coroutine.pbc       [main]
-runtime/parrot/library/Stream/Filter.pbc          [main]
-runtime/parrot/library/Stream/Lines.pbc           [main]
-runtime/parrot/library/Stream/ParrotIO.pbc        [main]
-runtime/parrot/library/Stream/Replay.pbc          [main]
-runtime/parrot/library/Stream/Sub.pbc             [main]
-runtime/parrot/library/Stream/Writer.pbc          [main]
-runtime/parrot/library/TAP/Formatter.pbc          [main]
-runtime/parrot/library/TAP/Harness.pbc            [main]
-runtime/parrot/library/TAP/Parser.pbc             [main]
-runtime/parrot/library/Tcl/Glob.pbc               [main]
-runtime/parrot/library/TclLibrary.pbc             [main]
-runtime/parrot/library/Test/Builder/Test.pbc      [main]
-runtime/parrot/library/Test/Builder/Tester.pbc    [main]
-runtime/parrot/library/Test/Builder/TestPlan.pbc  [main]
-runtime/parrot/library/Test/Builder/Output.pbc    [main]
-runtime/parrot/library/Test/Builder.pbc           [main]
-runtime/parrot/library/Test/Class.pbc             [main]
-runtime/parrot/library/Test/More.pbc              [main]
-runtime/parrot/library/TGE.pbc                    [tge]
-runtime/parrot/library/uuid.pbc                   [main]
-runtime/parrot/library/YAML/Dumper/Base.pmc       [main]
-runtime/parrot/library/YAML/Dumper/Default.pmc    [main]
-runtime/parrot/library/YAML/Dumper.pbc            [main]
-src/call_list.txt                                 [devel]src
-src/glut_callbacks.c                              []
-src/jit_emit.h                                    []
-src/nci.c                                         []
-src/null_config.c                                 []
-src/parrot_config.c                               []
-src/pmc/boolean.dump                              [devel]src
-src/pmc/continuation.dump                         [devel]src
-src/pmc/default.dump                              [devel]src
-src/pmc/fixedpmcarray.dump                        [devel]src
-src/pmc/float.dump                                [devel]src
-src/pmc/hash.dump                                 [devel]src
-src/pmc/integer.dump                              [devel]src
-src/pmc/multisub.dump                             [devel]src
-src/pmc/object.dump                               [devel]src
-include/pmc/pmc_boolean.h                         [devel]include
-include/pmc/pmc_class.h                           [devel]include
-include/pmc/pmc_callcontext.h                     [devel]include
-include/pmc/pmc_continuation.h                    [devel]include
-include/pmc/pmc_context.h                         [devel]include
-include/pmc/pmc_default.h                         [devel]include
-include/pmc/pmc_fixedintegerarray.h               [devel]include
-include/pmc/pmc_fixedpmcarray.h                   [devel]include
-include/pmc/pmc_float.h                           [devel]include
-include/pmc/pmc_hash.h                            [devel]include
-include/pmc/pmc_integer.h                         [devel]include
-include/pmc/pmc_multisub.h                        [devel]include
-include/pmc/pmc_object.h                          [devel]include
-include/pmc/pmc_parrotlibrary.h                   [devel]include
-include/pmc/pmc_resizablepmcarray.h               [devel]include
-include/pmc/pmc_role.h                            [devel]include
-include/pmc/pmc_scalar.h                          [devel]include
-include/pmc/pmc_string.h                          [devel]include
-include/pmc/pmc_sub.h                             [devel]include
-include/pmc/pmc_undef.h                           [devel]include
-src/pmc/resizablepmcarray.dump                    [devel]src
-src/pmc/role.dump                                 [devel]src
-src/pmc/scalar.dump                               [devel]src
-src/pmc/string.dump                               [devel]src
-src/pmc/sub.dump                                  [devel]src
-src/pmc/undef.dump                                [devel]src
-src/string_private_cstring.h                      []
-tools/build/dynpmc.pl                             []
-vtable.dump                                       [devel]src
+blib/lib/libparrot.2.3.0.dylib                   [main]lib
+blib/lib/libparrot.a                             [main]lib
+blib/lib/libparrot.dylib                         [main]lib
+blib/lib/libparrot.so                            [main]lib
+blib/lib/libparrot.so.2.3.0                      [main]lib
+compilers/data_json/data_json.pbc                [data_json]
+config/gen/call_list/opengl.in                   []
+docs/ops/bit.pod                                 [doc]
+docs/ops/cmp.pod                                 [doc]
+docs/ops/core.pod                                [doc]
+docs/ops/debug.pod                               [doc]
+docs/ops/dotgnu.pod                              [doc]
+docs/ops/experimental.pod                        [doc]
+docs/ops/io.pod                                  [doc]
+docs/ops/math.pod                                [doc]
+docs/ops/object.pod                              [doc]
+docs/ops/obscure.pod                             [doc]
+docs/ops/pic.pod                                 [doc]
+docs/ops/pmc.pod                                 [doc]
+docs/ops/python.pod                              [doc]
+docs/ops/set.pod                                 [doc]
+docs/ops/stack.pod                               [doc]
+docs/ops/string.pod                              [doc]
+docs/ops/sys.pod                                 [doc]
+docs/ops/var.pod                                 [doc]
+include/parrot/config.h                          [main]include
+include/parrot/core_pmcs.h                       [main]include
+include/parrot/exec_dep.h                        [main]include
+include/parrot/extend_vtable.h                   [main]include
+include/parrot/feature.h                         [main]include
+include/parrot/has_header.h                      [main]include
+include/parrot/oplib/core_ops.h                  [main]include
+include/parrot/oplib/ops.h                       [main]include
+include/parrot/pbcversion.h                      [devel]include
+include/parrot/platform.h                        [main]include
+include/parrot/platform_limits.h                 [devel]include
+include/parrot/vtable.h                          [main]include
+include/pmc/pmc_addrregistry.h                   [devel]include
+include/pmc/pmc_arrayiterator.h                  [devel]include
+include/pmc/pmc_bigint.h                         [devel]include
+include/pmc/pmc_bignum.h                         [devel]include
+include/pmc/pmc_boolean.h                        [devel]include
+include/pmc/pmc_callcontext.h                    [devel]include
+include/pmc/pmc_capture.h                        [devel]include
+include/pmc/pmc_class.h                          [devel]include
+include/pmc/pmc_codestring.h                     [devel]include
+include/pmc/pmc_complex.h                        [devel]include
+include/pmc/pmc_context.h                        [devel]include
+include/pmc/pmc_continuation.h                   [devel]include
+include/pmc/pmc_coroutine.h                      [devel]include
+include/pmc/pmc_default.h                        [devel]include
+include/pmc/pmc_env.h                            [devel]include
+include/pmc/pmc_eval.h                           [devel]include
+include/pmc/pmc_eventhandler.h                   [devel]include
+include/pmc/pmc_exception.h                      [devel]include
+include/pmc/pmc_exceptionhandler.h               [devel]include
+include/pmc/pmc_exporter.h                       [devel]include
+include/pmc/pmc_filehandle.h                     [devel]include
+include/pmc/pmc_fixedbooleanarray.h              [devel]include
+include/pmc/pmc_fixedfloatarray.h                [devel]include
+include/pmc/pmc_fixedintegerarray.h              [devel]include
+include/pmc/pmc_fixedpmcarray.h                  [devel]include
+include/pmc/pmc_fixedstringarray.h               [devel]include
+include/pmc/pmc_float.h                          [devel]include
+include/pmc/pmc_handle.h                         [devel]include
+include/pmc/pmc_hash.h                           [devel]include
+include/pmc/pmc_hashiterator.h                   [devel]include
+include/pmc/pmc_hashiteratorkey.h                [devel]include
+include/pmc/pmc_imageio.h                        [devel]include
+include/pmc/pmc_imageiosize.h                    [devel]include
+include/pmc/pmc_imageiostrings.h                 [devel]include
+include/pmc/pmc_integer.h                        [devel]include
+include/pmc/pmc_iterator.h                       [devel]include
+include/pmc/pmc_key.h                            [devel]include
+include/pmc/pmc_lexinfo.h                        [devel]include
+include/pmc/pmc_lexpad.h                         [devel]include
+include/pmc/pmc_managedstruct.h                  [devel]include
+include/pmc/pmc_multisub.h                       [devel]include
+include/pmc/pmc_namespace.h                      [devel]include
+include/pmc/pmc_nci.h                            [devel]include
+include/pmc/pmc_null.h                           [devel]include
+include/pmc/pmc_object.h                         [devel]include
+include/pmc/pmc_opcode.h                         [devel]include
+include/pmc/pmc_oplib.h                          [devel]include
+include/pmc/pmc_orderedhash.h                    [devel]include
+include/pmc/pmc_orderedhashiterator.h            [devel]include
+include/pmc/pmc_packfile.h                       [devel]include
+include/pmc/pmc_packfileannotation.h             [devel]include
+include/pmc/pmc_packfileannotations.h            [devel]include
+include/pmc/pmc_packfileconstanttable.h          [devel]include
+include/pmc/pmc_packfiledebug.h                  [devel]include
+include/pmc/pmc_packfiledirectory.h              [devel]include
+include/pmc/pmc_packfilefixupentry.h             [devel]include
+include/pmc/pmc_packfilefixuptable.h             [devel]include
+include/pmc/pmc_packfilerawsegment.h             [devel]include
+include/pmc/pmc_packfilesegment.h                [devel]include
+include/pmc/pmc_parrotinterpreter.h              [devel]include
+include/pmc/pmc_parrotlibrary.h                  [devel]include
+include/pmc/pmc_parrotthread.h                   [devel]include
+include/pmc/pmc_pmcproxy.h                       [devel]include
+include/pmc/pmc_pointer.h                        [devel]include
+include/pmc/pmc_resizablebooleanarray.h          [devel]include
+include/pmc/pmc_resizablefloatarray.h            [devel]include
+include/pmc/pmc_resizableintegerarray.h          [devel]include
+include/pmc/pmc_resizablepmcarray.h              [devel]include
+include/pmc/pmc_resizablestringarray.h           [devel]include
+include/pmc/pmc_role.h                           [devel]include
+include/pmc/pmc_scalar.h                         [devel]include
+include/pmc/pmc_scheduler.h                      [devel]include
+include/pmc/pmc_schedulermessage.h               [devel]include
+include/pmc/pmc_sockaddr.h                       [devel]include
+include/pmc/pmc_socket.h                         [devel]include
+include/pmc/pmc_string.h                         [devel]include
+include/pmc/pmc_stringbuilder.h                  [devel]include
+include/pmc/pmc_stringhandle.h                   [devel]include
+include/pmc/pmc_stringiterator.h                 [devel]include
+include/pmc/pmc_sub.h                            [devel]include
+include/pmc/pmc_task.h                           [devel]include
+include/pmc/pmc_threadinterpreter.h              [devel]include
+include/pmc/pmc_timer.h                          [devel]include
+include/pmc/pmc_undef.h                          [devel]include
+include/pmc/pmc_unmanagedstruct.h                [devel]include
+install_config.fpmc                              [main]lib
+installable_parrot                               [main]bin
+installable_parrot-nqp                           [main]bin
+installable_parrot-nqp.exe                       [main]bin
+installable_parrot.exe                           [main]bin
+installable_parrot_config                        [main]bin
+installable_parrot_config.exe                    [main]bin
+installable_parrot_debugger                      [main]bin
+installable_parrot_debugger.exe                  [main]bin
+installable_parrot_nci_thunk_gen                 [main]bin
+installable_pbc_disassemble                      [main]bin
+installable_pbc_disassemble.exe                  [main]bin
+installable_pbc_dump                             [main]bin
+installable_pbc_dump.exe                         [main]bin
+installable_pbc_merge                            [main]bin
+installable_pbc_merge.exe                        [main]bin
+installable_pbc_to_exe                           [main]bin
+installable_pbc_to_exe.exe                       [main]bin
+installable_tapir                                [main]bin
+installable_tapir.exe                            [main]bin
+lib/Parrot/Config/Generated.pm                   [devel]lib
+lib/Parrot/OpLib/core.pm                         [devel]lib
+lib/Parrot/PMC.pm                                [devel]lib
+lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm               [devel]lib
+libparrot.dll                                    [main]bin
+libparrot.lib                                    [main]bin
+parrot.pc                                        [main]pkgconfig
+runtime/parrot/dynext/dynlexpad.bundle           [library]
+runtime/parrot/dynext/dynlexpad.dll              [library]
+runtime/parrot/dynext/dynlexpad.dylib            [library]
+runtime/parrot/dynext/dynlexpad.so               [library]
+runtime/parrot/dynext/file.bundle                [library]
+runtime/parrot/dynext/file.dll                   [library]
+runtime/parrot/dynext/file.dylib                 [library]
+runtime/parrot/dynext/file.so                    [library]
+runtime/parrot/dynext/gziphandle.bundle          [library]
+runtime/parrot/dynext/gziphandle.dll             [library]
+runtime/parrot/dynext/gziphandle.dylib           [library]
+runtime/parrot/dynext/gziphandle.so              [library]
+runtime/parrot/dynext/libglutcb.bundle           [library]
+runtime/parrot/dynext/libglutcb.dll              [library]
+runtime/parrot/dynext/libglutcb.dylib            [library]
+runtime/parrot/dynext/libglutcb.so               [library]
+runtime/parrot/dynext/math_ops.bundle            [library]
+runtime/parrot/dynext/math_ops.dll               [library]
+runtime/parrot/dynext/math_ops.dylib             [library]
+runtime/parrot/dynext/math_ops.so                [library]
+runtime/parrot/dynext/obscure_ops.bundle         [library]
+runtime/parrot/dynext/obscure_ops.dll            [library]
+runtime/parrot/dynext/obscure_ops.dylib          [library]
+runtime/parrot/dynext/obscure_ops.so             [library]
+runtime/parrot/dynext/os.bundle                  [library]
+runtime/parrot/dynext/os.dll                     [library]
+runtime/parrot/dynext/os.dylib                   [library]
+runtime/parrot/dynext/os.so                      [library]
+runtime/parrot/dynext/rational.bundle            [library]
+runtime/parrot/dynext/rational.dll               [library]
+runtime/parrot/dynext/rational.dylib             [library]
+runtime/parrot/dynext/rational.so                [library]
+runtime/parrot/include/call_bits.pasm            [main]
+runtime/parrot/include/cclass.pasm               [main]
+runtime/parrot/include/config.fpmc               []
+runtime/parrot/include/datatypes.pasm            [main]
+runtime/parrot/include/dlopenflags.pasm          [main]
+runtime/parrot/include/errors.pasm               [main]
+runtime/parrot/include/except_severity.pasm      [main]
+runtime/parrot/include/except_types.pasm         [main]
+runtime/parrot/include/hash_key_type.pasm        [main]
+runtime/parrot/include/iglobals.pasm             [main]
+runtime/parrot/include/interpcores.pasm          [main]
+runtime/parrot/include/interpdebug.pasm          [main]
+runtime/parrot/include/interpflags.pasm          [main]
+runtime/parrot/include/interpinfo.pasm           [main]
+runtime/parrot/include/interptrace.pasm          [main]
+runtime/parrot/include/iotypes.pasm              [main]
+runtime/parrot/include/iterator.pasm             [main]
+runtime/parrot/include/libpaths.pasm             [main]
+runtime/parrot/include/longopt.pasm              [main]
+runtime/parrot/include/opengl_defines.pasm       [main]
+runtime/parrot/include/parrotlib.pbc             [main]
+runtime/parrot/include/pmctypes.pasm             [main]
+runtime/parrot/include/signal.pasm               [main]
+runtime/parrot/include/socket.pasm               [main]
+runtime/parrot/include/stat.pasm                 [main]
+runtime/parrot/include/stdio.pasm                [main]
+runtime/parrot/include/stringinfo.pasm           [main]
+runtime/parrot/include/sysinfo.pasm              [main]
+runtime/parrot/include/timer.pasm                [main]
+runtime/parrot/include/tm.pasm                   [main]
+runtime/parrot/include/vtable_methods.pasm       [main]
+runtime/parrot/include/warnings.pasm             [main]
+runtime/parrot/library/Archive/Tar.pbc           [main]
+runtime/parrot/library/Archive/Zip.pbc           [main]
+runtime/parrot/library/CGI/QueryHash.pbc         [main]
+runtime/parrot/library/Config/JSON.pbc           [main]
+runtime/parrot/library/Configure/genfile.pbc     [main]
+runtime/parrot/library/Crow.pbc                  [main]
+runtime/parrot/library/Data/Dumper.pbc           [main]
+runtime/parrot/library/Data/Dumper/Base.pbc      [main]
+runtime/parrot/library/Data/Dumper/Default.pbc   [main]
+runtime/parrot/library/Data/Replace.pbc          [main]
+runtime/parrot/library/Digest/MD5.pbc            [main]
+runtime/parrot/library/Getopt/Obj.pbc            [main]
+runtime/parrot/library/HLL.pbc                   [main]
+runtime/parrot/library/HTTP/Daemon.pbc           [main]
+runtime/parrot/library/Iter.pbc                  [main]
+runtime/parrot/library/JSON.pbc                  [main]
+runtime/parrot/library/MIME/Base64.pbc           [main]
+runtime/parrot/library/Math/Rand.pbc             [main]
+runtime/parrot/library/NCI/call_toolkit_init.pbc [main]
+runtime/parrot/library/OpenGL.pbc                [main]
+runtime/parrot/library/OpenGL_funcs.pbc          [main]
+runtime/parrot/library/OpenGL_funcs.pir          [main]
+runtime/parrot/library/P6Regex.pbc               [main]
+runtime/parrot/library/P6object.pbc              [main]
+runtime/parrot/library/PCT.pbc                   [main]
+runtime/parrot/library/PCT/Grammar.pbc           [main]
+runtime/parrot/library/PCT/HLLCompiler.pbc       [main]
+runtime/parrot/library/PCT/PAST.pbc              [main]
+runtime/parrot/library/PGE.pbc                   [main]
+runtime/parrot/library/PGE/Dumper.pbc            [main]
+runtime/parrot/library/PGE/Glob.pbc              [main]
+runtime/parrot/library/PGE/Hs.pbc                [main]
+runtime/parrot/library/PGE/Perl6Grammar.pbc      [main]
+runtime/parrot/library/PGE/Text.pbc              [main]
+runtime/parrot/library/PGE/Util.pbc              [main]
+runtime/parrot/library/Parrot/Capture_PIR.pbc    [main]
+runtime/parrot/library/Parrot/Coroutine.pbc      [main]
+runtime/parrot/library/Parrot/Exception.pbc      [main]
+runtime/parrot/library/Parrot/HLLCompiler.pbc    [main]
+runtime/parrot/library/Protoobject.pbc           [main]
+runtime/parrot/library/Range.pbc                 [main]
+runtime/parrot/library/Regex.pbc                 [main]
+runtime/parrot/library/Stream/Base.pbc           [main]
+runtime/parrot/library/Stream/Combiner.pbc       [main]
+runtime/parrot/library/Stream/Coroutine.pbc      [main]
+runtime/parrot/library/Stream/Filter.pbc         [main]
+runtime/parrot/library/Stream/Lines.pbc          [main]
+runtime/parrot/library/Stream/ParrotIO.pbc       [main]
+runtime/parrot/library/Stream/Replay.pbc         [main]
+runtime/parrot/library/Stream/Sub.pbc            [main]
+runtime/parrot/library/Stream/Writer.pbc         [main]
+runtime/parrot/library/TAP/Formatter.pbc         [main]
+runtime/parrot/library/TAP/Harness.pbc           [main]
+runtime/parrot/library/TAP/Parser.pbc            [main]
+runtime/parrot/library/TGE.pbc                   [tge]
+runtime/parrot/library/Tcl/Glob.pbc              [main]
+runtime/parrot/library/TclLibrary.pbc            [main]
+runtime/parrot/library/Test/Builder.pbc          [main]
+runtime/parrot/library/Test/Builder/Output.pbc   [main]
+runtime/parrot/library/Test/Builder/Test.pbc     [main]
+runtime/parrot/library/Test/Builder/TestPlan.pbc [main]
+runtime/parrot/library/Test/Builder/Tester.pbc   [main]
+runtime/parrot/library/Test/Class.pbc            [main]
+runtime/parrot/library/Test/More.pbc             [main]
+runtime/parrot/library/YAML/Dumper.pbc           [main]
+runtime/parrot/library/YAML/Dumper/Base.pmc      [main]
+runtime/parrot/library/YAML/Dumper/Default.pmc   [main]
+runtime/parrot/library/config.pbc                [main]
+runtime/parrot/library/config.pir                [main]
+runtime/parrot/library/distutils.pbc             [main]
+runtime/parrot/library/dumper.pbc                [main]
+runtime/parrot/library/libpcre.pbc               [main]
+runtime/parrot/library/ncurses.pbc               [main]
+runtime/parrot/library/nqp-rx.pbc                [nqp]
+runtime/parrot/library/osutils.pbc               [main]
+runtime/parrot/library/parrotlib.pbc             [main]
+runtime/parrot/library/pcore.pbc                 [main]
+runtime/parrot/library/pcre.pbc                  [main]
+runtime/parrot/library/uuid.pbc                  [main]
+src/call_list.txt                                [devel]src
+src/glut_callbacks.c                             []
+src/install_config.o                             [main]lib
+src/install_config.obj                           [main]lib
+src/jit_emit.h                                   []
+src/nci.c                                        []
+src/null_config.c                                []
+src/parrot_config.c                              []
+src/pmc/addrregistry.dump                        [devel]src
+src/pmc/arrayiterator.dump                       [devel]src
+src/pmc/bigint.dump                              [devel]src
+src/pmc/bignum.dump                              [devel]src
+src/pmc/boolean.dump                             [devel]src
+src/pmc/callcontext.dump                         [devel]src
+src/pmc/capture.dump                             [devel]src
+src/pmc/class.dump                               [devel]src
+src/pmc/codestring.dump                          [devel]src
+src/pmc/complex.dump                             [devel]src
+src/pmc/continuation.dump                        [devel]src
+src/pmc/coroutine.dump                           [devel]src
+src/pmc/default.dump                             [devel]src
+src/pmc/env.dump                                 [devel]src
+src/pmc/eval.dump                                [devel]src
+src/pmc/eventhandler.dump                        [devel]src
+src/pmc/exception.dump                           [devel]src
+src/pmc/exceptionhandler.dump                    [devel]src
+src/pmc/exporter.dump                            [devel]src
+src/pmc/filehandle.dump                          [devel]src
+src/pmc/fixedbooleanarray.dump                   [devel]src
+src/pmc/fixedfloatarray.dump                     [devel]src
+src/pmc/fixedintegerarray.dump                   [devel]src
+src/pmc/fixedpmcarray.dump                       [devel]src
+src/pmc/fixedstringarray.dump                    [devel]src
+src/pmc/float.dump                               [devel]src
+src/pmc/handle.dump                              [devel]src
+src/pmc/hash.dump                                [devel]src
+src/pmc/hashiterator.dump                        [devel]src
+src/pmc/hashiteratorkey.dump                     [devel]src
+src/pmc/imageio.dump                             [devel]src
+src/pmc/imageiosize.dump                         [devel]src
+src/pmc/imageiostrings.dump                      [devel]src
+src/pmc/integer.dump                             [devel]src
+src/pmc/iterator.dump                            [devel]src
+src/pmc/key.dump                                 [devel]src
+src/pmc/lexinfo.dump                             [devel]src
+src/pmc/lexpad.dump                              [devel]src
+src/pmc/managedstruct.dump                       [devel]src
+src/pmc/multisub.dump                            [devel]src
+src/pmc/namespace.dump                           [devel]src
+src/pmc/nci.dump                                 [devel]src
+src/pmc/null.dump                                [devel]src
+src/pmc/object.dump                              [devel]src
+src/pmc/opcode.dump                              [devel]src
+src/pmc/oplib.dump                               [devel]src
+src/pmc/orderedhash.dump                         [devel]src
+src/pmc/orderedhashiterator.dump                 [devel]src
+src/pmc/packfile.dump                            [devel]src
+src/pmc/packfileannotation.dump                  [devel]src
+src/pmc/packfileannotations.dump                 [devel]src
+src/pmc/packfileconstanttable.dump               [devel]src
+src/pmc/packfiledebug.dump                       [devel]src
+src/pmc/packfiledirectory.dump                   [devel]src
+src/pmc/packfilefixupentry.dump                  [devel]src
+src/pmc/packfilefixuptable.dump                  [devel]src
+src/pmc/packfilerawsegment.dump                  [devel]src
+src/pmc/packfilesegment.dump                     [devel]src
+src/pmc/parrotinterpreter.dump                   [devel]src
+src/pmc/parrotlibrary.dump                       [devel]src
+src/pmc/parrotthread.dump                        [devel]src
+src/pmc/pmcproxy.dump                            [devel]src
+src/pmc/pointer.dump                             [devel]src
+src/pmc/resizablebooleanarray.dump               [devel]src
+src/pmc/resizablefloatarray.dump                 [devel]src
+src/pmc/resizableintegerarray.dump               [devel]src
+src/pmc/resizablepmcarray.dump                   [devel]src
+src/pmc/resizablestringarray.dump                [devel]src
+src/pmc/role.dump                                [devel]src
+src/pmc/scalar.dump                              [devel]src
+src/pmc/scheduler.dump                           [devel]src
+src/pmc/schedulermessage.dump                    [devel]src
+src/pmc/sockaddr.dump                            [devel]src
+src/pmc/socket.dump                              [devel]src
+src/pmc/string.dump                              [devel]src
+src/pmc/stringbuilder.dump                       [devel]src
+src/pmc/stringhandle.dump                        [devel]src
+src/pmc/stringiterator.dump                      [devel]src
+src/pmc/sub.dump                                 [devel]src
+src/pmc/task.dump                                [devel]src
+src/pmc/threadinterpreter.dump                   [devel]src
+src/pmc/timer.dump                               [devel]src
+src/pmc/undef.dump                               [devel]src
+src/pmc/unmanagedstruct.dump                     [devel]src
+src/string_private_cstring.h                     []
+tools/build/dynpmc.pl                            []
+vtable.dump                                      [devel]src

Modified: branches/ops_pct/PBC_COMPAT
==============================================================================
--- branches/ops_pct/PBC_COMPAT	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/PBC_COMPAT	Sat May  8 02:08:40 2010	(r46399)
@@ -27,6 +27,7 @@
 
 # please insert tab separated entries at the top of the list
 
+6.15	2010.05.06	bacek	add StringBuilder PMC
 6.14	2010.05.03	coke	remove popaction, pushmark, pushaction ops.
 6.13	2010.05.03	coke	move File/OS pmcs to src/dynpmc
 6.12	2010.05.02	plobsing	store constant PMC strings as top level constant strings    

Modified: branches/ops_pct/compilers/imcc/pbc.c
==============================================================================
--- branches/ops_pct/compilers/imcc/pbc.c	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/compilers/imcc/pbc.c	Sat May  8 02:08:40 2010	(r46399)
@@ -983,23 +983,13 @@
 {
     ASSERT_ARGS(add_const_str)
 
+    PMC *s_pmc = key_new_string(interp, s);
     PackFile_ConstTable *table = interp->code->const_table;
-    int i;
+    int i = PackFile_ConstTable_rlookup(interp, table, s_pmc, PFC_STRING);
+
+    if (i >= 0)
+        return 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_str_equal(interp, s, sc)
-            &&  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))
-            {
-                return i;
-            }
-        }
-    }
 
     /* otherwise... */
     {

Modified: branches/ops_pct/config/gen/config_pm.pm
==============================================================================
--- branches/ops_pct/config/gen/config_pm.pm	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/config/gen/config_pm.pm	Sat May  8 02:08:40 2010	(r46399)
@@ -108,6 +108,7 @@
         if (/\@PCONFIG\@/) {
             for my $k ( sort { lc $a cmp lc $b || $a cmp $b } $conf->data->keys ) {
                 next if exists $p5_keys{$k};
+                next if $k =~ /_provisional$/;
 
                 my $v = $conf->data->get($k);
                 if ( defined $v ) {

Modified: branches/ops_pct/config/gen/makefiles/root.in
==============================================================================
--- branches/ops_pct/config/gen/makefiles/root.in	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/config/gen/makefiles/root.in	Sat May  8 02:08:40 2010	(r46399)
@@ -256,6 +256,7 @@
 
 GEN_LIBRARY = \
     $(LIBRARY_DIR)/Archive/Tar.pbc \
+    $(LIBRARY_DIR)/Archive/Zip.pbc \
     $(LIBRARY_DIR)/CGI/QueryHash.pbc \
     $(LIBRARY_DIR)/Crow.pbc \
     $(LIBRARY_DIR)/config.pbc \
@@ -663,6 +664,7 @@
     src/spf_vtable.str \
     src/string/api.str \
     src/sub.str \
+    src/embed.str \
     \
     $(CLASS_STR_FILES)
 

Modified: branches/ops_pct/examples/shootout/revcomp.pir
==============================================================================
--- branches/ops_pct/examples/shootout/revcomp.pir	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/examples/shootout/revcomp.pir	Sat May  8 02:08:40 2010	(r46399)
@@ -67,13 +67,27 @@
 .sub print_revcomp
 	.param string line
 	.local int i, linelen, ch
+	.local string revline
 	linelen = length line
 
         $P0 = new 'String'
-        $P0.'reverse'(line)
-
+#       $P0.'reverse'(line)
+#         reverse is no longer available so
+        i = linelen
+        revline = ''
+rev_loop:
+        i -= 1
+        $S0 = substr line, i, 1
+        revline .= $S0
+        if i > 0 goto rev_loop
+#
+        $P0 = revline
+#
+        # line was reversed in-place so we need
+        line = revline
+#
 	.const 'Sub' tr_00 = 'tr_00_init'
-	$P0.'trans'(line, tr_00)
+	line = $P0.'trans'(line, tr_00)
 
 	i = 0
 	$S0 = 'x'

Modified: branches/ops_pct/examples/tools/pbc_checker.cpp
==============================================================================
--- branches/ops_pct/examples/tools/pbc_checker.cpp	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/examples/tools/pbc_checker.cpp	Sat May  8 02:08:40 2010	(r46399)
@@ -320,7 +320,8 @@
     opcode read_opcode(ifstream &pbcfile);
 private:
     unsigned int opcode_size;
-    unsigned int pbc_version;
+    unsigned int pbc_major;
+    unsigned int pbc_minor;
 
     unsigned char byte_order;
     unsigned char fp_encoding;
@@ -387,7 +388,8 @@
         cerr << "*** Warning: opcode size too big for this program ***\n";
 
     this->opcode_size = opcode_size;
-    this->pbc_version = ((unsigned int) pbc_major) * 8 + pbc_minor;
+    this->pbc_major = pbc_major;
+    this->pbc_minor = pbc_minor;
     this->byte_order = byte_order;
     this->fp_encoding = fp_encoding;
     if (byte_order != ByteOrderLE && byte_order != ByteOrderBE)
@@ -431,9 +433,13 @@
     opcode size = read_opcode(pbcfile);
     cout << "Directory segment size: " << size << '\n';
 
-    pbcfile.ignore(16 - opcode_size);
-    if (pbc_version <= 0x0325 && opcode_size == 8)
-        pbcfile.ignore(16);
+    // Must be zero:
+    opcode in_type = read_opcode(pbcfile);
+    opcode in_id   = read_opcode(pbcfile);
+    opcode op_size = read_opcode(pbcfile);
+    cout << "Internal type: " << in_type << '\n';
+    cout << "Internal id:   " << in_id   << '\n';
+    cout << "Op table size: " << op_size << '\n';
 
     opcode entries = read_opcode(pbcfile);
     cout << "Directory entries: " << entries << '\n';
@@ -464,7 +470,9 @@
         " (0x" << hex << type << dec << ")\n";
 
     // Set file read position to segment's start
-    pbcfile.seekg(entry.getOffset() * opcode_size);
+    size_t start = entry.getOffset() * opcode_size;
+    cout << "Start: 0x" << hex << setw(6) << start << dec << '\n';
+    pbcfile.seekg(start);
 
     switch(type)
     {
@@ -715,26 +723,50 @@
 
 void PbcFile::dump_constant_string(ifstream &pbcfile)
 {
-    opcode flags = read_opcode(pbcfile);
-    cout << "Flags: 0x" << hex << flags << dec;
-    opcode charset = read_opcode(pbcfile);
+    opcode flags;
+    opcode charset;
+    if (pbc_major > 5 && pbc_minor > 11) {
+        opcode flags_charset = read_opcode(pbcfile);
+        flags = flags_charset & 0xFF;
+        charset = flags_charset >> 8;
+    }
+    else {
+        flags = read_opcode(pbcfile);
+	charset = read_opcode(pbcfile);
+    }
+
+    cout << "Flags: 0x" << hex << setw(6) << flags << dec;
     cout << " Charset: " << charset;
 
+    // Encoding not saved, see TT #468
     //opcode encoding = read_opcode(pbcfile);
     //cout << " Encoding: "<< encoding;
 
     opcode length = read_opcode(pbcfile);
     cout << " Length: "<< length;
+
+    // Don't dump very long strings at full length.
+    opcode full = length;
+    length = std::min(length, (opcode)512);
+
     cout << " \'";
     for (opcode i= 0; i < length; ++i) {
         unsigned char c = pbcfile.get();
+        if (! pbcfile)
+            throw ReadError("string constant");
         if (c >= 32 && c < 128)
             cout << c;
         else
             cout << "\\x" << hex << setw(2) << setfill('0') <<
                 (unsigned int) c << dec;
     }
-    cout << "'\n";
+    cout << '\'';
+    if (full > length) {
+        cout << "(...)";
+        pbcfile.ignore(full - length);
+    }
+    cout << '\n';
+
     for (unsigned int i= length; i % opcode_size; ++i) {
         pbcfile.ignore(1);
     }

Modified: branches/ops_pct/include/parrot/embed.h
==============================================================================
--- branches/ops_pct/include/parrot/embed.h	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/include/parrot/embed.h	Sat May  8 02:08:40 2010	(r46399)
@@ -5,9 +5,6 @@
  *  Overview:
  *     This is the Parrot embedding system--the only part of Parrot that
  *     the outside world should see.
- *  Data Structure and Algorithms:
- *  History:
- *  Notes:
  *  References:
  *      embed.c, docs/embed.pod.
  */
@@ -28,48 +25,52 @@
     enum_DIS_HEADER    = 2
 } Parrot_disassemble_options;
 
-PARROT_EXPORT Parrot_Interp Parrot_new(Parrot_Interp parent);
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PARROT_MALLOC
+Parrot_Interp Parrot_new(ARGIN_NULLOK(Parrot_Interp parent));
 
-PARROT_EXPORT void Parrot_init_stacktop(Parrot_Interp, void *);
+PARROT_EXPORT void Parrot_init_stacktop(PARROT_INTERP, void *);
 
-PARROT_EXPORT void Parrot_set_flag(Parrot_Interp, Parrot_Int);
-PARROT_EXPORT void Parrot_clear_flag(Parrot_Interp, Parrot_Int);
-PARROT_EXPORT Parrot_Int Parrot_test_flag(Parrot_Interp, Parrot_Int);
+PARROT_EXPORT void Parrot_set_flag(PARROT_INTERP, Parrot_Int);
+PARROT_EXPORT void Parrot_clear_flag(PARROT_INTERP, Parrot_Int);
+PARROT_EXPORT Parrot_Int Parrot_test_flag(PARROT_INTERP, Parrot_Int);
 
-PARROT_EXPORT void Parrot_set_trace(Parrot_Interp, Parrot_UInt);
-PARROT_EXPORT void Parrot_clear_trace(Parrot_Interp, Parrot_UInt);
-PARROT_EXPORT Parrot_UInt Parrot_test_trace(Parrot_Interp, Parrot_UInt);
+PARROT_EXPORT void Parrot_set_trace(PARROT_INTERP, Parrot_UInt);
+PARROT_EXPORT void Parrot_clear_trace(PARROT_INTERP, Parrot_UInt);
+PARROT_EXPORT Parrot_UInt Parrot_test_trace(PARROT_INTERP, Parrot_UInt);
 
-PARROT_EXPORT void Parrot_set_debug(Parrot_Interp, Parrot_UInt);
-PARROT_EXPORT void Parrot_clear_debug(Parrot_Interp, Parrot_UInt);
-PARROT_EXPORT Parrot_UInt Parrot_test_debug(Parrot_Interp, Parrot_UInt);
+PARROT_EXPORT void Parrot_set_debug(PARROT_INTERP, Parrot_UInt);
+PARROT_EXPORT void Parrot_clear_debug(PARROT_INTERP, Parrot_UInt);
+PARROT_EXPORT Parrot_UInt Parrot_test_debug(PARROT_INTERP, Parrot_UInt);
 
-PARROT_EXPORT void Parrot_set_executable_name(Parrot_Interp, Parrot_String);
+PARROT_EXPORT void Parrot_set_executable_name(PARROT_INTERP, Parrot_String);
 
-PARROT_EXPORT void Parrot_set_run_core(Parrot_Interp, Parrot_Run_core_t core);
+PARROT_EXPORT void Parrot_set_run_core(PARROT_INTERP, Parrot_Run_core_t core);
 
-PARROT_EXPORT void Parrot_setwarnings(Parrot_Interp, Parrot_warnclass);
+PARROT_EXPORT void Parrot_setwarnings(PARROT_INTERP, Parrot_warnclass);
 
-PARROT_EXPORT Parrot_PackFile Parrot_pbc_read(Parrot_Interp, const char *, const int);
+PARROT_EXPORT Parrot_PackFile Parrot_pbc_read(PARROT_INTERP, ARGIN_NULLOK(const char *), int);
 
-PARROT_EXPORT void Parrot_pbc_load(Parrot_Interp, Parrot_PackFile);
+PARROT_EXPORT void Parrot_pbc_load(PARROT_INTERP, Parrot_PackFile);
 
-PARROT_EXPORT void Parrot_pbc_fixup_loaded(Parrot_Interp);
+PARROT_EXPORT void Parrot_pbc_fixup_loaded(PARROT_INTERP);
 
-PARROT_EXPORT void Parrot_runcode(Parrot_Interp, int argc, const char **argv);
+PARROT_EXPORT void Parrot_runcode(PARROT_INTERP, int argc, ARGIN(const char **argv));
 
-PARROT_EXPORT Parrot_PMC Parrot_compile_string(Parrot_Interp,
-        Parrot_String type, const char *code, Parrot_String *error);
+PARROT_EXPORT Parrot_PMC Parrot_compile_string(PARROT_INTERP,
+        Parrot_String type, ARGIN(const char *code), ARGOUT(Parrot_String *error));
 
-PARROT_EXPORT void Parrot_destroy(Parrot_Interp);
+PARROT_EXPORT void Parrot_destroy(PARROT_INTERP);
 
-PARROT_EXPORT Parrot_Opcode * Parrot_debug(Parrot_Interp, Parrot_Interp, Parrot_Opcode *pc);
+PARROT_EXPORT Parrot_Opcode * Parrot_debug(PARROT_INTERP, ARGIN(Parrot_Interp debugger), ARGIN(Parrot_Opcode *pc));
 
-PARROT_EXPORT void Parrot_disassemble(Parrot_Interp, const char *outfile, Parrot_disassemble_options options);
+PARROT_EXPORT void Parrot_disassemble(PARROT_INTERP, ARGIN(const char *outfile),
+        Parrot_disassemble_options options);
 
 PARROT_EXPORT
 PARROT_DOES_NOT_RETURN
-void Parrot_exit(Parrot_Interp, int status);
+void Parrot_exit(PARROT_INTERP, int status);
 
 PARROT_EXPORT void Parrot_run_native(PARROT_INTERP, native_func_t func);
 

Modified: branches/ops_pct/include/parrot/interpreter.h
==============================================================================
--- branches/ops_pct/include/parrot/interpreter.h	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/include/parrot/interpreter.h	Sat May  8 02:08:40 2010	(r46399)
@@ -364,6 +364,7 @@
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
+PARROT_MALLOC
 Parrot_Interp allocate_interpreter(
     ARGIN_NULLOK(Interp *parent),
     INTVAL flags);
@@ -376,6 +377,7 @@
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
+PARROT_MALLOC
 Parrot_Interp make_interpreter(ARGIN_NULLOK(Interp *parent), INTVAL flags);
 
 PARROT_EXPORT

Modified: branches/ops_pct/include/parrot/packfile.h
==============================================================================
--- branches/ops_pct/include/parrot/packfile.h	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/include/parrot/packfile.h	Sat May  8 02:08:40 2010	(r46399)
@@ -251,6 +251,8 @@
     opcode_t                   const_count;
     PackFile_Constant        **constants;
     PackFile_ByteCode         *code;  /* where this segment belongs to */
+
+    PMC                       *string_hash; /* Hash for lookup strings and numbers */
 } PackFile_ConstTable;
 
 struct PackFile_ByteCode {
@@ -301,11 +303,11 @@
 typedef struct PackFile_Annotations {
     PackFile_Segment            base;
     opcode_t                    num_keys;
-    PackFile_Annotations_Key    **keys;
+    PackFile_Annotations_Key    *keys;
     opcode_t                    num_groups;
-    PackFile_Annotations_Group  **groups;
+    PackFile_Annotations_Group  *groups;
     opcode_t                    num_entries;
-    PackFile_Annotations_Entry  **entries;
+    PackFile_Annotations_Entry  *entries;
     PackFile_ByteCode           *code;
 } PackFile_Annotations;
 
@@ -388,6 +390,15 @@
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
+int PackFile_ConstTable_rlookup(PARROT_INTERP,
+    ARGIN(const PackFile_ConstTable *ct),
+    ARGIN(PMC *key),
+    int type)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_EXPORT
 int PackFile_find_in_const(PARROT_INTERP,
     ARGIN(const PackFile_ConstTable *ct),
     ARGIN(PMC *key),
@@ -424,6 +435,10 @@
 #define ASSERT_ARGS_PackFile_ConstTable_pack_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(seg))
+#define ASSERT_ARGS_PackFile_ConstTable_rlookup __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ct) \
+    , PARROT_ASSERT_ARG(key))
 #define ASSERT_ARGS_PackFile_find_in_const __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(ct) \

Modified: branches/ops_pct/include/parrot/string_funcs.h
==============================================================================
--- branches/ops_pct/include/parrot/string_funcs.h	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/include/parrot/string_funcs.h	Sat May  8 02:08:40 2010	(r46399)
@@ -102,8 +102,8 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 STRING * Parrot_str_concat(PARROT_INTERP,
-    ARGIN_NULLOK(STRING *a),
-    ARGIN_NULLOK(STRING *b))
+    ARGIN_NULLOK(const STRING *a),
+    ARGIN_NULLOK(const STRING *b))
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
@@ -236,8 +236,7 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-INTVAL Parrot_str_length(SHIM_INTERP, ARGIN(const STRING *s))
-        __attribute__nonnull__(2);
+INTVAL Parrot_str_length(SHIM_INTERP, ARGIN_NULLOK(const STRING *s));
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -322,7 +321,7 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 PMC* Parrot_str_split(PARROT_INTERP,
-    ARGIN_NULLOK(STRING *delim),
+    ARGIN_NULLOK(const STRING *delim),
     ARGIN_NULLOK(STRING *str))
         __attribute__nonnull__(1);
 
@@ -470,6 +469,19 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*tc);
 
+PARROT_INLINE
+PARROT_IGNORABLE_RESULT
+PARROT_CAN_RETURN_NULL
+const CHARSET * Parrot_str_rep_compatible(PARROT_INTERP,
+    ARGIN(const STRING *a),
+    ARGIN(const STRING *b),
+    ARGOUT(const ENCODING **e))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
+        FUNC_MODIFIES(*e);
+
 #define ASSERT_ARGS_Parrot_str_bitwise_and __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_bitwise_not __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -537,8 +549,7 @@
 #define ASSERT_ARGS_Parrot_str_join __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(ar))
-#define ASSERT_ARGS_Parrot_str_length __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(s))
+#define ASSERT_ARGS_Parrot_str_length __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_Parrot_str_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_str_new_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -614,6 +625,11 @@
 #define ASSERT_ARGS_Parrot_str_from_uint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(tc))
+#define ASSERT_ARGS_Parrot_str_rep_compatible __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(a) \
+    , PARROT_ASSERT_ARG(b) \
+    , PARROT_ASSERT_ARG(e))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: src/string/api.c */
 

Modified: branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm	Sat May  8 02:08:40 2010	(r46399)
@@ -415,7 +415,7 @@
     PMC * const _ctx         = CURRENT_CONTEXT(interp);
     PMC * const _ccont       = Parrot_pcc_get_continuation(interp, _ctx);
     PMC * const _call_object = Parrot_pcc_get_signature(interp, _ctx);
-    PMC * _ret_object        = PMCNULL;
+    PMC * _ret_object;
 
     { /* BEGIN PARMS SCOPE */
 END

Copied: branches/ops_pct/runtime/parrot/library/Archive/Zip.pir (from r46398, trunk/runtime/parrot/library/Archive/Zip.pir)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/runtime/parrot/library/Archive/Zip.pir	Sat May  8 02:08:40 2010	(r46399, copy of r46398, trunk/runtime/parrot/library/Archive/Zip.pir)
@@ -0,0 +1,844 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+Archive/Zip
+
+=head2 DESCRIPTION
+
+Partial port of Archive::Zip (version 1.30)
+
+See L<http://search.cpan.org/~adamk/Archive-Zip/>
+
+=cut
+
+.include 'stat.pasm'
+.include 'tm.pasm'
+
+=head3 Class Archive;Zip;Base
+
+=cut
+
+.namespace ['Archive';'Zip';'Base']
+
+.sub '' :init :load :anon
+    $P0 = loadlib 'gziphandle'
+    $P0 = newclass ['Archive';'Zip';'Base']
+    .globalconst int AZ_OK = 0
+    .globalconst int AZ_STREAM_END = 1
+    .globalconst int AZ_ERROR = 2
+    .globalconst int AZ_FORMAT_ERROR = 3
+    .globalconst int AZ_IO_ERROR = 4
+    .globalconst int FA_UNIX = 3
+    .globalconst int GPBF_HAS_DATA_DESCRIPTOR_MASK = 8
+    .globalconst int COMPRESSION_STORED = 0
+    .globalconst int COMPRESSION_DEFLATED = 8
+    .globalconst int SIGNATURE_LENGTH = 4
+    .globalconst int LOCAL_FILE_HEADER_LENGTH = 26
+    .globalconst int DATA_DESCRIPTOR_LENGTH = 12
+    .globalconst int CENTRAL_DIRECTORY_FILE_HEADER_LENGTH = 42
+.end
+
+.sub '_printError'
+    .param pmc args :slurpy
+    $S0 = join '', args
+    printerr $S0
+    printerr "\n"
+.end
+
+.sub '_ioError' :method
+    .param pmc args :slurpy
+    $S0 = err
+    _printError('IO error:', args :flat, ':', $S0)
+    .return (AZ_IO_ERROR)
+.end
+
+.sub '_error' :method
+    .param pmc args :slurpy
+    _printError('error:', args :flat)
+    .return (AZ_ERROR)
+.end
+
+.sub 'pack_C' :method
+    .param int val
+    $S0 = chr val
+    .return ($S0)
+.end
+
+.sub 'pack_v' :method
+    .param int val
+    $I0 = val & 0x000000ff
+    $S0 = chr $I0
+    $I0 = val >> 8
+    $I0 &= 0x000000ff
+    $S1 = chr $I0
+    $S0 .= $S1
+    .return ($S0)
+.end
+
+.sub 'pack_V' :method
+    .param int val
+    $I0 = val & 0x000000ff
+    $S0 = chr $I0
+    $I0 = val >> 8
+    $I0 &= 0x000000ff
+    $S1 = chr $I0
+    $S0 .= $S1
+    $I0 = val >> 16
+    $I0 &= 0x000000ff
+    $S2 = chr $I0
+    $S0 .= $S2
+    $I0 = val >> 24
+    $I0 &= 0x000000ff
+    $S3 = chr $I0
+    $S0 .= $S3
+    .return ($S0)
+.end
+
+=head3 Class Archive;Zip;Member
+
+=over 4
+
+=cut
+
+.namespace ['Archive';'Zip';'Member']
+
+.sub '' :init :load :anon
+    $P0 = subclass ['Archive';'Zip';'Base'], ['Archive';'Zip';'Member']
+    $P0.'add_attribute'('fileName')
+    $P0.'add_attribute'('externalFileName')
+    $P0.'add_attribute'('compressionMethod')
+    $P0.'add_attribute'('compressedSize')
+    $P0.'add_attribute'('uncompressedSize')
+    $P0.'add_attribute'('lastModFileDateTime')
+    $P0.'add_attribute'('writeCentralDirectoryOffset')
+    $P0.'add_attribute'('writeLocalHeaderRelativeOffset')
+    $P0.'add_attribute'('readDataRemaining')
+    $P0.'add_attribute'('localExtraField')
+    $P0.'add_attribute'('cdExtraField')
+    $P0.'add_attribute'('fileComment')
+    $P0.'add_attribute'('crc32')
+    $P0.'add_attribute'('fileAttributeFormat')
+    $P0.'add_attribute'('bitFlag')
+    $P0.'add_attribute'('internalFileAttributes')
+    $P0.'add_attribute'('externalFileAttributes')
+.end
+
+.sub 'init' :vtable :method
+    $P0 = box FA_UNIX
+    setattribute self, 'fileAttributeFormat', $P0
+    $P0 = box 0
+    setattribute self, 'bitFlag', $P0
+    $P0 = box 0
+    setattribute self, 'crc32', $P0
+    $P0 = box 0
+    setattribute self, 'internalFileAttributes', $P0
+    $P0 = box 0
+    setattribute self, 'externalFileAttributes', $P0
+    $P0 = box ''
+    setattribute self, 'cdExtraField', $P0
+    $P0 = box ''
+    setattribute self, 'localExtraField', $P0
+    $P0 = box ''
+    setattribute self, 'fileComment', $P0
+.end
+
+=item newFromFile
+
+=cut
+
+.sub 'newFromFile'
+    .param string fileName
+    .param string zipName       :optional
+    $P0 = get_hll_global ['Archive';'Zip';'NewFileMember'], '_newFromFileNamed'
+    .tailcall $P0(fileName, zipName)
+.end
+
+
+.sub 'setLastModFileDateTimeFromUnix' :method
+    .param int time_t
+    $I0 = self.'_unixToDosTime'(time_t)
+    $P0 = box $I0
+    setattribute self, 'lastModFileDateTime', $P0
+.end
+
+.sub '_unixToDosTime' :method
+    .param int time_t
+    .const int safe_epoch = 315576060
+    unless time_t < safe_epoch goto L1
+    self.'_ioError'("Unsupported date before 1980 encountered, moving to 1980")
+    time_t = safe_epoch
+  L1:
+    $P0 = decodelocaltime time_t
+    .local int dt
+    dt = 0
+    $I0 = $P0[.TM_SEC]
+    $I0 >>= 1
+    dt += $I0
+    $I0 = $P0[.TM_MIN]
+    $I0 <<= 5
+    dt += $I0
+    $I0 = $P0[.TM_HOUR]
+    $I0 <<= 11
+    dt += $I0
+    $I0 = $P0[.TM_MDAY]
+    $I0 <<= 16
+    dt += $I0
+    $I0 = $P0[.TM_MON]
+    $I0 <<= 21
+    dt += $I0
+    $I0 = $P0[.TM_YEAR]
+    $I0 -= 1980
+    $I0 <<= 25
+    dt += $I0
+    .return (dt)
+.end
+
+.sub '_mapPermissionsFromUnix' :method
+    .param int dummy
+    .return (0)
+.end
+
+.sub 'unixFileAttributes' :method
+    .param int perms
+    $I0 = self.'_mapPermissionsFromUnix'(perms)
+    $P0 = box $I0
+    setattribute self, 'externalFileAttributes', $P0
+.end
+
+.sub '_writeOffset' :method
+    $P0 = getattribute self, 'compressedSize'
+    .return ($P0)
+.end
+
+.sub '_localHeaderSize' :method
+    # Return the total size of my local header
+    $I0 = SIGNATURE_LENGTH + LOCAL_FILE_HEADER_LENGTH
+    $P0 = getattribute self, 'fileName'
+    $S0 = $P0
+    $I1 = length $S0
+    $I0 += $I1
+    $P0 = getattribute self, 'localExtraField'
+    $S0 = $P0
+    $I1 = length $S0
+    $I0 += $I1
+    .return ($I0)
+.end
+
+.sub '_centralDirectoryHeaderSize' :method
+    # Return the total size of my CD header
+    $I0 = SIGNATURE_LENGTH + CENTRAL_DIRECTORY_FILE_HEADER_LENGTH
+    $P0 = getattribute self, 'fileName'
+    $S0 = $P0
+    $I1 = length $S0
+    $I0 += $I1
+    $P0 = getattribute self, 'cdExtraField'
+    $S0 = $P0
+    $I1 = length $S0
+    $I0 += $I1
+    $P0 = getattribute self, 'fileComment'
+    $S0 = $P0
+    $I1 = length $S0
+    $I0 += $I1
+    .return ($I0)
+.end
+
+.sub 'hasDataDescriptor' :method
+    .return (0)
+.end
+
+.sub '_writeLocalFileHeader' :method
+    .param pmc fh
+    .const string LOCAL_FILE_HEADER_SIGNATURE = "PK\x03\x04"
+    $I0 = fh.'puts'(LOCAL_FILE_HEADER_SIGNATURE)
+    if $I0 goto L1
+    .tailcall self.'_ioError'('writing local header signature')
+  L1:
+    .local string header, fileName, localExtraField
+    .const string VERSION = 20
+    header = self.'pack_v'(VERSION)
+    $P0 = getattribute self, 'bitFlag'
+    $S0 = self.'pack_v'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'compressionMethod'
+    $S0 = self.'pack_v'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'lastModFileDateTime'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'crc32'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'compressedSize'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'uncompressedSize'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'fileName'
+    fileName = $P0
+    $I0 = length fileName
+    $S0 = self.'pack_v'($I0)
+    header .= $S0
+    $P0 = getattribute self, 'localExtraField'
+    localExtraField = $P0
+    $I0 = length localExtraField
+    $S0 = self.'pack_v'($I0)
+    header .= $S0
+    $I0 = fh.'puts'(header)
+    if $I0 goto L2
+    .tailcall self.'_ioError'('writing local header')
+  L2:
+    if fileName == '' goto L3
+    $I0 = fh.'puts'(fileName)
+    if $I0 goto L3
+    .tailcall self.'_ioError'('writing local header filename')
+  L3:
+    if localExtraField == '' goto L4
+    $I0 = fh.'puts'(localExtraField)
+    if $I0 goto L4
+    .tailcall self.'_ioError'('writing local extra field')
+  L4:
+    .return (AZ_OK)
+.end
+
+.sub '_writeCentralDirectoryFileHeader' :method
+    .param pmc fh
+    .const string CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE = "PK\x01\x02"
+    $I0 = fh.'puts'(CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE)
+    if $I0 goto L1
+    .tailcall self.'_ioError'('writing central directory header signature')
+  L1:
+    .local string header, fileName, cdExtraField, fileComment
+    .local int fileNameLength, extraFieldLength, fileCommentLength
+    .const string VERSION = 20
+    header = self.'pack_C'(VERSION) # versionMadeBy
+    $P0 = getattribute self, 'fileAttributeFormat'
+    $S0 = self.'pack_C'($P0)
+    header .= $S0
+    $S0 = self.'pack_v'(VERSION) # versionNeededToExtract
+    header .= $S0
+    $P0 = getattribute self, 'bitFlag'
+    $S0 = self.'pack_v'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'compressionMethod'
+    $S0 = self.'pack_v'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'lastModFileDateTime'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'crc32'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'compressedSize'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'uncompressedSize'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'fileName'
+    fileName = $P0
+    fileNameLength = length fileName
+    $S0 = self.'pack_v'(fileNameLength)
+    header .= $S0
+    $P0 = getattribute self, 'cdExtraField'
+    cdExtraField = $P0
+    extraFieldLength = length cdExtraField
+    $S0 = self.'pack_v'(extraFieldLength)
+    header .= $S0
+    $P0 = getattribute self, 'fileComment'
+    fileComment = $P0
+    fileCommentLength = length fileComment
+    $S0 = self.'pack_v'(fileCommentLength)
+    header .= $S0
+    $S0 = self.'pack_v'(0)
+    header .= $S0
+    $P0 = getattribute self, 'internalFileAttributes'
+    $S0 = self.'pack_v'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'externalFileAttributes'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'writeLocalHeaderRelativeOffset'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $I0 = fh.'puts'(header)
+    if $I0 goto L2
+    .tailcall self.'_ioError'('writing central directory header')
+  L2:
+    unless fileNameLength goto L3
+    $I0 = fh.'puts'(fileName)
+    if $I0 goto L3
+    .tailcall self.'_ioError'('writing central directory filename')
+  L3:
+    unless extraFieldLength goto L4
+    $I0 = fh.'puts'(cdExtraField)
+    if $I0 goto L4
+    .tailcall self.'_ioError'('writing central directory extra field')
+  L4:
+    unless fileCommentLength goto L5
+    $I0 = fh.'puts'(fileComment)
+    if $I0 goto L5
+    .tailcall self.'_ioError'('writing central directory file comment')
+  L5:
+    .return (AZ_OK)
+.end
+
+.sub '_refreshLocalFileHeader' :method
+    .param pmc fh
+    .local int here
+    here = tell fh
+    $P0 = getattribute self, 'writeLocalHeaderRelativeOffset'
+    $I0 = $P0
+    $I0 += SIGNATURE_LENGTH
+    seek fh, $I0, 0
+    .local string header, fileName, localExtraField
+    .const string VERSION = 20
+    header = self.'pack_v'(VERSION)
+    $P0 = getattribute self, 'bitFlag'
+    $S0 = self.'pack_v'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'compressionMethod'
+    $S0 = self.'pack_v'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'lastModFileDateTime'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'crc32'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'compressedSize'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'uncompressedSize'
+    $S0 = self.'pack_V'($P0)
+    header .= $S0
+    $P0 = getattribute self, 'fileName'
+    fileName = $P0
+    $I0 = length fileName
+    $S0 = self.'pack_v'($I0)
+    header .= $S0
+    $P0 = getattribute self, 'localExtraField'
+    localExtraField = $P0
+    $I0 = length localExtraField
+    $S0 = self.'pack_v'($I0)
+    header .= $S0
+    $I0 = fh.'puts'(header)
+    if $I0 goto L2
+    .tailcall self.'_ioError'('re-writing local header')
+  L2:
+    seek fh, here, 0
+    .return (AZ_OK)
+.end
+
+.sub 'readChunk' :method
+    .param int chunkSize        :optional
+    .param int has_chunkSize    :opt_flag
+    if has_chunkSize goto L1
+    chunkSize = 32768
+  L1:
+    $I0 = self.'readIsDone'()
+    unless $I0 goto L2
+    self.'endRead'()
+    .return ('', AZ_STREAM_END)
+  L2:
+    ($S0, $I0) = self.'_readRawChunk'(chunkSize)
+    if $I0 == AZ_OK goto L3
+    .return ('', $I0)
+  L3:
+    $P0 = getattribute self, 'readDataRemaining'
+    $I0 = length $S0
+    $P0 -= $I0
+    $P0 = new 'GzipHandle'
+    $P1 = getattribute self, 'crc32'
+    $I1 = $P1
+    $I1 = $P0.'crc32'($I1, $S0)
+    set $P1, $I1
+    $S1 = $P0.'compress'($S0)
+    .return ($S1, AZ_OK)
+.end
+
+.sub 'rewindData' :method :nsentry
+    $P0 = getattribute self, 'uncompressedSize'
+    $P0 = clone $P0
+    setattribute self, 'readDataRemaining', $P0
+    .return (AZ_OK)
+.end
+
+.sub 'endRead' :method :nsentry
+    $P0 = box 0
+    setattribute self, 'readDataRemaining', $P0
+    .return (AZ_OK)
+.end
+
+.sub 'readIsDone' :method
+    $P0 = getattribute self, 'readDataRemaining'
+    $I0 = $P0
+    $I0 = not $I0
+    .return ($I0)
+.end
+
+.sub '_writeToFileHandle' :method
+    .param pmc fh
+    .param int fhIsSeekable
+    .param int offset
+    $P0 = getattribute self, 'fileName'
+    if null $P0 goto L1
+    $S0 = $P0
+    unless $S0 == '' goto L2
+  L1:
+    self.'_error'("no member name given")
+  L2:
+    $P0 = box offset
+    setattribute self, 'writeLocalHeaderRelativeOffset', $P0
+    $I0 = self.'rewindData'()
+    unless $I0 == AZ_OK goto L3
+    $I0 = self.'_writeLocalFileHeader'(fh)
+    unless $I0 == AZ_OK goto L3
+    $I0 = self.'_writeData'(fh)
+    unless $I0 == AZ_OK goto L3
+    $I0 = self.'_refreshLocalFileHeader'(fh)
+  L3:
+    .return ($I0)
+.end
+
+.sub '_writeData' :method
+    .param pmc writeFh
+    $P0 = getattribute self, 'uncompressedSize'
+    $I0 = $P0
+    if $I0 goto L1
+    $P0 = box 0
+    setattribute self, 'compressedSize', $P0
+    .return (AZ_OK)
+  L1:
+    .local int compressedSize
+    compressedSize = 0
+  L2:
+    ($S0, $I0) = self.'readChunk'()
+    if $I0 == AZ_STREAM_END goto L3
+    if $I0 == AZ_OK goto L4
+    .return ($I0)
+  L4:
+    writeFh.'puts'($S0)
+    $I0 = length $S0
+    compressedSize += $I0
+    goto L2
+  L3:
+    $P0 = box compressedSize
+    setattribute self, 'compressedSize', $P0
+    .return (AZ_OK)
+.end
+
+.sub '_usesFileNamed' :method
+    .param string fileName
+    .return (0)
+.end
+
+=back
+
+=head3 Class Archive;Zip;FileMember
+
+=cut
+
+.namespace ['Archive';'Zip';'FileMember']
+
+.sub '' :init :load :anon
+    $P0 = subclass ['Archive';'Zip';'Member'], ['Archive';'Zip';'FileMember']
+    $P0.'add_attribute'('fh')
+.end
+
+.sub '_usesFileNamed' :method
+    .param string fileName
+    $P0 = getattribute self, 'externalFileName'
+    unless null $P0 goto L1
+    .return (0)
+  L1:
+    $S0 = $P0
+    $I0 = $S0 == fileName
+    .return ($I0)
+.end
+
+.sub 'fh' :method
+    $P0 = getattribute self, 'fh'
+    if null $P0 goto L1
+    $I0 = $P0.'is_closed'()
+    unless $I0 goto L2
+  L1:
+    $P0 = getattribute self, 'externalFileName'
+    $S0 = $P0
+    $P0 = new 'FileHandle'
+    $P0.'open'($S0, 'rb')
+    setattribute self, 'fh', $P0
+  L2:
+    .return ($P0)
+.end
+
+.sub 'endRead' :method
+    $P0 = getattribute self, 'fh'
+    $P0.'close'()
+    $P0 = get_hll_global ['Archive';'Zip';'Member'], 'endRead'
+    $P0(self)
+.end
+
+=head3 Class Archive;Zip;NewFileMember
+
+=cut
+
+.namespace ['Archive';'Zip';'NewFileMember']
+
+.sub '' :init :load :anon
+    $P0 = subclass ['Archive';'Zip';'FileMember'], ['Archive';'Zip';'NewFileMember']
+.end
+
+.sub '_readRawChunk' :method
+    .param int chunkSize
+    if chunkSize goto L1
+    .return ('', AZ_OK)
+  L1:
+    $P0 = self.'fh'()
+    $S0 = read $P0, chunkSize
+    unless $S0 == '' goto L2
+    $I0 = self.'_ioError'("reading data")
+    .return ($S0, $I0)
+  L2:
+    .return ($S0, AZ_OK)
+.end
+
+.sub '_newFromFileNamed'
+    .param string fileName
+    .param string newName       :optional
+    .param int has_newName      :opt_flag
+    if has_newName goto L1
+    newName = fileName
+  L1:
+    $I0 = stat fileName, .STAT_EXISTS
+    unless $I0 goto L2
+    $I0 = stat fileName, .STAT_ISREG
+    if $I0 goto L3
+  L2:
+    null $P0
+    .return ($P0)
+  L3:
+    $P0 = new ['Archive';'Zip';'NewFileMember']
+    $P1 = box newName
+    setattribute $P0, 'fileName', $P1
+    $P1 = box fileName
+    setattribute $P0, 'externalFileName', $P1
+    $I0 = stat fileName, .STAT_FILESIZE
+    $P1 = box $I0
+    setattribute $P0, 'uncompressedSize', $P1
+    $I1 = COMPRESSION_STORED
+    if $I0 == 0 goto L4
+    $I1 = COMPRESSION_DEFLATED
+  L4:
+    $P1 = box $I1
+    setattribute $P0, 'compressionMethod', $P1
+    $P0.'unixFileAttributes'(0o666)
+    $I0 = stat fileName, .STAT_MODIFYTIME
+    $P0.'setLastModFileDateTimeFromUnix'($I0)
+    .return ($P0)
+.end
+
+.sub 'rewindData' :method
+    $P0 = get_hll_global ['Archive';'Zip';'Member'], 'rewindData'
+    $I0 = $P0(self)
+    if $I0 == AZ_OK goto L1
+    .return ($I0)
+  L1:
+    $P0 = self.'fh'()
+    seek $P0, 0, 0
+    .return (AZ_OK)
+.end
+
+=head3 Class Archive;Zip
+
+=over 4
+
+=cut
+
+.namespace ['Archive';'Zip']
+
+.sub '' :init :load :anon
+    $P0 = subclass ['Archive';'Zip';'Base'], ['Archive';'Zip']
+    $P0.'add_attribute'('members')
+    $P0.'add_attribute'('zipfileComment')
+.end
+
+.sub 'init' :vtable :method
+    $P0 = new 'ResizablePMCArray'
+    setattribute self, 'members', $P0
+    $P0 = box ''
+    setattribute self, 'zipfileComment', $P0
+.end
+
+=item addMember
+
+=cut
+
+.sub 'addMember' :method
+    .param pmc member
+    $P0 = getattribute self, 'members'
+    push $P0, member
+.end
+
+=item addFile
+
+=cut
+
+.sub 'addFile' :method
+    .param string fileName
+    .param string newName       :optional
+    $P0 = get_hll_global ['Archive';'Zip';'Member'], 'newFromFile'
+    $P1 = $P0(fileName, newName)
+    self.'addMember'($P1)
+    .return ($P1)
+.end
+
+=item writeToFileNamed
+
+=cut
+
+.sub 'writeToFileNamed' :method
+    .param string fileName
+    $P0 = getattribute self, 'members'
+    $P1 = iter $P0
+  L1:
+    unless $P1 goto L2
+    .local pmc member
+    member = shift $P1
+    $I0 = member.'_usesFileNamed'(fileName)
+    unless $I0 goto L1
+    $S0 = member.'fileName'()
+    .tailcall self.'_error'("$fileName is needed by member ", $S0, "; consider using overwrite() or overwriteAs() instead.")
+  L2:
+    $P0 = new 'FileHandle'
+    push_eh _handler
+    $P0.'open'(fileName, 'wb')
+    pop_eh
+    $I0 = self.'writeToFileHandle'($P0, 1)
+    $P0.'close'()
+    .return ($I0)
+  _handler:
+    .tailcall self.'_ioError'("Can't open ", fileName, " for write")
+.end
+
+=item writeToFileHandle
+
+=cut
+
+.sub 'writeToFileHandle' :method
+    .param pmc fh
+    .param int fhIsSeekable
+    unless null fh goto L1
+    $I0 = isa fh, 'FileHandle'
+    if $I0 goto L1
+    .tailcall self.'_error'('No filehandle given')
+  L1:
+    $I0 = fh.'is_closed'()
+    unless $I0 goto L2
+    .tailcall self.'_ioError'('filehandle not open')
+  L2:
+    .local int offset
+    offset = 0
+    $P0 = getattribute self, 'members'
+    $P1 = iter $P0
+  L3:
+    unless $P1 goto L4
+    .local pmc member
+    member = shift $P1
+    $I0 = member.'_writeToFileHandle'(fh, fhIsSeekable, offset)
+    member.'endRead'()
+    if $I0 == AZ_OK goto L5
+    .return ($I0)
+  L5:
+    $I0 = member.'_localHeaderSize'()
+    offset += $I0
+    $I0 = member.'_writeOffset'()
+    offset += $I0
+    $I0 = member.'hasDataDescriptor'()
+    unless $I0 goto L3
+    offset += DATA_DESCRIPTOR_LENGTH
+    offset += SIGNATURE_LENGTH
+    goto L3
+  L4:
+    .tailcall self.'writeCentralDirectory'(fh, offset)
+.end
+
+.sub writeCentralDirectory :method
+    .param pmc fh
+    .param int CDoffset
+    .local int offset
+    offset = CDoffset
+    $P0 = getattribute self, 'members'
+    $P1 = iter $P0
+  L1:
+    unless $P1 goto L2
+    .local pmc member
+    member = shift $P1
+    $I0 = member.'_writeCentralDirectoryFileHeader'(fh)
+    if $I0 == AZ_OK goto L3
+    .return ($I0)
+  L3:
+    $I0 = member.'_centralDirectoryHeaderSize'()
+    offset += $I0
+    goto L1
+  L2:
+    .tailcall self.'_writeEndOfCentralDirectory'(fh, CDoffset, offset)
+.end
+
+.sub '_writeEndOfCentralDirectory' :method
+    .param pmc fh
+    .param int CDoffset
+    .param int EOCDoffset
+    .const string END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING = "PK\x05\x06"
+    $I0 = fh.'puts'(END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING)
+    if $I0 goto L1
+    .tailcall self.'_ioError'('writing EOCD Signature')
+  L1:
+    .local string zipfileComment
+    $P0 = getattribute self, 'zipfileComment'
+    zipfileComment = $P0
+    .local int zipfileCommentLength
+    zipfileCommentLength = length zipfileComment
+    .local int numberOfMembers
+    $P0 = getattribute self, 'members'
+    numberOfMembers = elements $P0
+    .local string header
+    $S0 = self.'pack_v'(0)
+    header = repeat $S0, 2
+    $S0 = self.'pack_v'(numberOfMembers)
+    header .= $S0
+    header .= $S0
+    $I0 = EOCDoffset - CDoffset
+    $S0 = self.'pack_V'($I0)
+    header .= $S0
+    $S0 = self.'pack_V'(CDoffset)
+    header .= $S0
+    $S0 = self.'pack_v'(zipfileCommentLength)
+    header .= $S0
+    $I0 = fh.'puts'(header)
+    if $I0 goto L2
+    .tailcall self.'_ioError'('writing EOCD header')
+  L2:
+    unless zipfileCommentLength goto L3
+    $I0 = fh.'puts'(zipfileComment)
+    if $I0 goto L3
+    .tailcall self.'_ioError'('writing zipfile comment')
+  L3:
+    .return (AZ_OK)
+.end
+
+=back
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/ops_pct/runtime/parrot/library/Getopt/Obj.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Getopt/Obj.pir	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/runtime/parrot/library/Getopt/Obj.pir	Sat May  8 02:08:40 2010	(r46399)
@@ -413,8 +413,8 @@
     if type == 'f' goto flt
     $P0 = new 'Exception'
     $S0 = "Unknown specs option '"
-    $S0 .= type
-    $S0 .= "'"
+    $S0 = $S0 . type
+    $S0 = $S0 . "'"
     $P0 = $S0
     throw $P0
 
@@ -506,8 +506,8 @@
     if $I0 goto finish
     $P0 = new 'Exception'
     $S0 = "Option '"
-    $S0 .= key
-    $S0 .= "' not in specs"
+    $S0 = $S0 . key
+    $S0 = $S0 . "' not in specs"
     $P0 = $S0
     throw $P0
 finish:
@@ -558,8 +558,8 @@
 
     $P0 = new 'Exception'
     $S0 = "Missing a required argument for option '"
-    $S0 .= arg
-    $S0 .= "'"
+    $S0 = $S0 . arg
+    $S0 = $S0 . "'"
     $P0 = $S0
     throw $P0
 .end

Modified: branches/ops_pct/runtime/parrot/library/PGE/Dumper.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/PGE/Dumper.pir	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/runtime/parrot/library/PGE/Dumper.pir	Sat May  8 02:08:40 2010	(r46399)
@@ -112,8 +112,10 @@
     if has_b1 goto start
     b1 = "["
   start:
-    .local string out
-    out = concat prefix, ':'
+    .local pmc out
+    out = new ['StringBuilder']
+    out = prefix
+    out .= ':'
     unless self goto subpats
     out .= ' <'
     $S0 = self
@@ -136,8 +138,8 @@
     unless spi < spc goto subrules
     prefix1 = concat prefix, b1
     $S0 = spi
-    concat prefix1, $S0
-    concat prefix1, b2
+    prefix1 = concat prefix1, $S0
+    prefix1 = concat prefix1, b2
     $I0 = defined capt[spi]
     unless $I0 goto subpats_2
     $P0 = capt[spi]
@@ -154,8 +156,8 @@
     unless it goto end
     $S0 = shift it
     prefix1 = concat prefix, '<'
-    concat prefix1, $S0
-    concat prefix1, ">"
+    prefix1 = concat prefix1, $S0
+    prefix1 = concat prefix1, ">"
     $I0 = defined capt[$S0]
     unless $I0 goto subrules_1
     $P0 = capt[$S0]
@@ -178,8 +180,8 @@
     $P1 = $P0[$I0]
     prefix2 = concat prefix1, b1
     $S0 = $I0
-    concat prefix2, $S0
-    concat prefix2, b2
+    prefix2 = concat prefix2, $S0
+    prefix2 = concat prefix2, b2
     $S0 = $P1.'dump_str'(prefix2, b1, b2)
     out .= $S0
     inc $I0
@@ -195,7 +197,8 @@
     local_return jmpstack
 
   end:
-    .return (out)
+    $S0 = out
+    .return ($S0)
 .end
 
 

Modified: branches/ops_pct/runtime/parrot/library/Test/Builder.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Test/Builder.pir	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/runtime/parrot/library/Test/Builder.pir	Sat May  8 02:08:40 2010	(r46399)
@@ -493,7 +493,8 @@
     .local pmc output
     output   = self.'output'()
 
-    .local string bail_out
+    .local pmc bail_out
+    bail_out = new ['StringBuilder']
     bail_out = 'Bail out!'
 
     unless has_reason goto WRITE_REASON

Modified: branches/ops_pct/runtime/parrot/library/Test/Builder/Test.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Test/Builder/Test.pir	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/runtime/parrot/library/Test/Builder/Test.pir	Sat May  8 02:08:40 2010	(r46399)
@@ -231,7 +231,7 @@
     concat report, 'ok '
     concat report, number_string
 
-    unless description goto REPORT
+    unless desc_string goto REPORT
 
     concat report, ' - '
     concat report, desc_string

Modified: branches/ops_pct/runtime/parrot/library/Test/More.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Test/More.pir	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/runtime/parrot/library/Test/More.pir	Sat May  8 02:08:40 2010	(r46399)
@@ -560,7 +560,8 @@
     .param int have_desc   :opt_flag
 
     .local int    result
-    .local string diagnosis
+    .local pmc diagnosis
+    diagnosis = new ['StringBuilder']
 
     .local pmc position
     position = new 'ResizablePMCArray'
@@ -660,16 +661,21 @@
     r_count = r_array
     if l_count == r_count goto compare_contents
 
-    .local string l_count_string
-    .local string r_count_string
-    l_count_string  = l_count
+    .local pmc l_count_string
+    .local pmc r_count_string
+    l_count_string  = new ['StringBuilder']
+    r_count_string  = new ['StringBuilder']
+
+    $S0 = l_count
+    l_count_string  = $S0
     l_count_string .= ' element'
 
     if l_count == 1 goto pluralization_done
     l_count_string .= 's'
 
   pluralization_done:
-    r_count_string  = r_count
+    $S0 = r_count
+    r_count_string  = $S0
 
     push position, l_count_string
     push position, r_count_string
@@ -733,16 +739,21 @@
     r_count = r_hash
     if l_count == r_count goto compare_contents
 
-    .local string l_count_string
-    .local string r_count_string
-    l_count_string  = l_count
+    .local pmc l_count_string
+    .local pmc r_count_string
+    l_count_string  = new ['StringBuilder']
+    r_count_string  = new ['StringBuilder']
+
+    $S0 = l_count
+    l_count_string  = $S0
     l_count_string .= ' element'
 
     if l_count == 1 goto pluralization_done
     l_count_string .= 's'
 
   pluralization_done:
-    r_count_string  = r_count
+    $S0 = r_count
+    r_count_string  = $S0
 
     push position, l_count_string
     push position, r_count_string
@@ -1166,7 +1177,9 @@
     .param string description :optional
 
     .local pmc test
-    .local string diagnostic
+    .local pmc diagnostic
+    diagnostic = new ['StringBuilder']
+
     get_hll_global test, [ 'Test'; 'More' ], '_test'
     $I0 = index target, text
     $I0 = isne $I0, -1
@@ -1206,7 +1219,8 @@
     load_bytecode "PGE/Util.pbc"
     p6rule_compile = compreg "PGE::Perl6Regex"
 
-    .local string diagnostic
+    .local pmc diagnostic
+    diagnostic = new ['StringBuilder']
     .local int pass
     pass = 0
 
@@ -1320,12 +1334,17 @@
     .local pmc test
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
-    .local string description, diagnostic
+    .local pmc description
+    .local pmc diagnostic
+    description = new ['StringBuilder']
+    diagnostic  = new ['StringBuilder']
+
     description = "The object"
     unless got_name goto keep_default
     description = object_name
   keep_default:
-    diagnostic = description
+    $S0 = description
+    diagnostic = $S0
     description .= " isa "
     $S0 = class_name
     description .= $S0
@@ -1346,14 +1365,16 @@
 .sub _make_diagnostic
     .param string received
     .param string expected
-    .local string diagnostic
+    .local pmc diagnostic
 
+    diagnostic  = new ['StringBuilder']
     diagnostic  = 'Have: '
     diagnostic .= received
     diagnostic .= "\nWant: "
     diagnostic .= expected
 
-    .return( diagnostic )
+    $S0 = diagnostic
+    .return( $S0 )
 .end
 
 =back

Modified: branches/ops_pct/runtime/parrot/library/distutils.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/distutils.pir	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/runtime/parrot/library/distutils.pir	Sat May  8 02:08:40 2010	(r46399)
@@ -124,10 +124,6 @@
 
 curl
 
-=item sdist_zip
-
-zip
-
 =item spec, sdist_rpm, bdist_rpm
 
 rpmbuild
@@ -3033,14 +3029,14 @@
     .local pmc archive
     archive = new ['Archive';'Tar']
     $P1 = archive.'add_files'($P0 :flat)
-    .local string dir
-    dir = get_tarname('', kv :flat :named)
+    .local string dirname
+    $S0 = get_tarname('', kv :flat :named)
+    dirname = $S0 . '/'
   L2:
     unless $P1 goto L3
     $P2 = shift $P1
     $S0 = $P2.'full_path'()
-    $S0 = '/' . $S0
-    $S0 = dir . $S0
+    $S0 = dirname . $S0
     $P2.'rename'($S0)
     goto L2
   L3:
@@ -3082,23 +3078,28 @@
     .param pmc kv :slurpy :named
     run_step('manifest', kv :flat :named)
 
+    load_bytecode 'Archive/Zip.pbc'
     $S0 = slurp('MANIFEST')
     $P0 = split "\n", $S0
     $S0 = pop $P0
-    $S0 = get_tarname('.zip', kv :flat :named)
-    $I0 = newer($S0, $P0)
+    .local string archive_file
+    archive_file = get_tarname('.zip', kv :flat :named)
+    $I0 = newer(archive_file, $P0)
     if $I0 goto L1
-    .local string cmd
+    .local pmc archive
+    archive = new ['Archive';'Zip']
+    .local string dirname
     $S0 = get_tarname('', kv :flat :named)
-    copy_sdist($S0, $P0)
-
-    cmd = 'zip -9 -r '
-    cmd .= $S0
-    cmd .= '.zip '
-    cmd .= $S0
-    system(cmd, 1 :named('verbose'))
-
-    rmtree($S0)
+    dirname = $S0 . '/'
+    $P1 = iter $P0
+  L2:
+    unless $P1 goto L3
+    $S0 = shift $P1
+    $S1 = dirname . $S0
+    archive.'addFile'($S0, $S1)
+    goto L2
+  L3:
+    archive.'writeToFileNamed'(archive_file)
   L1:
 .end
 
@@ -3110,21 +3111,6 @@
     unlink('MANIFEST', 1 :named('verbose'))
 .end
 
-.sub 'copy_sdist' :anon
-    .param string dirname
-    .param pmc files
-    mkdir(dirname)
-    $S1 = dirname . "/"
-    $P0 = iter files
-  L1:
-    unless $P0 goto L2
-    $S0 = shift $P0
-    $S2 = $S1 . $S0
-    install($S0, $S2)
-    goto L1
-  L2:
-.end
-
 =head3 Step sdist_rpm
 
 =cut

Modified: branches/ops_pct/runtime/parrot/library/parrotlib.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/parrotlib.pir	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/runtime/parrot/library/parrotlib.pir	Sat May  8 02:08:40 2010	(r46399)
@@ -36,8 +36,7 @@
 OKAY:
 
     # XXX: get include paths from config
-    $S0 = clone root
-    concat $S0, "/include"
+    $S0 = concat root, "/include"
     paths = new 'ResizableStringArray'
     push paths, "."
     push paths, $S0
@@ -55,7 +54,7 @@
     $P1 = clone $P0
     $P2 = new 'String'
     $S0 = shift paths
-    concat $S0, "/"
+    $S0 = concat $S0, "/"
     $P2 = $S0
     setprop $P1, "path", $P2
     push includes, $P1
@@ -134,25 +133,21 @@
     stat $I0, name, 0
     if $I0 goto END
 
-    name = clone request
-    concat name, ext
+    name = concat request, ext
     stat $I0, name, 0
     if $I0 goto END
 
-    name = "runtime/parrot/dynext/"
-    concat name, request
+    name = concat "runtime/parrot/dynext/", request
     stat $I0, name, 0
     if $I0 goto END
 
-    name = "runtime/parrot/dynext/"
-    concat name, request
-    concat name, ext
+    name = concat "runtime/parrot/dynext/", request
+    name = concat name, ext
     stat $I0, name, 0
     if $I0 goto END
 
     # file not found, give the OS a chance to locate it
-    name = clone request
-    concat name, ext
+    name = concat request, ext
 
 END:
     .begin_return
@@ -191,8 +186,7 @@
     getprop $P0, "path", $P1
     path = $P0
 
-    $S0 = clone path
-    concat $S0, name
+    $S0 = concat path, name
     stat $I0, $S0, 0
     if $I0 goto OK
     null $S0

Modified: branches/ops_pct/src/dynpmc/gziphandle.pmc
==============================================================================
--- branches/ops_pct/src/dynpmc/gziphandle.pmc	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/dynpmc/gziphandle.pmc	Sat May  8 02:08:40 2010	(r46399)
@@ -248,17 +248,17 @@
     METHOD compress(STRING *str) {
         int rc;
         char *buf;
-        STRING *dst = NULL;
-        UINTVAL srcLen, bufSize, dstLen;
+        STRING *dst = STRINGNULL;
+        UINTVAL srcLen, dstLen;
         char * const src = Parrot_str_to_cstring(INTERP, str);
 
         if (!src)
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
                 "failed to allocate");
 
-        srcLen  = Parrot_str_byte_length(INTERP, str);
-        bufSize = 12 + srcLen + srcLen / 1000;
-        buf     = mem_allocate_n_zeroed_typed(bufSize, char);
+        srcLen = Parrot_str_byte_length(INTERP, str);
+        dstLen = 12 + srcLen + srcLen / 1000;
+        buf    = mem_allocate_n_zeroed_typed(dstLen, char);
 
         if (!buf) {
             Parrot_str_free_cstring(src);
@@ -295,6 +295,81 @@
         RETURN(STRING *dst);
     }
 
+    METHOD uncompress(STRING *str) {
+        int rc;
+        char *buf;
+        STRING *dst = STRINGNULL;
+        UINTVAL srcLen, dstLen;
+        char * const src = Parrot_str_to_cstring(INTERP, str);
+
+        if (!src)
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+                "failed to allocate");
+
+        srcLen = Parrot_str_byte_length(INTERP, str);
+        dstLen = 2 * srcLen;
+    REDO:
+        buf = mem_allocate_n_zeroed_typed(dstLen, char);
+
+        if (!buf) {
+            Parrot_str_free_cstring(src);
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+                "failed to allocate");
+        }
+
+        rc = uncompress((Bytef *)buf, &dstLen, (const Bytef *)src, srcLen);
+
+        switch (rc) {
+          case Z_OK:
+            Parrot_str_free_cstring(src);
+            dst = Parrot_str_new(INTERP, buf, dstLen);
+            mem_sys_free(buf);
+            break;
+
+          case Z_MEM_ERROR:
+            Parrot_str_free_cstring(src);
+            mem_sys_free(buf);
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+                "not enough memory");
+            break;
+
+          case Z_BUF_ERROR:
+            mem_sys_free(buf);
+            dstLen *= 2;
+            goto REDO;
+
+          case Z_DATA_ERROR:
+            Parrot_str_free_cstring(src);
+            mem_sys_free(buf);
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+                "input data corrupted");
+            break;
+
+          default:
+            /* these are the only four documented return values */
+            break;
+        }
+
+        RETURN(STRING *dst);
+    }
+
+    METHOD crc32(INTVAL crc, STRING *str) {
+        int rc;
+        char *buf;
+        STRING *dst = NULL;
+        UINTVAL srcLen, bufSize, dstLen;
+        char * const src = Parrot_str_to_cstring(INTERP, str);
+
+        if (!src)
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+                "failed to allocate");
+
+        srcLen  = Parrot_str_byte_length(INTERP, str);
+
+        crc = crc32(crc, (const Bytef *)src, srcLen);
+        RETURN(INTVAL crc);
+    }
+
 /*
 
 =back

Modified: branches/ops_pct/src/embed.c
==============================================================================
--- branches/ops_pct/src/embed.c	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/embed.c	Sat May  8 02:08:40 2010	(r46399)
@@ -27,6 +27,8 @@
 
 #include "../compilers/imcc/imc.h"
 
+#include "embed.str"
+
 /* HEADERIZER HFILE: none */ /* The visible types are different than what we use in here */
 
 /* HEADERIZER BEGIN: static */
@@ -78,6 +80,7 @@
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
+PARROT_MALLOC
 Parrot_Interp
 Parrot_new(ARGIN_NULLOK(Parrot_Interp parent))
 {
@@ -1085,26 +1088,25 @@
 
 PARROT_EXPORT
 Parrot_PMC
-Parrot_compile_string(PARROT_INTERP, Parrot_String type,
-        const char *code, Parrot_String *error)
+Parrot_compile_string(PARROT_INTERP, Parrot_String type, ARGIN(const char *code),
+        ARGOUT(Parrot_String *error))
 {
     /* For the benefit of embedders that do not load any pbc
      * before compiling a string */
 
     if (!interp->initial_pf) {
         /* SIDE EFFECT: PackFile_new_dummy sets interp->initial_pf */
-        interp->initial_pf = PackFile_new_dummy(interp,
-            Parrot_str_new_constant(interp, "compile_string"));
+        interp->initial_pf = PackFile_new_dummy(interp, CONST_STRING(interp, "compile_string"));
         /* Assumption: there is no valid reason to fail to create it.
          * If the assumption changes, replace the assertion with a
          * runtime check */
         PARROT_ASSERT(interp->initial_pf);
     }
 
-    if (Parrot_str_compare(interp, Parrot_str_new(interp, "PIR", 3), type) == 0)
+    if (Parrot_str_compare(interp, CONST_STRING(interp, "PIR"), type) == 0)
         return IMCC_compile_pir_s(interp, code, error);
 
-    if (Parrot_str_compare(interp, Parrot_str_new(interp, "PASM", 4), type) == 0)
+    if (Parrot_str_compare(interp, CONST_STRING(interp, "PASM"), type) == 0)
         return IMCC_compile_pasm_s(interp, code, error);
 
     *error = Parrot_str_new(interp, "Invalid interpreter type", 0);

Modified: branches/ops_pct/src/gc/gc_ms.c
==============================================================================
--- branches/ops_pct/src/gc/gc_ms.c	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/gc/gc_ms.c	Sat May  8 02:08:40 2010	(r46399)
@@ -1251,6 +1251,17 @@
     mem = (char *)mem_allocate(interp, interp->mem_pools, new_size, pool);
     mem += sizeof (void *);
 
+    /* Update Memory_Block usage */
+    /* We must not reallocate non-movable buffers! */
+    PARROT_ASSERT(PObj_is_movable_TESTALL(str));
+
+    /* We must not reallocate shared buffers! */
+    PARROT_ASSERT(!(*Buffer_bufrefcountptr(str) & Buffer_shared_FLAG));
+
+    /* Decrease usage */
+    PARROT_ASSERT(Buffer_pool(str));
+    Buffer_pool(str)->freed  += ALIGNED_STRING_SIZE(Buffer_buflen(str));
+
     /* copy mem from strstart, *not* bufstart */
     oldmem             = str->strstart;
     Buffer_bufstart(str) = (void *)mem;

Modified: branches/ops_pct/src/hll.c
==============================================================================
--- branches/ops_pct/src/hll.c	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/hll.c	Sat May  8 02:08:40 2010	(r46399)
@@ -200,9 +200,8 @@
 {
     ASSERT_ARGS(Parrot_register_HLL_lib)
     PMC   *hll_info = interp->HLL_info;
-    INTVAL nelements, i;
-
-    nelements = VTABLE_elements(interp, hll_info);
+    const INTVAL nelements = VTABLE_elements(interp, hll_info);
+    INTVAL i;
 
     for (i = 0; i < nelements; ++i) {
         PMC * const entry    = VTABLE_get_pmc_keyed_int(interp, hll_info, i);

Modified: branches/ops_pct/src/interp/inter_create.c
==============================================================================
--- branches/ops_pct/src/interp/inter_create.c	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/interp/inter_create.c	Sat May  8 02:08:40 2010	(r46399)
@@ -83,14 +83,13 @@
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
+PARROT_MALLOC
 Parrot_Interp
 make_interpreter(ARGIN_NULLOK(Interp *parent), INTVAL flags)
 {
     ASSERT_ARGS(make_interpreter)
     int stacktop;
-    Interp *interp;
-
-    interp = allocate_interpreter(parent, flags);
+    Interp * const interp = allocate_interpreter(parent, flags);
     initialize_interpreter(interp, (void*)&stacktop);
     return interp;
 }
@@ -114,6 +113,7 @@
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
+PARROT_MALLOC
 Parrot_Interp
 allocate_interpreter(ARGIN_NULLOK(Interp *parent), INTVAL flags)
 {

Modified: branches/ops_pct/src/library.c
==============================================================================
--- branches/ops_pct/src/library.c	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/library.c	Sat May  8 02:08:40 2010	(r46399)
@@ -505,8 +505,7 @@
     ASSERT_ARGS(path_concat)
     STRING* join;
 
-    join = l_path;
-    join = path_guarantee_trailing_separator(interp, join);
+    join = path_guarantee_trailing_separator(interp, l_path);
     join = Parrot_str_concat(interp, join, r_path);
 
     return join;
@@ -530,9 +529,7 @@
 try_load_path(PARROT_INTERP, ARGMOD(STRING* path))
 {
     ASSERT_ARGS(try_load_path)
-    STRING *final;
-
-    final = path_finalize(interp, path);
+    STRING * const final = path_finalize(interp, path);
 
     if (Parrot_stat_info_intval(interp, final, STAT_EXISTS)) {
         return final;

Modified: branches/ops_pct/src/ops/core_ops.c
==============================================================================
--- branches/ops_pct/src/ops/core_ops.c	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/ops/core_ops.c	Sat May  8 02:08:40 2010	(r46399)
@@ -16959,18 +16959,21 @@
 opcode_t *
 Parrot_end(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/core.ops"
     return (opcode_t *)0;
 }
 
 opcode_t *
 Parrot_noop(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 93 "src/ops/core.ops"
 
 return (opcode_t *)cur_opcode + 1;}
 
 opcode_t *
 Parrot_check_events(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 96 "src/ops/core.ops"
     opcode_t * const next = cur_opcode + 1;
     Parrot_cx_check_tasks(interp, interp->scheduler);
     return (opcode_t *)next;   /* force this being a branch op */
@@ -16979,6 +16982,7 @@
 opcode_t *
 Parrot_check_events__(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 102 "src/ops/core.ops"
     opcode_t * const _this = CUR_OPCODE;
     /* Restore op_func_table. */
     disable_event_checking(interp);
@@ -16989,6 +16993,7 @@
 opcode_t *
 Parrot_wrapper__(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 110 "src/ops/core.ops"
     opcode_t *pc = CUR_OPCODE;
     DO_OP(pc, interp);
     return (opcode_t *)pc;
@@ -16997,6 +17002,7 @@
 opcode_t *
 Parrot_load_bytecode_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 116 "src/ops/core.ops"
     Parrot_load_bytecode(interp, SREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17004,6 +17010,7 @@
 opcode_t *
 Parrot_load_bytecode_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 116 "src/ops/core.ops"
     Parrot_load_bytecode(interp, CONST(1)->u.string);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17011,6 +17018,7 @@
 opcode_t *
 Parrot_load_language_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/core.ops"
     Parrot_load_language(interp, SREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17018,6 +17026,7 @@
 opcode_t *
 Parrot_load_language_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/core.ops"
     Parrot_load_language(interp, CONST(1)->u.string);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17025,18 +17034,21 @@
 opcode_t *
 Parrot_branch_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 153 "src/ops/core.ops"
     return (opcode_t *)cur_opcode + IREG(1);
 }
 
 opcode_t *
 Parrot_branch_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 153 "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)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 167 "src/ops/core.ops"
     INTVAL return_addr;
     opcode_t * const dest = cur_opcode + 3;
 
@@ -17056,6 +17068,7 @@
 opcode_t *
 Parrot_local_branch_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 167 "src/ops/core.ops"
     INTVAL return_addr;
     opcode_t * const dest = cur_opcode + 3;
 
@@ -17075,6 +17088,7 @@
 opcode_t *
 Parrot_local_return_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 190 "src/ops/core.ops"
     INTVAL return_addr;
     opcode_t *next;
     opcode_t * const dest = cur_opcode + 2;
@@ -17104,6 +17118,7 @@
 opcode_t *
 Parrot_jump_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 225 "src/ops/core.ops"
     opcode_t * const loc = INTVAL2PTR(opcode_t *, IREG(1));
     return (opcode_t *)loc;
 }
@@ -17111,6 +17126,7 @@
 opcode_t *
 Parrot_jump_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 225 "src/ops/core.ops"
     opcode_t * const loc = INTVAL2PTR(opcode_t *, cur_opcode[1]);
     return (opcode_t *)loc;
 }
@@ -17118,6 +17134,7 @@
 opcode_t *
 Parrot_enternative(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 238 "src/ops/core.ops"
     opcode_t * const addr = run_native(interp, CUR_OPCODE,
             interp->code->base.data);
     return (opcode_t *)addr;
@@ -17126,6 +17143,7 @@
 opcode_t *
 Parrot_if_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 273 "src/ops/core.ops"
     if (IREG(1) != 0)
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -17134,6 +17152,7 @@
 opcode_t *
 Parrot_if_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 278 "src/ops/core.ops"
     if (!FLOAT_IS_ZERO(NREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -17142,6 +17161,7 @@
 opcode_t *
 Parrot_if_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 283 "src/ops/core.ops"
     if (Parrot_str_boolean(interp, SREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -17150,6 +17170,7 @@
 opcode_t *
 Parrot_if_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 288 "src/ops/core.ops"
     if (VTABLE_get_bool(interp, PREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -17158,6 +17179,7 @@
 opcode_t *
 Parrot_unless_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 307 "src/ops/core.ops"
     if (IREG(1) == 0)
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -17166,6 +17188,7 @@
 opcode_t *
 Parrot_unless_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/core.ops"
     if (FLOAT_IS_ZERO(NREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -17174,6 +17197,7 @@
 opcode_t *
 Parrot_unless_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/core.ops"
     if (!Parrot_str_boolean(interp, SREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -17182,6 +17206,7 @@
 opcode_t *
 Parrot_unless_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 322 "src/ops/core.ops"
     if (!VTABLE_get_bool(interp, PREG(1)))
         return (opcode_t *)cur_opcode + cur_opcode[2];
 
@@ -17190,6 +17215,7 @@
 opcode_t *
 Parrot_invokecc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 377 "src/ops/core.ops"
     PMC      * const p     = PREG(1);
     opcode_t *dest         = cur_opcode + 2;
     PMC      * const signature = Parrot_pcc_get_signature(interp,
@@ -17206,6 +17232,7 @@
 opcode_t *
 Parrot_invoke_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/core.ops"
     opcode_t   *dest       = cur_opcode + 3;
     PMC * const p          = PREG(1);
     PMC * const signature  = Parrot_pcc_get_signature(interp,
@@ -17222,6 +17249,7 @@
 opcode_t *
 Parrot_yield(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 405 "src/ops/core.ops"
     opcode_t   *dest = cur_opcode + 1;
     PMC * const p    = Parrot_pcc_get_sub(interp, CURRENT_CONTEXT(interp));
 
@@ -17234,6 +17262,7 @@
 opcode_t *
 Parrot_tailcall_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 415 "src/ops/core.ops"
     PMC * const p               = PREG(1);
     opcode_t   *dest            = cur_opcode + 2;
     PMC * const ctx             = CURRENT_CONTEXT(interp);
@@ -17252,6 +17281,7 @@
 opcode_t *
 Parrot_returncc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "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;
@@ -17260,6 +17290,7 @@
 opcode_t *
 Parrot_capture_lex_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 437 "src/ops/core.ops"
     Parrot_capture_lex(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17267,6 +17298,7 @@
 opcode_t *
 Parrot_newclosure_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 441 "src/ops/core.ops"
     PREG(1) = parrot_new_closure(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -17274,6 +17306,7 @@
 opcode_t *
 Parrot_set_args_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 479 "src/ops/core.ops"
     opcode_t * const raw_args = CUR_OPCODE;
     PMC * const signature = CONST(1)->u.key;
     PMC * call_sig;
@@ -17290,6 +17323,7 @@
 opcode_t *
 Parrot_get_params_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 493 "src/ops/core.ops"
     opcode_t * const raw_params  = CUR_OPCODE;
     PMC      * const signature   = CONST(1)->u.key;
     PMC      * const ctx         = CURRENT_CONTEXT(interp);
@@ -17314,6 +17348,7 @@
 opcode_t *
 Parrot_set_returns_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "src/ops/core.ops"
     opcode_t * const raw_args  = CUR_OPCODE;
     PMC      * const signature = CONST(1)->u.key;
     PMC      * const call_sig  = Parrot_pcc_build_sig_object_from_op(interp,
@@ -17331,6 +17366,7 @@
 opcode_t *
 Parrot_get_results_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 530 "src/ops/core.ops"
     opcode_t * const raw_params  = CUR_OPCODE;
     PMC      * const signature   = CONST(1)->u.key;
     PMC             *ctx         = CURRENT_CONTEXT(interp);
@@ -17349,6 +17385,7 @@
 opcode_t *
 Parrot_set_result_info_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 552 "src/ops/core.ops"
     PMC * const ctx = CURRENT_CONTEXT(interp);
 
     VTABLE_set_attr_str(interp, ctx,
@@ -17360,6 +17397,7 @@
 opcode_t *
 Parrot_set_result_info_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 552 "src/ops/core.ops"
     PMC * const ctx = CURRENT_CONTEXT(interp);
 
     VTABLE_set_attr_str(interp, ctx,
@@ -17371,6 +17409,7 @@
 opcode_t *
 Parrot_result_info_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 569 "src/ops/core.ops"
     PMC * const caller_ctx = Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
     PMC * const sig        = VTABLE_get_attr_str(interp, caller_ctx,
             Parrot_str_new_constant(interp, "return_flags"));
@@ -17386,6 +17425,7 @@
 opcode_t *
 Parrot_set_addr_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 609 "src/ops/core.ops"
     IREG(1) = PTR2INTVAL(CUR_OPCODE + cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -17393,6 +17433,7 @@
 opcode_t *
 Parrot_set_addr_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 613 "src/ops/core.ops"
     VTABLE_set_pointer(interp, PREG(1), (CUR_OPCODE + cur_opcode[2]));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -17400,6 +17441,7 @@
 opcode_t *
 Parrot_set_addr_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 617 "src/ops/core.ops"
     VTABLE_set_pointer(interp, PREG(1), (void*)IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -17407,6 +17449,7 @@
 opcode_t *
 Parrot_get_addr_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 621 "src/ops/core.ops"
     void *ptr = VTABLE_get_pointer(interp, PREG(2));
     IREG(1)        = (INTVAL)ptr;
 
@@ -17415,6 +17458,7 @@
 opcode_t *
 Parrot_schedule_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 643 "src/ops/core.ops"
     Parrot_cx_schedule_task(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17422,6 +17466,7 @@
 opcode_t *
 Parrot_addhandler_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 654 "src/ops/core.ops"
     Parrot_cx_add_handler(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17429,6 +17474,7 @@
 opcode_t *
 Parrot_push_eh_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 716 "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);
@@ -17438,6 +17484,7 @@
 opcode_t *
 Parrot_push_eh_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 722 "src/ops/core.ops"
     Parrot_cx_add_handler_local(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17445,6 +17492,7 @@
 opcode_t *
 Parrot_pop_eh(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 726 "src/ops/core.ops"
     Parrot_cx_delete_handler_local(interp,
             Parrot_str_new_constant(interp, "exception"));
 
@@ -17453,6 +17501,7 @@
 opcode_t *
 Parrot_throw_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 731 "src/ops/core.ops"
     PMC * except = PREG(1);
     opcode_t *dest;
     opcode_t * const ret    = cur_opcode + 2;
@@ -17473,6 +17522,7 @@
 opcode_t *
 Parrot_throw_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 749 "src/ops/core.ops"
     opcode_t * dest;
     PMC * except = PREG(1);
     if (PMC_IS_NULL(except) || except->vtable->base_type != enum_class_Exception)
@@ -17487,6 +17537,7 @@
 opcode_t *
 Parrot_rethrow_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 761 "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;
@@ -17503,6 +17554,7 @@
 opcode_t *
 Parrot_count_eh_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 775 "src/ops/core.ops"
     IREG(1) = Parrot_cx_count_handlers_local(interp,
             Parrot_str_new_constant(interp, "exception"));
 
@@ -17511,6 +17563,7 @@
 opcode_t *
 Parrot_die_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 780 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
@@ -17528,6 +17581,7 @@
 opcode_t *
 Parrot_die_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 780 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
@@ -17545,6 +17599,7 @@
 opcode_t *
 Parrot_die_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 795 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
@@ -17563,6 +17618,7 @@
 opcode_t *
 Parrot_die_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 795 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
@@ -17581,6 +17637,7 @@
 opcode_t *
 Parrot_die_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/core.ops"
     if (IREG(1) == EXCEPT_doomed)
         _exit(IREG(2));
     else {
@@ -17595,6 +17652,7 @@
 opcode_t *
 Parrot_die_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/core.ops"
     if (cur_opcode[1] == EXCEPT_doomed)
         _exit(IREG(2));
     else {
@@ -17609,6 +17667,7 @@
 opcode_t *
 Parrot_die_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/core.ops"
     if (IREG(1) == EXCEPT_doomed)
         _exit(cur_opcode[2]);
     else {
@@ -17623,6 +17682,7 @@
 opcode_t *
 Parrot_die_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/core.ops"
     if (cur_opcode[1] == EXCEPT_doomed)
         _exit(cur_opcode[2]);
     else {
@@ -17637,6 +17697,7 @@
 opcode_t *
 Parrot_exit_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 823 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
@@ -17655,6 +17716,7 @@
 opcode_t *
 Parrot_exit_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 823 "src/ops/core.ops"
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
@@ -17673,6 +17735,7 @@
 opcode_t *
 Parrot_debug_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 862 "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;
@@ -17681,6 +17744,7 @@
 opcode_t *
 Parrot_debug_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 862 "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;
@@ -17689,6 +17753,7 @@
 opcode_t *
 Parrot_bounds_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 877 "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;
@@ -17697,6 +17762,7 @@
 opcode_t *
 Parrot_bounds_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 877 "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;
@@ -17705,6 +17771,7 @@
 opcode_t *
 Parrot_profile_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 892 "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;
@@ -17713,6 +17780,7 @@
 opcode_t *
 Parrot_profile_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 892 "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;
@@ -17721,6 +17789,7 @@
 opcode_t *
 Parrot_trace_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 907 "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;
@@ -17729,6 +17798,7 @@
 opcode_t *
 Parrot_trace_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 907 "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;
@@ -17737,6 +17807,7 @@
 opcode_t *
 Parrot_gc_debug_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 921 "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); }
 
@@ -17745,6 +17816,7 @@
 opcode_t *
 Parrot_gc_debug_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 921 "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); }
 
@@ -17753,6 +17825,7 @@
 opcode_t *
 Parrot_interpinfo_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 955 "src/ops/core.ops"
     IREG(1) = interpinfo(interp, IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -17760,6 +17833,7 @@
 opcode_t *
 Parrot_interpinfo_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 955 "src/ops/core.ops"
     IREG(1) = interpinfo(interp, cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -17767,6 +17841,7 @@
 opcode_t *
 Parrot_interpinfo_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 959 "src/ops/core.ops"
     PREG(1) = interpinfo_p(interp, IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -17774,6 +17849,7 @@
 opcode_t *
 Parrot_interpinfo_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 959 "src/ops/core.ops"
     PREG(1) = interpinfo_p(interp, cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -17781,6 +17857,7 @@
 opcode_t *
 Parrot_interpinfo_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 963 "src/ops/core.ops"
     STRING * const s = interpinfo_s(interp, IREG(2));
     SREG(1) = s;
 
@@ -17789,6 +17866,7 @@
 opcode_t *
 Parrot_interpinfo_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 963 "src/ops/core.ops"
     STRING * const s = interpinfo_s(interp, cur_opcode[2]);
     SREG(1) = s;
 
@@ -17797,6 +17875,7 @@
 opcode_t *
 Parrot_warningson_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 983 "src/ops/core.ops"
     PARROT_WARNINGS_on(interp, IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17804,6 +17883,7 @@
 opcode_t *
 Parrot_warningson_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 983 "src/ops/core.ops"
     PARROT_WARNINGS_on(interp, cur_opcode[1]);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17811,6 +17891,7 @@
 opcode_t *
 Parrot_warningsoff_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 995 "src/ops/core.ops"
     PARROT_WARNINGS_off(interp, IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17818,6 +17899,7 @@
 opcode_t *
 Parrot_warningsoff_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 995 "src/ops/core.ops"
     PARROT_WARNINGS_off(interp, cur_opcode[1]);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17825,6 +17907,7 @@
 opcode_t *
 Parrot_errorson_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1030 "src/ops/core.ops"
     PARROT_ERRORS_on(interp, IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17832,6 +17915,7 @@
 opcode_t *
 Parrot_errorson_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1030 "src/ops/core.ops"
     PARROT_ERRORS_on(interp, cur_opcode[1]);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17839,6 +17923,7 @@
 opcode_t *
 Parrot_errorsoff_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1042 "src/ops/core.ops"
     PARROT_ERRORS_off(interp, IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17846,6 +17931,7 @@
 opcode_t *
 Parrot_errorsoff_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1042 "src/ops/core.ops"
     PARROT_ERRORS_off(interp, cur_opcode[1]);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17853,6 +17939,7 @@
 opcode_t *
 Parrot_runinterp_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1058 "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);
@@ -17863,6 +17950,7 @@
 opcode_t *
 Parrot_runinterp_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1058 "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);
@@ -17873,6 +17961,7 @@
 opcode_t *
 Parrot_getinterp_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1065 "src/ops/core.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
            IGLOBALS_INTERPRETER);
 
@@ -17881,6 +17970,7 @@
 opcode_t *
 Parrot_sweep_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1109 "src/ops/core.ops"
     if (cur_opcode[1])
         Parrot_gc_mark_and_sweep(interp, 0);
     else
@@ -17892,6 +17982,7 @@
 opcode_t *
 Parrot_collect(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1123 "src/ops/core.ops"
     Parrot_gc_compact_memory_pool(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -17899,6 +17990,7 @@
 opcode_t *
 Parrot_sweepoff(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1133 "src/ops/core.ops"
     Parrot_block_GC_mark(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -17906,6 +17998,7 @@
 opcode_t *
 Parrot_sweepon(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1143 "src/ops/core.ops"
     Parrot_unblock_GC_mark(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -17913,6 +18006,7 @@
 opcode_t *
 Parrot_collectoff(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1153 "src/ops/core.ops"
     Parrot_block_GC_sweep(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -17920,6 +18014,7 @@
 opcode_t *
 Parrot_collecton(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1163 "src/ops/core.ops"
     Parrot_unblock_GC_sweep(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -17927,6 +18022,7 @@
 opcode_t *
 Parrot_needs_destroy_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1174 "src/ops/core.ops"
     Parrot_gc_pmc_needs_early_collection(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -17934,6 +18030,7 @@
 opcode_t *
 Parrot_loadlib_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1243 "src/ops/core.ops"
     PREG(1) = Parrot_load_lib(interp, SREG(2), NULL);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -17941,6 +18038,7 @@
 opcode_t *
 Parrot_loadlib_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1243 "src/ops/core.ops"
     PREG(1) = Parrot_load_lib(interp, CONST(2)->u.string, NULL);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -17948,6 +18046,7 @@
 opcode_t *
 Parrot_loadlib_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1247 "src/ops/core.ops"
     PREG(1) = Parrot_load_lib(interp, SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -17955,6 +18054,7 @@
 opcode_t *
 Parrot_loadlib_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1247 "src/ops/core.ops"
     PREG(1) = Parrot_load_lib(interp, CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -17962,6 +18062,7 @@
 opcode_t *
 Parrot_loadlib_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1247 "src/ops/core.ops"
     PREG(1) = Parrot_load_lib(interp, SREG(2), CONST(3)->u.key);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -17969,6 +18070,7 @@
 opcode_t *
 Parrot_loadlib_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1247 "src/ops/core.ops"
     PREG(1) = Parrot_load_lib(interp, CONST(2)->u.string, CONST(3)->u.key);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -17976,6 +18078,7 @@
 opcode_t *
 Parrot_dlfunc_p_p_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1251 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (SREG(3)));
     void         *dl_handle = NULL;
     void         *ptr       = NULL;
@@ -18010,6 +18113,7 @@
 opcode_t *
 Parrot_dlfunc_p_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1251 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (CONST(3)->u.string));
     void         *dl_handle = NULL;
     void         *ptr       = NULL;
@@ -18044,6 +18148,7 @@
 opcode_t *
 Parrot_dlfunc_p_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1251 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (SREG(3)));
     void         *dl_handle = NULL;
     void         *ptr       = NULL;
@@ -18078,6 +18183,7 @@
 opcode_t *
 Parrot_dlfunc_p_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1251 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (CONST(3)->u.string));
     void         *dl_handle = NULL;
     void         *ptr       = NULL;
@@ -18112,6 +18218,7 @@
 opcode_t *
 Parrot_dlvar_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1282 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (SREG(3)));
     void *        p         = NULL;
 
@@ -18138,6 +18245,7 @@
 opcode_t *
 Parrot_dlvar_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1282 "src/ops/core.ops"
     char * const  name      = Parrot_str_to_cstring(interp, (CONST(3)->u.string));
     void *        p         = NULL;
 
@@ -18164,6 +18272,7 @@
 opcode_t *
 Parrot_compreg_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1305 "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));
@@ -18173,6 +18282,7 @@
 opcode_t *
 Parrot_compreg_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1305 "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));
@@ -18182,6 +18292,7 @@
 opcode_t *
 Parrot_compreg_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1311 "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));
@@ -18191,6 +18302,7 @@
 opcode_t *
 Parrot_compreg_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1311 "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);
@@ -18200,6 +18312,7 @@
 opcode_t *
 Parrot_new_callback_p_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1317 "src/ops/core.ops"
     PREG(1) = Parrot_make_cb(interp, PREG(2), PREG(3), SREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -18207,6 +18320,7 @@
 opcode_t *
 Parrot_new_callback_p_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1317 "src/ops/core.ops"
     PREG(1) = Parrot_make_cb(interp, PREG(2), PREG(3), CONST(4)->u.string);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -18214,6 +18328,7 @@
 opcode_t *
 Parrot_annotations_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1344 "src/ops/core.ops"
     if (interp->code->annotations) {
         const opcode_t cur_pos = (cur_opcode + 2) - interp->code->base.data;
         PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
@@ -18228,6 +18343,7 @@
 opcode_t *
 Parrot_annotations_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1362 "src/ops/core.ops"
     if (interp->code->annotations) {
         const opcode_t cur_pos = (cur_opcode + 3) - interp->code->base.data;
         PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
@@ -18242,6 +18358,7 @@
 opcode_t *
 Parrot_annotations_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1362 "src/ops/core.ops"
     if (interp->code->annotations) {
         const opcode_t cur_pos = (cur_opcode + 3) - interp->code->base.data;
         PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
@@ -18256,6 +18373,7 @@
 opcode_t *
 Parrot_band_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 62 "src/ops/bit.ops"
     IREG(1) &= IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18263,6 +18381,7 @@
 opcode_t *
 Parrot_band_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 62 "src/ops/bit.ops"
     IREG(1) &= cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18270,6 +18389,7 @@
 opcode_t *
 Parrot_band_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 66 "src/ops/bit.ops"
     const INTVAL a = VTABLE_get_integer(interp, PREG(1));
     const INTVAL b = a & IREG(2);
     VTABLE_set_integer_native(interp, PREG(1), b);
@@ -18279,6 +18399,7 @@
 opcode_t *
 Parrot_band_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 66 "src/ops/bit.ops"
     const INTVAL a = VTABLE_get_integer(interp, PREG(1));
     const INTVAL b = a & cur_opcode[2];
     VTABLE_set_integer_native(interp, PREG(1), b);
@@ -18288,6 +18409,7 @@
 opcode_t *
 Parrot_band_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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);
@@ -18297,6 +18419,7 @@
 opcode_t *
 Parrot_band_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/bit.ops"
     IREG(1) = IREG(2) & IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18304,6 +18427,7 @@
 opcode_t *
 Parrot_band_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/bit.ops"
     IREG(1) = cur_opcode[2] & IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18311,6 +18435,7 @@
 opcode_t *
 Parrot_band_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/bit.ops"
     IREG(1) = IREG(2) & cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18318,6 +18443,7 @@
 opcode_t *
 Parrot_band_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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));
 
@@ -18326,6 +18452,7 @@
 opcode_t *
 Parrot_band_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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]);
 
@@ -18334,6 +18461,7 @@
 opcode_t *
 Parrot_band_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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);
@@ -18343,6 +18471,7 @@
 opcode_t *
 Parrot_bands_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "src/ops/bit.ops"
     STRING * const a = VTABLE_get_string(interp, PREG(1));
     STRING * const b = Parrot_str_bitwise_and(interp, a, SREG(2));
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -18352,6 +18481,7 @@
 opcode_t *
 Parrot_bands_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "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);
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -18361,6 +18491,7 @@
 opcode_t *
 Parrot_bands_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 117 "src/ops/bit.ops"
     STRING * a = VTABLE_get_string(interp, PREG(1));
     STRING * const b = VTABLE_get_string(interp, PREG(2));
     a = Parrot_str_bitwise_and(interp, a, b);
@@ -18371,6 +18502,7 @@
 opcode_t *
 Parrot_bands_s_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 124 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_and(interp, SREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18378,6 +18510,7 @@
 opcode_t *
 Parrot_bands_s_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 124 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_and(interp, CONST(2)->u.string, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18385,6 +18518,7 @@
 opcode_t *
 Parrot_bands_s_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 124 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_and(interp, SREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18392,6 +18526,7 @@
 opcode_t *
 Parrot_bands_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 128 "src/ops/bit.ops"
     STRING * const a = VTABLE_get_string(interp, PREG(2));
     STRING * const b = Parrot_str_bitwise_and(interp, a, SREG(3));
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -18401,6 +18536,7 @@
 opcode_t *
 Parrot_bands_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 128 "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);
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -18410,6 +18546,7 @@
 opcode_t *
 Parrot_bands_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 134 "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);
@@ -18420,6 +18557,7 @@
 opcode_t *
 Parrot_bnot_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 155 "src/ops/bit.ops"
     IREG(1) = ~ IREG(1);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -18427,6 +18565,7 @@
 opcode_t *
 Parrot_bnot_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 159 "src/ops/bit.ops"
     IREG(1) = ~ IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18434,6 +18573,7 @@
 opcode_t *
 Parrot_bnot_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 163 "src/ops/bit.ops"
     const INTVAL a = VTABLE_get_integer(interp, PREG(1));
     VTABLE_set_integer_native(interp, PREG(1), ~a);
 
@@ -18442,6 +18582,7 @@
 opcode_t *
 Parrot_bnot_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 168 "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);
@@ -18452,6 +18593,7 @@
 opcode_t *
 Parrot_bnots_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 183 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_not(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18459,6 +18601,7 @@
 opcode_t *
 Parrot_bnots_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 183 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_not(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18466,6 +18609,7 @@
 opcode_t *
 Parrot_bnots_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/bit.ops"
     STRING * const a = VTABLE_get_string(interp, PREG(1));
     STRING * const b = Parrot_str_bitwise_not(interp, a);
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -18475,6 +18619,7 @@
 opcode_t *
 Parrot_bnots_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/bit.ops"
     STRING * const a = VTABLE_get_string(interp, PREG(2));
     STRING * const b = Parrot_str_bitwise_not(interp, a);
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -18484,6 +18629,7 @@
 opcode_t *
 Parrot_bor_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 221 "src/ops/bit.ops"
     IREG(1) |= IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18491,6 +18637,7 @@
 opcode_t *
 Parrot_bor_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 221 "src/ops/bit.ops"
     IREG(1) |= cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18498,6 +18645,7 @@
 opcode_t *
 Parrot_bor_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 225 "src/ops/bit.ops"
     const INTVAL a = VTABLE_get_integer(interp, PREG(1));
     VTABLE_set_integer_native(interp, PREG(1), a | IREG(2));
 
@@ -18506,6 +18654,7 @@
 opcode_t *
 Parrot_bor_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 225 "src/ops/bit.ops"
     const INTVAL a = VTABLE_get_integer(interp, PREG(1));
     VTABLE_set_integer_native(interp, PREG(1), a | cur_opcode[2]);
 
@@ -18514,6 +18663,7 @@
 opcode_t *
 Parrot_bor_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 230 "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);
@@ -18523,6 +18673,7 @@
 opcode_t *
 Parrot_bor_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 236 "src/ops/bit.ops"
     IREG(1) = IREG(2) | IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18530,6 +18681,7 @@
 opcode_t *
 Parrot_bor_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 236 "src/ops/bit.ops"
     IREG(1) = cur_opcode[2] | IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18537,6 +18689,7 @@
 opcode_t *
 Parrot_bor_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 236 "src/ops/bit.ops"
     IREG(1) = IREG(2) | cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18544,6 +18697,7 @@
 opcode_t *
 Parrot_bor_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 240 "src/ops/bit.ops"
     const INTVAL a = VTABLE_get_integer(interp, PREG(2));
     VTABLE_set_integer_native(interp, PREG(1), a | IREG(3));
 
@@ -18552,6 +18706,7 @@
 opcode_t *
 Parrot_bor_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 240 "src/ops/bit.ops"
     const INTVAL a = VTABLE_get_integer(interp, PREG(2));
     VTABLE_set_integer_native(interp, PREG(1), a | cur_opcode[3]);
 
@@ -18560,6 +18715,7 @@
 opcode_t *
 Parrot_bor_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 245 "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);
@@ -18569,6 +18725,7 @@
 opcode_t *
 Parrot_bors_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 269 "src/ops/bit.ops"
     STRING * const a = VTABLE_get_string(interp, PREG(1));
     STRING * const b = Parrot_str_bitwise_or(interp, a, SREG(2));
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -18578,6 +18735,7 @@
 opcode_t *
 Parrot_bors_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 269 "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);
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -18587,6 +18745,7 @@
 opcode_t *
 Parrot_bors_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 275 "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);
@@ -18597,6 +18756,7 @@
 opcode_t *
 Parrot_bors_s_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_or(interp, SREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18604,6 +18764,7 @@
 opcode_t *
 Parrot_bors_s_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_or(interp, CONST(2)->u.string, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18611,6 +18772,7 @@
 opcode_t *
 Parrot_bors_s_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_or(interp, SREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18618,6 +18780,7 @@
 opcode_t *
 Parrot_bors_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 286 "src/ops/bit.ops"
     STRING * const b = VTABLE_get_string(interp, PREG(2));
     STRING * const c = Parrot_str_bitwise_or(interp, b, SREG(3));
     VTABLE_set_string_native(interp, PREG(1), c);
@@ -18627,6 +18790,7 @@
 opcode_t *
 Parrot_bors_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 286 "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);
     VTABLE_set_string_native(interp, PREG(1), c);
@@ -18636,6 +18800,7 @@
 opcode_t *
 Parrot_bors_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 292 "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);
@@ -18646,6 +18811,7 @@
 opcode_t *
 Parrot_shl_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 319 "src/ops/bit.ops"
     IREG(1) = bit_shift_left(IREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18653,6 +18819,7 @@
 opcode_t *
 Parrot_shl_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 319 "src/ops/bit.ops"
     IREG(1) = bit_shift_left(IREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18660,6 +18827,7 @@
 opcode_t *
 Parrot_shl_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 323 "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);
@@ -18669,6 +18837,7 @@
 opcode_t *
 Parrot_shl_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 323 "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);
@@ -18678,6 +18847,7 @@
 opcode_t *
 Parrot_shl_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 329 "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);
@@ -18688,6 +18858,7 @@
 opcode_t *
 Parrot_shl_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 336 "src/ops/bit.ops"
     IREG(1) = bit_shift_left(IREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18695,6 +18866,7 @@
 opcode_t *
 Parrot_shl_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 336 "src/ops/bit.ops"
     IREG(1) = bit_shift_left(cur_opcode[2], IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18702,6 +18874,7 @@
 opcode_t *
 Parrot_shl_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 336 "src/ops/bit.ops"
     IREG(1) = bit_shift_left(IREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18709,6 +18882,7 @@
 opcode_t *
 Parrot_shl_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 340 "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);
@@ -18718,6 +18892,7 @@
 opcode_t *
 Parrot_shl_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 340 "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);
@@ -18727,6 +18902,7 @@
 opcode_t *
 Parrot_shl_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 346 "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);
@@ -18737,6 +18913,7 @@
 opcode_t *
 Parrot_shr_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 373 "src/ops/bit.ops"
     const INTVAL signed_shift = -IREG(2);
     IREG(1) = bit_shift_left(IREG(1), signed_shift);
 
@@ -18745,6 +18922,7 @@
 opcode_t *
 Parrot_shr_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 373 "src/ops/bit.ops"
     const INTVAL signed_shift = -cur_opcode[2];
     IREG(1) = bit_shift_left(IREG(1), signed_shift);
 
@@ -18753,6 +18931,7 @@
 opcode_t *
 Parrot_shr_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "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);
@@ -18762,6 +18941,7 @@
 opcode_t *
 Parrot_shr_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "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);
@@ -18771,6 +18951,7 @@
 opcode_t *
 Parrot_shr_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 384 "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);
@@ -18781,6 +18962,7 @@
 opcode_t *
 Parrot_shr_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/bit.ops"
     const INTVAL signed_shift = -IREG(3);
     IREG(1) = bit_shift_left(IREG(2), signed_shift);
 
@@ -18789,6 +18971,7 @@
 opcode_t *
 Parrot_shr_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/bit.ops"
     const INTVAL signed_shift = -IREG(3);
     IREG(1) = bit_shift_left(cur_opcode[2], signed_shift);
 
@@ -18797,6 +18980,7 @@
 opcode_t *
 Parrot_shr_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/bit.ops"
     const INTVAL signed_shift = -cur_opcode[3];
     IREG(1) = bit_shift_left(IREG(2), signed_shift);
 
@@ -18805,6 +18989,7 @@
 opcode_t *
 Parrot_shr_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 396 "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);
@@ -18814,6 +18999,7 @@
 opcode_t *
 Parrot_shr_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 396 "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);
@@ -18823,6 +19009,7 @@
 opcode_t *
 Parrot_shr_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 402 "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);
@@ -18833,6 +19020,7 @@
 opcode_t *
 Parrot_lsr_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 429 "src/ops/bit.ops"
     const UINTVAL a = (UINTVAL)IREG(1);
     const UINTVAL b = a >> IREG(2);
     IREG(1) = (INTVAL)b;
@@ -18842,6 +19030,7 @@
 opcode_t *
 Parrot_lsr_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 429 "src/ops/bit.ops"
     const UINTVAL a = (UINTVAL)IREG(1);
     const UINTVAL b = a >> cur_opcode[2];
     IREG(1) = (INTVAL)b;
@@ -18851,6 +19040,7 @@
 opcode_t *
 Parrot_lsr_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "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);
@@ -18860,6 +19050,7 @@
 opcode_t *
 Parrot_lsr_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "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);
@@ -18869,6 +19060,7 @@
 opcode_t *
 Parrot_lsr_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 441 "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;
@@ -18879,6 +19071,7 @@
 opcode_t *
 Parrot_lsr_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 448 "src/ops/bit.ops"
     IREG(1) = (INTVAL)((UINTVAL)IREG(2) >> IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18886,6 +19079,7 @@
 opcode_t *
 Parrot_lsr_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 448 "src/ops/bit.ops"
     IREG(1) = (INTVAL)((UINTVAL)cur_opcode[2] >> IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18893,6 +19087,7 @@
 opcode_t *
 Parrot_lsr_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 448 "src/ops/bit.ops"
     IREG(1) = (INTVAL)((UINTVAL)IREG(2) >> cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -18900,6 +19095,7 @@
 opcode_t *
 Parrot_lsr_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 452 "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;
@@ -18910,6 +19106,7 @@
 opcode_t *
 Parrot_lsr_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 452 "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;
@@ -18920,6 +19117,7 @@
 opcode_t *
 Parrot_lsr_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 459 "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;
@@ -18930,6 +19128,7 @@
 opcode_t *
 Parrot_rot_i_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 475 "src/ops/bit.ops"
     const INTVAL r = IREG(2);
     INTVAL s = IREG(3);
     const INTVAL w = cur_opcode[4];
@@ -18947,6 +19146,7 @@
 opcode_t *
 Parrot_rot_i_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 475 "src/ops/bit.ops"
     const INTVAL r = cur_opcode[2];
     INTVAL s = IREG(3);
     const INTVAL w = cur_opcode[4];
@@ -18964,6 +19164,7 @@
 opcode_t *
 Parrot_rot_i_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 475 "src/ops/bit.ops"
     const INTVAL r = IREG(2);
     INTVAL s = cur_opcode[3];
     const INTVAL w = cur_opcode[4];
@@ -18981,6 +19182,7 @@
 opcode_t *
 Parrot_bxor_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 511 "src/ops/bit.ops"
     IREG(1) ^= IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18988,6 +19190,7 @@
 opcode_t *
 Parrot_bxor_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 511 "src/ops/bit.ops"
     IREG(1) ^= cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18995,6 +19198,7 @@
 opcode_t *
 Parrot_bxor_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "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);
@@ -19004,6 +19208,7 @@
 opcode_t *
 Parrot_bxor_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "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);
@@ -19013,6 +19218,7 @@
 opcode_t *
 Parrot_bxor_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 521 "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;
@@ -19023,6 +19229,7 @@
 opcode_t *
 Parrot_bxor_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 528 "src/ops/bit.ops"
     IREG(1) = IREG(2) ^ IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19030,6 +19237,7 @@
 opcode_t *
 Parrot_bxor_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 528 "src/ops/bit.ops"
     IREG(1) = cur_opcode[2] ^ IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19037,6 +19245,7 @@
 opcode_t *
 Parrot_bxor_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 528 "src/ops/bit.ops"
     IREG(1) = IREG(2) ^ cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19044,6 +19253,7 @@
 opcode_t *
 Parrot_bxor_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 532 "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);
@@ -19053,6 +19263,7 @@
 opcode_t *
 Parrot_bxor_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 532 "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);
@@ -19062,6 +19273,7 @@
 opcode_t *
 Parrot_bxor_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 538 "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;
@@ -19072,6 +19284,7 @@
 opcode_t *
 Parrot_bxors_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 563 "src/ops/bit.ops"
     STRING * const a = VTABLE_get_string(interp, PREG(1));
     STRING * const b = Parrot_str_bitwise_xor(interp, a, SREG(2));
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -19081,6 +19294,7 @@
 opcode_t *
 Parrot_bxors_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 563 "src/ops/bit.ops"
     STRING * const a = VTABLE_get_string(interp, PREG(1));
     STRING * const b = Parrot_str_bitwise_xor(interp, a, CONST(2)->u.string);
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -19090,6 +19304,7 @@
 opcode_t *
 Parrot_bxors_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 569 "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_xor(interp, a, b);
@@ -19100,6 +19315,7 @@
 opcode_t *
 Parrot_bxors_s_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 576 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_xor(interp, SREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19107,6 +19323,7 @@
 opcode_t *
 Parrot_bxors_s_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 576 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_xor(interp, CONST(2)->u.string, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19114,6 +19331,7 @@
 opcode_t *
 Parrot_bxors_s_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 576 "src/ops/bit.ops"
     SREG(1) = Parrot_str_bitwise_xor(interp, SREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19121,6 +19339,7 @@
 opcode_t *
 Parrot_bxors_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 580 "src/ops/bit.ops"
     STRING * const a = VTABLE_get_string(interp, PREG(2));
     STRING * const b = Parrot_str_bitwise_xor(interp, a, SREG(3));
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -19130,6 +19349,7 @@
 opcode_t *
 Parrot_bxors_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 580 "src/ops/bit.ops"
     STRING * const a = VTABLE_get_string(interp, PREG(2));
     STRING * const b = Parrot_str_bitwise_xor(interp, a, CONST(3)->u.string);
     VTABLE_set_string_native(interp, PREG(1), b);
@@ -19139,6 +19359,7 @@
 opcode_t *
 Parrot_bxors_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 586 "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_xor(interp, a, b);
@@ -19149,6 +19370,7 @@
 opcode_t *
 Parrot_eq_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 66 "src/ops/cmp.ops"
     if (IREG(1) == IREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19158,6 +19380,7 @@
 opcode_t *
 Parrot_eq_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 66 "src/ops/cmp.ops"
     if (cur_opcode[1] == IREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19167,6 +19390,7 @@
 opcode_t *
 Parrot_eq_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 66 "src/ops/cmp.ops"
     if (IREG(1) == cur_opcode[2]) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19176,6 +19400,7 @@
 opcode_t *
 Parrot_eq_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 72 "src/ops/cmp.ops"
     if (NREG(1) == NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19185,6 +19410,7 @@
 opcode_t *
 Parrot_eq_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 72 "src/ops/cmp.ops"
     if (CONST(1)->u.number == NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19194,6 +19420,7 @@
 opcode_t *
 Parrot_eq_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 72 "src/ops/cmp.ops"
     if (NREG(1) == CONST(2)->u.number) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19203,6 +19430,7 @@
 opcode_t *
 Parrot_eq_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/cmp.ops"
     if (Parrot_str_equal(interp, SREG(1), SREG(2))) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19212,6 +19440,7 @@
 opcode_t *
 Parrot_eq_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/cmp.ops"
     if (Parrot_str_equal(interp, CONST(1)->u.string, SREG(2))) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19221,6 +19450,7 @@
 opcode_t *
 Parrot_eq_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/cmp.ops"
     if (Parrot_str_equal(interp, SREG(1), CONST(2)->u.string)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19230,6 +19460,7 @@
 opcode_t *
 Parrot_eq_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 84 "src/ops/cmp.ops"
     if (VTABLE_is_equal(interp, PREG(1), PREG(2))) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19239,6 +19470,7 @@
 opcode_t *
 Parrot_eq_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 90 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
@@ -19254,6 +19486,7 @@
 opcode_t *
 Parrot_eq_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 90 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
@@ -19269,6 +19502,7 @@
 opcode_t *
 Parrot_eq_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 102 "src/ops/cmp.ops"
     /*
      * the get_number and get_string should probably
      * be also replaced with code like above, as
@@ -19284,6 +19518,7 @@
 opcode_t *
 Parrot_eq_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 102 "src/ops/cmp.ops"
     /*
      * the get_number and get_string should probably
      * be also replaced with code like above, as
@@ -19299,6 +19534,7 @@
 opcode_t *
 Parrot_eq_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 114 "src/ops/cmp.ops"
     if (Parrot_str_equal(interp, VTABLE_get_string(interp, PREG(1)), SREG(2))) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19308,6 +19544,7 @@
 opcode_t *
 Parrot_eq_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 114 "src/ops/cmp.ops"
     if (Parrot_str_equal(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19317,6 +19554,7 @@
 opcode_t *
 Parrot_eq_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 120 "src/ops/cmp.ops"
     if (VTABLE_is_equal_string(interp, PREG(1), PREG(2))) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19326,6 +19564,7 @@
 opcode_t *
 Parrot_eq_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 126 "src/ops/cmp.ops"
     if (VTABLE_is_equal_num(interp, PREG(1), PREG(2))) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19335,6 +19574,7 @@
 opcode_t *
 Parrot_eq_addr_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 132 "src/ops/cmp.ops"
     if (SREG(1) == SREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19344,6 +19584,7 @@
 opcode_t *
 Parrot_eq_addr_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 132 "src/ops/cmp.ops"
     if (CONST(1)->u.string == SREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19353,6 +19594,7 @@
 opcode_t *
 Parrot_eq_addr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 132 "src/ops/cmp.ops"
     if (SREG(1) == CONST(2)->u.string) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19362,6 +19604,7 @@
 opcode_t *
 Parrot_eq_addr_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 132 "src/ops/cmp.ops"
     if (CONST(1)->u.string == CONST(2)->u.string) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19371,6 +19614,7 @@
 opcode_t *
 Parrot_eq_addr_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 138 "src/ops/cmp.ops"
     if (PREG(1) == PREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19380,6 +19624,7 @@
 opcode_t *
 Parrot_ne_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 172 "src/ops/cmp.ops"
     if (IREG(1) != IREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19389,6 +19634,7 @@
 opcode_t *
 Parrot_ne_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 172 "src/ops/cmp.ops"
     if (cur_opcode[1] != IREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19398,6 +19644,7 @@
 opcode_t *
 Parrot_ne_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 172 "src/ops/cmp.ops"
     if (IREG(1) != cur_opcode[2]) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19407,6 +19654,7 @@
 opcode_t *
 Parrot_ne_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 178 "src/ops/cmp.ops"
     if (NREG(1) != NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19416,6 +19664,7 @@
 opcode_t *
 Parrot_ne_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 178 "src/ops/cmp.ops"
     if (CONST(1)->u.number != NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19425,6 +19674,7 @@
 opcode_t *
 Parrot_ne_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 178 "src/ops/cmp.ops"
     if (NREG(1) != CONST(2)->u.number) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19434,6 +19684,7 @@
 opcode_t *
 Parrot_ne_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 184 "src/ops/cmp.ops"
     if (Parrot_str_not_equal(interp, SREG(1), SREG(2))) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19443,6 +19694,7 @@
 opcode_t *
 Parrot_ne_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 184 "src/ops/cmp.ops"
     if (Parrot_str_not_equal(interp, CONST(1)->u.string, SREG(2))) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19452,6 +19704,7 @@
 opcode_t *
 Parrot_ne_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 184 "src/ops/cmp.ops"
     if (Parrot_str_not_equal(interp, SREG(1), CONST(2)->u.string)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19461,6 +19714,7 @@
 opcode_t *
 Parrot_ne_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 190 "src/ops/cmp.ops"
     if (!VTABLE_is_equal(interp, PREG(1), PREG(2))) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19470,6 +19724,7 @@
 opcode_t *
 Parrot_ne_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 196 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
@@ -19485,6 +19740,7 @@
 opcode_t *
 Parrot_ne_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 196 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
@@ -19500,6 +19756,7 @@
 opcode_t *
 Parrot_ne_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 208 "src/ops/cmp.ops"
     if (VTABLE_get_number(interp, PREG(1)) != NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19509,6 +19766,7 @@
 opcode_t *
 Parrot_ne_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 208 "src/ops/cmp.ops"
     if (VTABLE_get_number(interp, PREG(1)) != CONST(2)->u.number) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19518,6 +19776,7 @@
 opcode_t *
 Parrot_ne_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 214 "src/ops/cmp.ops"
     if (Parrot_str_not_equal(interp, VTABLE_get_string(interp, PREG(1)), SREG(2))) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19527,6 +19786,7 @@
 opcode_t *
 Parrot_ne_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 214 "src/ops/cmp.ops"
     if (Parrot_str_not_equal(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19536,6 +19796,7 @@
 opcode_t *
 Parrot_ne_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 220 "src/ops/cmp.ops"
     if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) != 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19545,6 +19806,7 @@
 opcode_t *
 Parrot_ne_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 226 "src/ops/cmp.ops"
     if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) != 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19554,6 +19816,7 @@
 opcode_t *
 Parrot_ne_addr_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 232 "src/ops/cmp.ops"
     if (SREG(1) != SREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19563,6 +19826,7 @@
 opcode_t *
 Parrot_ne_addr_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 232 "src/ops/cmp.ops"
     if (CONST(1)->u.string != SREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19572,6 +19836,7 @@
 opcode_t *
 Parrot_ne_addr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 232 "src/ops/cmp.ops"
     if (SREG(1) != CONST(2)->u.string) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19581,6 +19846,7 @@
 opcode_t *
 Parrot_ne_addr_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 232 "src/ops/cmp.ops"
     if (CONST(1)->u.string != CONST(2)->u.string) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19590,6 +19856,7 @@
 opcode_t *
 Parrot_ne_addr_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 238 "src/ops/cmp.ops"
     if (PREG(1) != PREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19599,6 +19866,7 @@
 opcode_t *
 Parrot_lt_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 268 "src/ops/cmp.ops"
     if (IREG(1) < IREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19608,6 +19876,7 @@
 opcode_t *
 Parrot_lt_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 268 "src/ops/cmp.ops"
     if (cur_opcode[1] < IREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19617,6 +19886,7 @@
 opcode_t *
 Parrot_lt_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 268 "src/ops/cmp.ops"
     if (IREG(1) < cur_opcode[2]) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19626,6 +19896,7 @@
 opcode_t *
 Parrot_lt_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/cmp.ops"
     if (NREG(1) < NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19635,6 +19906,7 @@
 opcode_t *
 Parrot_lt_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/cmp.ops"
     if (CONST(1)->u.number < NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19644,6 +19916,7 @@
 opcode_t *
 Parrot_lt_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/cmp.ops"
     if (NREG(1) < CONST(2)->u.number) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19653,6 +19926,7 @@
 opcode_t *
 Parrot_lt_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 280 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, SREG(1), SREG(2)) < 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19662,6 +19936,7 @@
 opcode_t *
 Parrot_lt_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 280 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, CONST(1)->u.string, SREG(2)) < 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19671,6 +19946,7 @@
 opcode_t *
 Parrot_lt_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 280 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, SREG(1), CONST(2)->u.string) < 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19680,6 +19956,7 @@
 opcode_t *
 Parrot_lt_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 286 "src/ops/cmp.ops"
     if (VTABLE_cmp(interp, PREG(1), PREG(2)) < 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19689,6 +19966,7 @@
 opcode_t *
 Parrot_lt_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 292 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
@@ -19704,6 +19982,7 @@
 opcode_t *
 Parrot_lt_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 292 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
@@ -19719,6 +19998,7 @@
 opcode_t *
 Parrot_lt_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 304 "src/ops/cmp.ops"
     if (VTABLE_get_number(interp, PREG(1)) < NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19728,6 +20008,7 @@
 opcode_t *
 Parrot_lt_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 304 "src/ops/cmp.ops"
     if (VTABLE_get_number(interp, PREG(1)) < CONST(2)->u.number) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19737,6 +20018,7 @@
 opcode_t *
 Parrot_lt_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 310 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) < 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19746,6 +20028,7 @@
 opcode_t *
 Parrot_lt_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 310 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) < 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19755,6 +20038,7 @@
 opcode_t *
 Parrot_lt_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 316 "src/ops/cmp.ops"
     if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) < 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19764,6 +20048,7 @@
 opcode_t *
 Parrot_lt_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 322 "src/ops/cmp.ops"
     if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) < 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19773,6 +20058,7 @@
 opcode_t *
 Parrot_le_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 352 "src/ops/cmp.ops"
     if (IREG(1) <= IREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19782,6 +20068,7 @@
 opcode_t *
 Parrot_le_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 352 "src/ops/cmp.ops"
     if (cur_opcode[1] <= IREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19791,6 +20078,7 @@
 opcode_t *
 Parrot_le_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 352 "src/ops/cmp.ops"
     if (IREG(1) <= cur_opcode[2]) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19800,6 +20088,7 @@
 opcode_t *
 Parrot_le_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 358 "src/ops/cmp.ops"
     if (NREG(1) <= NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19809,6 +20098,7 @@
 opcode_t *
 Parrot_le_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 358 "src/ops/cmp.ops"
     if (CONST(1)->u.number <= NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19818,6 +20108,7 @@
 opcode_t *
 Parrot_le_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 358 "src/ops/cmp.ops"
     if (NREG(1) <= CONST(2)->u.number) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19827,6 +20118,7 @@
 opcode_t *
 Parrot_le_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 364 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, SREG(1), SREG(2)) <= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19836,6 +20128,7 @@
 opcode_t *
 Parrot_le_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 364 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, CONST(1)->u.string, SREG(2)) <= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19845,6 +20138,7 @@
 opcode_t *
 Parrot_le_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 364 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, SREG(1), CONST(2)->u.string) <= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19854,6 +20148,7 @@
 opcode_t *
 Parrot_le_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 370 "src/ops/cmp.ops"
     if (VTABLE_cmp(interp, PREG(1), PREG(2)) <= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19863,6 +20158,7 @@
 opcode_t *
 Parrot_le_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 376 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
@@ -19878,6 +20174,7 @@
 opcode_t *
 Parrot_le_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 376 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
@@ -19893,6 +20190,7 @@
 opcode_t *
 Parrot_le_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 388 "src/ops/cmp.ops"
     if (VTABLE_get_number(interp, PREG(1)) <= NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19902,6 +20200,7 @@
 opcode_t *
 Parrot_le_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 388 "src/ops/cmp.ops"
     if (VTABLE_get_number(interp, PREG(1)) <= CONST(2)->u.number) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19911,6 +20210,7 @@
 opcode_t *
 Parrot_le_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 394 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) <= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19920,6 +20220,7 @@
 opcode_t *
 Parrot_le_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 394 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) <= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19929,6 +20230,7 @@
 opcode_t *
 Parrot_le_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 400 "src/ops/cmp.ops"
     if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) <= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19938,6 +20240,7 @@
 opcode_t *
 Parrot_le_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 406 "src/ops/cmp.ops"
     if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) <= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19947,6 +20250,7 @@
 opcode_t *
 Parrot_gt_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 430 "src/ops/cmp.ops"
     if (VTABLE_cmp(interp, PREG(1), PREG(2)) > 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19956,6 +20260,7 @@
 opcode_t *
 Parrot_gt_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 436 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
@@ -19971,6 +20276,7 @@
 opcode_t *
 Parrot_gt_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 436 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
@@ -19986,6 +20292,7 @@
 opcode_t *
 Parrot_gt_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 448 "src/ops/cmp.ops"
     if (VTABLE_get_number(interp, PREG(1)) > NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -19995,6 +20302,7 @@
 opcode_t *
 Parrot_gt_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 448 "src/ops/cmp.ops"
     if (VTABLE_get_number(interp, PREG(1)) > CONST(2)->u.number) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20004,6 +20312,7 @@
 opcode_t *
 Parrot_gt_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 454 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) > 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20013,6 +20322,7 @@
 opcode_t *
 Parrot_gt_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 454 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) > 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20022,6 +20332,7 @@
 opcode_t *
 Parrot_gt_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 460 "src/ops/cmp.ops"
     if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) > 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20031,6 +20342,7 @@
 opcode_t *
 Parrot_gt_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 466 "src/ops/cmp.ops"
     if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) > 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20040,6 +20352,7 @@
 opcode_t *
 Parrot_ge_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 490 "src/ops/cmp.ops"
     if (VTABLE_cmp(interp, PREG(1), PREG(2)) >= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20049,6 +20362,7 @@
 opcode_t *
 Parrot_ge_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 496 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, IREG(2));
 
@@ -20064,6 +20378,7 @@
 opcode_t *
 Parrot_ge_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 496 "src/ops/cmp.ops"
     PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
 
@@ -20079,6 +20394,7 @@
 opcode_t *
 Parrot_ge_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 508 "src/ops/cmp.ops"
     if (VTABLE_get_number(interp, PREG(1)) >= NREG(2)) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20088,6 +20404,7 @@
 opcode_t *
 Parrot_ge_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 508 "src/ops/cmp.ops"
     if (VTABLE_get_number(interp, PREG(1)) >= CONST(2)->u.number) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20097,6 +20414,7 @@
 opcode_t *
 Parrot_ge_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 514 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) >= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20106,6 +20424,7 @@
 opcode_t *
 Parrot_ge_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 514 "src/ops/cmp.ops"
     if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) >= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20115,6 +20434,7 @@
 opcode_t *
 Parrot_ge_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 520 "src/ops/cmp.ops"
     if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) >= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20124,6 +20444,7 @@
 opcode_t *
 Parrot_ge_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 526 "src/ops/cmp.ops"
     if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) >= 0) {
         return (opcode_t *)cur_opcode + cur_opcode[3];
     }
@@ -20133,6 +20454,7 @@
 opcode_t *
 Parrot_if_null_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 544 "src/ops/cmp.ops"
     if (PMC_IS_NULL(PREG(1))) {
         return (opcode_t *)cur_opcode + cur_opcode[2];
     }
@@ -20142,6 +20464,7 @@
 opcode_t *
 Parrot_if_null_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 550 "src/ops/cmp.ops"
     if (STRING_IS_NULL(SREG(1))) {
         return (opcode_t *)cur_opcode + cur_opcode[2];
     }
@@ -20151,6 +20474,7 @@
 opcode_t *
 Parrot_unless_null_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 568 "src/ops/cmp.ops"
     if (!PMC_IS_NULL(PREG(1))) {
         return (opcode_t *)cur_opcode + cur_opcode[2];
     }
@@ -20160,6 +20484,7 @@
 opcode_t *
 Parrot_unless_null_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 574 "src/ops/cmp.ops"
     if (!STRING_IS_NULL(SREG(1))) {
         return (opcode_t *)cur_opcode + cur_opcode[2];
     }
@@ -20169,6 +20494,7 @@
 opcode_t *
 Parrot_cmp_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 615 "src/ops/cmp.ops"
     IREG(1) = IREG(2) < IREG(3) ? -1 :
          IREG(2) > IREG(3) ? +1 :
          0;
@@ -20178,6 +20504,7 @@
 opcode_t *
 Parrot_cmp_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 615 "src/ops/cmp.ops"
     IREG(1) = cur_opcode[2] < IREG(3) ? -1 :
          cur_opcode[2] > IREG(3) ? +1 :
          0;
@@ -20187,6 +20514,7 @@
 opcode_t *
 Parrot_cmp_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 615 "src/ops/cmp.ops"
     IREG(1) = IREG(2) < cur_opcode[3] ? -1 :
          IREG(2) > cur_opcode[3] ? +1 :
          0;
@@ -20196,6 +20524,7 @@
 opcode_t *
 Parrot_cmp_i_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 621 "src/ops/cmp.ops"
     IREG(1) = NREG(2) < NREG(3) ? -1 :
          NREG(2) > NREG(3) ? +1 :
          0;
@@ -20205,6 +20534,7 @@
 opcode_t *
 Parrot_cmp_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 621 "src/ops/cmp.ops"
     IREG(1) = CONST(2)->u.number < NREG(3) ? -1 :
          CONST(2)->u.number > NREG(3) ? +1 :
          0;
@@ -20214,6 +20544,7 @@
 opcode_t *
 Parrot_cmp_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 621 "src/ops/cmp.ops"
     IREG(1) = NREG(2) < CONST(3)->u.number ? -1 :
          NREG(2) > CONST(3)->u.number ? +1 :
          0;
@@ -20223,6 +20554,7 @@
 opcode_t *
 Parrot_cmp_i_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 627 "src/ops/cmp.ops"
     IREG(1) = Parrot_str_compare(interp, SREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20230,6 +20562,7 @@
 opcode_t *
 Parrot_cmp_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 627 "src/ops/cmp.ops"
     IREG(1) = Parrot_str_compare(interp, CONST(2)->u.string, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20237,6 +20570,7 @@
 opcode_t *
 Parrot_cmp_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 627 "src/ops/cmp.ops"
     IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20244,6 +20578,7 @@
 opcode_t *
 Parrot_cmp_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 631 "src/ops/cmp.ops"
     IREG(1) = VTABLE_cmp(interp, PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20251,6 +20586,7 @@
 opcode_t *
 Parrot_cmp_i_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 635 "src/ops/cmp.ops"
     const INTVAL l = VTABLE_get_integer(interp, PREG(2));
     IREG(1) = l < IREG(3) ? -1 :
          l > IREG(3) ? +1 :
@@ -20261,6 +20597,7 @@
 opcode_t *
 Parrot_cmp_i_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 635 "src/ops/cmp.ops"
     const INTVAL l = VTABLE_get_integer(interp, PREG(2));
     IREG(1) = l < cur_opcode[3] ? -1 :
          l > cur_opcode[3] ? +1 :
@@ -20271,6 +20608,7 @@
 opcode_t *
 Parrot_cmp_i_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 642 "src/ops/cmp.ops"
     const FLOATVAL l = VTABLE_get_number(interp, PREG(2));
     IREG(1) = l < NREG(3) ? -1 :
          l > NREG(3) ? +1 :
@@ -20281,6 +20619,7 @@
 opcode_t *
 Parrot_cmp_i_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 642 "src/ops/cmp.ops"
     const FLOATVAL l = VTABLE_get_number(interp, PREG(2));
     IREG(1) = l < CONST(3)->u.number ? -1 :
          l > CONST(3)->u.number ? +1 :
@@ -20291,6 +20630,7 @@
 opcode_t *
 Parrot_cmp_i_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 649 "src/ops/cmp.ops"
     STRING* const l = VTABLE_get_string(interp, PREG(2));
     IREG(1) = Parrot_str_compare(interp, l, SREG(3));
 
@@ -20299,6 +20639,7 @@
 opcode_t *
 Parrot_cmp_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 649 "src/ops/cmp.ops"
     STRING* const l = VTABLE_get_string(interp, PREG(2));
     IREG(1) = Parrot_str_compare(interp, l, CONST(3)->u.string);
 
@@ -20307,6 +20648,7 @@
 opcode_t *
 Parrot_cmp_str_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 654 "src/ops/cmp.ops"
     IREG(1) = VTABLE_cmp_string(interp, PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20314,6 +20656,7 @@
 opcode_t *
 Parrot_cmp_num_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 658 "src/ops/cmp.ops"
     IREG(1) = VTABLE_cmp_num(interp, PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20321,6 +20664,7 @@
 opcode_t *
 Parrot_cmp_pmc_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 670 "src/ops/cmp.ops"
     PREG(1) = VTABLE_cmp_pmc(interp, PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20328,6 +20672,7 @@
 opcode_t *
 Parrot_issame_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 707 "src/ops/cmp.ops"
     if (PREG(2) == PREG(3))
         IREG(1) = 1;
     else
@@ -20338,6 +20683,7 @@
 opcode_t *
 Parrot_issame_i_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 714 "src/ops/cmp.ops"
     IREG(1) = SREG(2) == SREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20345,6 +20691,7 @@
 opcode_t *
 Parrot_issame_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 714 "src/ops/cmp.ops"
     IREG(1) = CONST(2)->u.string == SREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20352,6 +20699,7 @@
 opcode_t *
 Parrot_issame_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 714 "src/ops/cmp.ops"
     IREG(1) = SREG(2) == CONST(3)->u.string;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20359,6 +20707,7 @@
 opcode_t *
 Parrot_issame_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 714 "src/ops/cmp.ops"
     IREG(1) = CONST(2)->u.string == CONST(3)->u.string;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20366,6 +20715,7 @@
 opcode_t *
 Parrot_isntsame_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 718 "src/ops/cmp.ops"
     if (PREG(2) == PREG(3))
         IREG(1) = 0;
     else
@@ -20376,6 +20726,7 @@
 opcode_t *
 Parrot_isntsame_i_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 725 "src/ops/cmp.ops"
     IREG(1) = SREG(2) != SREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20383,6 +20734,7 @@
 opcode_t *
 Parrot_isntsame_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 725 "src/ops/cmp.ops"
     IREG(1) = CONST(2)->u.string != SREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20390,6 +20742,7 @@
 opcode_t *
 Parrot_isntsame_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 725 "src/ops/cmp.ops"
     IREG(1) = SREG(2) != CONST(3)->u.string;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20397,6 +20750,7 @@
 opcode_t *
 Parrot_isntsame_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 725 "src/ops/cmp.ops"
     IREG(1) = CONST(2)->u.string != CONST(3)->u.string;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20404,6 +20758,7 @@
 opcode_t *
 Parrot_istrue_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 729 "src/ops/cmp.ops"
     IREG(1) = VTABLE_get_bool(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20411,6 +20766,7 @@
 opcode_t *
 Parrot_isfalse_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 733 "src/ops/cmp.ops"
     IREG(1) = !VTABLE_get_bool(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20418,6 +20774,7 @@
 opcode_t *
 Parrot_isnull_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 737 "src/ops/cmp.ops"
     IREG(1) = PMC_IS_NULL(PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20425,6 +20782,7 @@
 opcode_t *
 Parrot_isnull_i_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 737 "src/ops/cmp.ops"
     IREG(1) = PMC_IS_NULL(CONST(2)->u.key);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20432,6 +20790,7 @@
 opcode_t *
 Parrot_isnull_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 741 "src/ops/cmp.ops"
     IREG(1) = STRING_IS_NULL(SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20439,6 +20798,7 @@
 opcode_t *
 Parrot_isnull_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 741 "src/ops/cmp.ops"
     IREG(1) = STRING_IS_NULL(CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20446,6 +20806,7 @@
 opcode_t *
 Parrot_isgt_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 759 "src/ops/cmp.ops"
     IREG(1) = (VTABLE_cmp(interp, PREG(2), PREG(3)) > 0);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20453,6 +20814,7 @@
 opcode_t *
 Parrot_isge_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 777 "src/ops/cmp.ops"
     IREG(1) = (VTABLE_cmp(interp, PREG(2), PREG(3)) >= 0);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20460,6 +20822,7 @@
 opcode_t *
 Parrot_isle_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 793 "src/ops/cmp.ops"
     IREG(1) = IREG(2) <= IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20467,6 +20830,7 @@
 opcode_t *
 Parrot_isle_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 793 "src/ops/cmp.ops"
     IREG(1) = cur_opcode[2] <= IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20474,6 +20838,7 @@
 opcode_t *
 Parrot_isle_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 793 "src/ops/cmp.ops"
     IREG(1) = IREG(2) <= cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20481,6 +20846,7 @@
 opcode_t *
 Parrot_isle_i_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 797 "src/ops/cmp.ops"
     IREG(1) = NREG(2) <= NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20488,6 +20854,7 @@
 opcode_t *
 Parrot_isle_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 797 "src/ops/cmp.ops"
     IREG(1) = CONST(2)->u.number <= NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20495,6 +20862,7 @@
 opcode_t *
 Parrot_isle_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 797 "src/ops/cmp.ops"
     IREG(1) = NREG(2) <= CONST(3)->u.number;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20502,6 +20870,7 @@
 opcode_t *
 Parrot_isle_i_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 801 "src/ops/cmp.ops"
     IREG(1) = Parrot_str_compare(interp, SREG(2), SREG(3)) <= 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20509,6 +20878,7 @@
 opcode_t *
 Parrot_isle_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 801 "src/ops/cmp.ops"
     IREG(1) = Parrot_str_compare(interp, CONST(2)->u.string, SREG(3)) <= 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20516,6 +20886,7 @@
 opcode_t *
 Parrot_isle_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 801 "src/ops/cmp.ops"
     IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3)->u.string) <= 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20523,6 +20894,7 @@
 opcode_t *
 Parrot_isle_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 805 "src/ops/cmp.ops"
     IREG(1) = (VTABLE_cmp(interp, PREG(2), PREG(3)) <= 0);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20530,6 +20902,7 @@
 opcode_t *
 Parrot_islt_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 821 "src/ops/cmp.ops"
     IREG(1) = (IREG(2) < IREG(3)) ? 1 : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20537,6 +20910,7 @@
 opcode_t *
 Parrot_islt_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 821 "src/ops/cmp.ops"
     IREG(1) = (cur_opcode[2] < IREG(3)) ? 1 : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20544,6 +20918,7 @@
 opcode_t *
 Parrot_islt_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 821 "src/ops/cmp.ops"
     IREG(1) = (IREG(2) < cur_opcode[3]) ? 1 : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20551,6 +20926,7 @@
 opcode_t *
 Parrot_islt_i_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 825 "src/ops/cmp.ops"
     IREG(1) = NREG(2) < NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20558,6 +20934,7 @@
 opcode_t *
 Parrot_islt_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 825 "src/ops/cmp.ops"
     IREG(1) = CONST(2)->u.number < NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20565,6 +20942,7 @@
 opcode_t *
 Parrot_islt_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 825 "src/ops/cmp.ops"
     IREG(1) = NREG(2) < CONST(3)->u.number;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20572,6 +20950,7 @@
 opcode_t *
 Parrot_islt_i_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 829 "src/ops/cmp.ops"
     IREG(1) = Parrot_str_compare(interp, SREG(2), SREG(3)) < 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20579,6 +20958,7 @@
 opcode_t *
 Parrot_islt_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 829 "src/ops/cmp.ops"
     IREG(1) = Parrot_str_compare(interp, CONST(2)->u.string, SREG(3)) < 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20586,6 +20966,7 @@
 opcode_t *
 Parrot_islt_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 829 "src/ops/cmp.ops"
     IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3)->u.string) < 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20593,6 +20974,7 @@
 opcode_t *
 Parrot_islt_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 833 "src/ops/cmp.ops"
     IREG(1) = (VTABLE_cmp(interp, PREG(2), PREG(3)) < 0);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20600,6 +20982,7 @@
 opcode_t *
 Parrot_iseq_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 849 "src/ops/cmp.ops"
     IREG(1) = (IREG(2) == IREG(3)) ? 1 : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20607,6 +20990,7 @@
 opcode_t *
 Parrot_iseq_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 849 "src/ops/cmp.ops"
     IREG(1) = (cur_opcode[2] == IREG(3)) ? 1 : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20614,6 +20998,7 @@
 opcode_t *
 Parrot_iseq_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 849 "src/ops/cmp.ops"
     IREG(1) = (IREG(2) == cur_opcode[3]) ? 1 : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20621,6 +21006,7 @@
 opcode_t *
 Parrot_iseq_i_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 853 "src/ops/cmp.ops"
     IREG(1) = NREG(2) == NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20628,6 +21014,7 @@
 opcode_t *
 Parrot_iseq_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 853 "src/ops/cmp.ops"
     IREG(1) = CONST(2)->u.number == NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20635,6 +21022,7 @@
 opcode_t *
 Parrot_iseq_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 853 "src/ops/cmp.ops"
     IREG(1) = NREG(2) == CONST(3)->u.number;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20642,6 +21030,7 @@
 opcode_t *
 Parrot_iseq_i_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 857 "src/ops/cmp.ops"
     IREG(1) = (Parrot_str_equal(interp, SREG(2), SREG(3)) ? 1 : 0);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20649,6 +21038,7 @@
 opcode_t *
 Parrot_iseq_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 857 "src/ops/cmp.ops"
     IREG(1) = (Parrot_str_equal(interp, CONST(2)->u.string, SREG(3)) ? 1 : 0);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20656,6 +21046,7 @@
 opcode_t *
 Parrot_iseq_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 857 "src/ops/cmp.ops"
     IREG(1) = (Parrot_str_equal(interp, SREG(2), CONST(3)->u.string) ? 1 : 0);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20663,6 +21054,7 @@
 opcode_t *
 Parrot_iseq_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 861 "src/ops/cmp.ops"
     if (&PREG(2) == &PREG(3))
         IREG(1) = 1;
     else
@@ -20673,6 +21065,7 @@
 opcode_t *
 Parrot_isne_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 880 "src/ops/cmp.ops"
     IREG(1) = (IREG(2) == IREG(3)) ? 0 : 1;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20680,6 +21073,7 @@
 opcode_t *
 Parrot_isne_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 880 "src/ops/cmp.ops"
     IREG(1) = (cur_opcode[2] == IREG(3)) ? 0 : 1;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20687,6 +21081,7 @@
 opcode_t *
 Parrot_isne_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 880 "src/ops/cmp.ops"
     IREG(1) = (IREG(2) == cur_opcode[3]) ? 0 : 1;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20694,6 +21089,7 @@
 opcode_t *
 Parrot_isne_i_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 884 "src/ops/cmp.ops"
     IREG(1) = NREG(2) != NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20701,6 +21097,7 @@
 opcode_t *
 Parrot_isne_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 884 "src/ops/cmp.ops"
     IREG(1) = CONST(2)->u.number != NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20708,6 +21105,7 @@
 opcode_t *
 Parrot_isne_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 884 "src/ops/cmp.ops"
     IREG(1) = NREG(2) != CONST(3)->u.number;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20715,6 +21113,7 @@
 opcode_t *
 Parrot_isne_i_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 888 "src/ops/cmp.ops"
     IREG(1) = (Parrot_str_not_equal(interp, SREG(2), SREG(3)) ? 1 : 0);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20722,6 +21121,7 @@
 opcode_t *
 Parrot_isne_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 888 "src/ops/cmp.ops"
     IREG(1) = (Parrot_str_not_equal(interp, CONST(2)->u.string, SREG(3)) ? 1 : 0);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20729,6 +21129,7 @@
 opcode_t *
 Parrot_isne_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 888 "src/ops/cmp.ops"
     IREG(1) = (Parrot_str_not_equal(interp, SREG(2), CONST(3)->u.string) ? 1 : 0);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20736,6 +21137,7 @@
 opcode_t *
 Parrot_isne_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 892 "src/ops/cmp.ops"
     if (&PREG(2) == &PREG(3))
         IREG(1) = 0;
     else
@@ -20746,6 +21148,7 @@
 opcode_t *
 Parrot_and_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 924 "src/ops/cmp.ops"
     IREG(1) = IREG(2) ? IREG(3) : IREG(2);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20753,6 +21156,7 @@
 opcode_t *
 Parrot_and_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 924 "src/ops/cmp.ops"
     IREG(1) = cur_opcode[2] ? IREG(3) : cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20760,6 +21164,7 @@
 opcode_t *
 Parrot_and_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 924 "src/ops/cmp.ops"
     IREG(1) = IREG(2) ? cur_opcode[3] : IREG(2);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20767,6 +21172,7 @@
 opcode_t *
 Parrot_and_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 928 "src/ops/cmp.ops"
     PREG(1) = VTABLE_logical_and(interp, PREG(2), PREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20774,6 +21180,7 @@
 opcode_t *
 Parrot_not_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 946 "src/ops/cmp.ops"
     IREG(1) = ! IREG(1);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -20781,6 +21188,7 @@
 opcode_t *
 Parrot_not_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 950 "src/ops/cmp.ops"
     IREG(1) = ! IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20788,6 +21196,7 @@
 opcode_t *
 Parrot_not_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 954 "src/ops/cmp.ops"
     VTABLE_i_logical_not(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -20795,6 +21204,7 @@
 opcode_t *
 Parrot_not_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 958 "src/ops/cmp.ops"
     PREG(1) = VTABLE_logical_not(interp, PREG(2), PREG(1));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -20802,6 +21212,7 @@
 opcode_t *
 Parrot_or_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 972 "src/ops/cmp.ops"
     IREG(1) = IREG(2) ? IREG(2) : IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20809,6 +21220,7 @@
 opcode_t *
 Parrot_or_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 972 "src/ops/cmp.ops"
     IREG(1) = cur_opcode[2] ? cur_opcode[2] : IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20816,6 +21228,7 @@
 opcode_t *
 Parrot_or_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 972 "src/ops/cmp.ops"
     IREG(1) = IREG(2) ? IREG(2) : cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20823,6 +21236,7 @@
 opcode_t *
 Parrot_or_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 976 "src/ops/cmp.ops"
     PREG(1) = VTABLE_logical_or(interp, PREG(2), PREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20830,6 +21244,7 @@
 opcode_t *
 Parrot_xor_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 991 "src/ops/cmp.ops"
     IREG(1) = (IREG(2) && ! IREG(3)) ? IREG(2) : (IREG(3) && ! IREG(2)) ? IREG(3) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20837,6 +21252,7 @@
 opcode_t *
 Parrot_xor_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 991 "src/ops/cmp.ops"
     IREG(1) = (cur_opcode[2] && ! IREG(3)) ? cur_opcode[2] : (IREG(3) && ! cur_opcode[2]) ? IREG(3) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20844,6 +21260,7 @@
 opcode_t *
 Parrot_xor_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 991 "src/ops/cmp.ops"
     IREG(1) = (IREG(2) && ! cur_opcode[3]) ? IREG(2) : (cur_opcode[3] && ! IREG(2)) ? cur_opcode[3] : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20851,6 +21268,7 @@
 opcode_t *
 Parrot_xor_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 995 "src/ops/cmp.ops"
     PREG(1) = VTABLE_logical_xor(interp, PREG(2), PREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -20858,6 +21276,7 @@
 opcode_t *
 Parrot_debug_init(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 45 "src/ops/debug.ops"
     Parrot_debugger_init(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -20865,6 +21284,7 @@
 opcode_t *
 Parrot_debug_load_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 57 "src/ops/debug.ops"
     Parrot_debugger_load(interp, CONST(1)->u.string);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -20872,6 +21292,7 @@
 opcode_t *
 Parrot_debug_break(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 74 "src/ops/debug.ops"
     Parrot_debugger_break(interp, cur_opcode);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -20879,6 +21300,7 @@
 opcode_t *
 Parrot_debug_print(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 86 "src/ops/debug.ops"
     if (!interp->pdb) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 1,
             EXCEPTION_INVALID_OPERATION,
@@ -20898,6 +21320,7 @@
 opcode_t *
 Parrot_backtrace(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 108 "src/ops/debug.ops"
     PDB_backtrace(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -20905,6 +21328,7 @@
 opcode_t *
 Parrot_getline_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 120 "src/ops/debug.ops"
     Parrot_Context_info info;
     Parrot_Context_get_info(interp, CURRENT_CONTEXT(interp), &info);
     IREG(1) = info.line;
@@ -20914,6 +21338,7 @@
 opcode_t *
 Parrot_getfile_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 132 "src/ops/debug.ops"
     Parrot_Context_info info;
     Parrot_Context_get_info(interp, CURRENT_CONTEXT(interp), &info);
     SREG(1) = info.file;
@@ -20923,6 +21348,7 @@
 opcode_t *
 Parrot_close_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 43 "src/ops/io.ops"
     Parrot_io_close(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -20930,6 +21356,7 @@
 opcode_t *
 Parrot_fdopen_p_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/io.ops"
     PREG(1) = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)IREG(2), SREG(3));
     if (!PREG(1))
         PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
@@ -20939,6 +21366,7 @@
 opcode_t *
 Parrot_fdopen_p_ic_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/io.ops"
     PREG(1) = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)cur_opcode[2], SREG(3));
     if (!PREG(1))
         PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
@@ -20948,6 +21376,7 @@
 opcode_t *
 Parrot_fdopen_p_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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) = Parrot_pmc_new(interp, enum_class_Undef);
@@ -20957,6 +21386,7 @@
 opcode_t *
 Parrot_fdopen_p_ic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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) = Parrot_pmc_new(interp, enum_class_Undef);
@@ -20966,6 +21396,7 @@
 opcode_t *
 Parrot_getstdin_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/io.ops"
     PREG(1) = _PIO_STDIN(interp);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -20973,6 +21404,7 @@
 opcode_t *
 Parrot_getstdout_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 82 "src/ops/io.ops"
     PREG(1) = _PIO_STDOUT(interp);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -20980,6 +21412,7 @@
 opcode_t *
 Parrot_getstderr_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 86 "src/ops/io.ops"
     PREG(1) = _PIO_STDERR(interp);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -20987,6 +21420,7 @@
 opcode_t *
 Parrot_setstdin_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 109 "src/ops/io.ops"
     _PIO_STDIN(interp) = PREG(1);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -20994,6 +21428,7 @@
 opcode_t *
 Parrot_setstdout_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 113 "src/ops/io.ops"
     _PIO_STDOUT(interp) = PREG(1);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21001,6 +21436,7 @@
 opcode_t *
 Parrot_setstderr_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 117 "src/ops/io.ops"
     _PIO_STDERR(interp) = PREG(1);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21008,6 +21444,7 @@
 opcode_t *
 Parrot_open_p_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 142 "src/ops/io.ops"
     if (STRING_IS_NULL(SREG(2)) || STRING_IS_NULL(SREG(3))) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21023,6 +21460,7 @@
 opcode_t *
 Parrot_open_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 142 "src/ops/io.ops"
     if (STRING_IS_NULL(CONST(2)->u.string) || STRING_IS_NULL(SREG(3))) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21038,6 +21476,7 @@
 opcode_t *
 Parrot_open_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 142 "src/ops/io.ops"
     if (STRING_IS_NULL(SREG(2)) || STRING_IS_NULL(CONST(3)->u.string)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21053,6 +21492,7 @@
 opcode_t *
 Parrot_open_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 142 "src/ops/io.ops"
     if (STRING_IS_NULL(CONST(2)->u.string) || STRING_IS_NULL(CONST(3)->u.string)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21068,6 +21508,7 @@
 opcode_t *
 Parrot_open_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 154 "src/ops/io.ops"
     if (STRING_IS_NULL(SREG(2))) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21083,6 +21524,7 @@
 opcode_t *
 Parrot_open_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 154 "src/ops/io.ops"
     if (STRING_IS_NULL(CONST(2)->u.string)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21098,6 +21540,7 @@
 opcode_t *
 Parrot_print_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 180 "src/ops/io.ops"
     Parrot_io_printf(interp, INTVAL_FMT, (INTVAL)IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21105,6 +21548,7 @@
 opcode_t *
 Parrot_print_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 180 "src/ops/io.ops"
     Parrot_io_printf(interp, INTVAL_FMT, (INTVAL)cur_opcode[1]);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21112,6 +21556,7 @@
 opcode_t *
 Parrot_print_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 184 "src/ops/io.ops"
 #ifdef PARROT_HAS_NEGATIVE_ZERO
     Parrot_io_printf(interp, FLOATVAL_FMT, NREG(1));
 #else
@@ -21129,6 +21574,7 @@
 opcode_t *
 Parrot_print_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 184 "src/ops/io.ops"
 #ifdef PARROT_HAS_NEGATIVE_ZERO
     Parrot_io_printf(interp, FLOATVAL_FMT, CONST(1)->u.number);
 #else
@@ -21146,6 +21592,7 @@
 opcode_t *
 Parrot_print_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 198 "src/ops/io.ops"
     STRING * const s = SREG(1);
     if (s && Parrot_str_byte_length(interp, s))
         Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
@@ -21155,6 +21602,7 @@
 opcode_t *
 Parrot_print_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 198 "src/ops/io.ops"
     STRING * const s = CONST(1)->u.string;
     if (s && Parrot_str_byte_length(interp, s))
         Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
@@ -21164,6 +21612,7 @@
 opcode_t *
 Parrot_print_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 204 "src/ops/io.ops"
     PMC * const p = PREG(1);
     STRING * const s = (VTABLE_get_string(interp, p));
     if (s)
@@ -21174,6 +21623,7 @@
 opcode_t *
 Parrot_say_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 223 "src/ops/io.ops"
     Parrot_io_printf(interp, INTVAL_FMT "\n", (INTVAL)IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21181,6 +21631,7 @@
 opcode_t *
 Parrot_say_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 223 "src/ops/io.ops"
     Parrot_io_printf(interp, INTVAL_FMT "\n", (INTVAL)cur_opcode[1]);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21188,6 +21639,7 @@
 opcode_t *
 Parrot_say_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 227 "src/ops/io.ops"
 #ifdef PARROT_HAS_NEGATIVE_ZERO
     Parrot_io_printf(interp, FLOATVAL_FMT "\n", NREG(1));
 #else
@@ -21205,6 +21657,7 @@
 opcode_t *
 Parrot_say_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 227 "src/ops/io.ops"
 #ifdef PARROT_HAS_NEGATIVE_ZERO
     Parrot_io_printf(interp, FLOATVAL_FMT "\n", CONST(1)->u.number);
 #else
@@ -21222,6 +21675,7 @@
 opcode_t *
 Parrot_say_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/io.ops"
     STRING * const s = SREG(1);
     if (s && Parrot_str_byte_length(interp, s))
         Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
@@ -21232,6 +21686,7 @@
 opcode_t *
 Parrot_say_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/io.ops"
     STRING * const s = CONST(1)->u.string;
     if (s && Parrot_str_byte_length(interp, s))
         Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
@@ -21242,6 +21697,7 @@
 opcode_t *
 Parrot_say_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 248 "src/ops/io.ops"
     PMC * const p = PREG(1);
 
     if (PMC_IS_NULL(p)) {
@@ -21262,6 +21718,7 @@
 opcode_t *
 Parrot_printerr_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/io.ops"
     Parrot_io_eprintf(interp, INTVAL_FMT, IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21269,6 +21726,7 @@
 opcode_t *
 Parrot_printerr_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/io.ops"
     Parrot_io_eprintf(interp, INTVAL_FMT, cur_opcode[1]);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21276,6 +21734,7 @@
 opcode_t *
 Parrot_printerr_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 286 "src/ops/io.ops"
     Parrot_io_eprintf(interp, FLOATVAL_FMT, NREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21283,6 +21742,7 @@
 opcode_t *
 Parrot_printerr_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 286 "src/ops/io.ops"
     Parrot_io_eprintf(interp, FLOATVAL_FMT, CONST(1)->u.number);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21290,6 +21750,7 @@
 opcode_t *
 Parrot_printerr_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 290 "src/ops/io.ops"
     STRING * const s = SREG(1);
     if (s && Parrot_str_byte_length(interp, s))
         Parrot_io_putps(interp, _PIO_STDERR(interp), s);
@@ -21299,6 +21760,7 @@
 opcode_t *
 Parrot_printerr_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 290 "src/ops/io.ops"
     STRING * const s = CONST(1)->u.string;
     if (s && Parrot_str_byte_length(interp, s))
         Parrot_io_putps(interp, _PIO_STDERR(interp), s);
@@ -21308,6 +21770,7 @@
 opcode_t *
 Parrot_printerr_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/io.ops"
     PMC * const p = PREG(1);
     STRING * const s = (VTABLE_get_string(interp, p));
     if (s)
@@ -21318,6 +21781,7 @@
 opcode_t *
 Parrot_print_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/io.ops"
     if (PREG(1)) {
         STRING * const s = Parrot_str_from_int(interp, IREG(2));
         Parrot_io_putps(interp, PREG(1), s);
@@ -21328,6 +21792,7 @@
 opcode_t *
 Parrot_print_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/io.ops"
     if (PREG(1)) {
         STRING * const s = Parrot_str_from_int(interp, cur_opcode[2]);
         Parrot_io_putps(interp, PREG(1), s);
@@ -21338,6 +21803,7 @@
 opcode_t *
 Parrot_print_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 324 "src/ops/io.ops"
     if (PREG(1)) {
         STRING * const s = Parrot_sprintf_c(interp, FLOATVAL_FMT, NREG(2));
         Parrot_io_putps(interp, PREG(1), s);
@@ -21348,6 +21814,7 @@
 opcode_t *
 Parrot_print_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 324 "src/ops/io.ops"
     if (PREG(1)) {
         STRING * const s = Parrot_sprintf_c(interp, FLOATVAL_FMT, CONST(2)->u.number);
         Parrot_io_putps(interp, PREG(1), s);
@@ -21358,6 +21825,7 @@
 opcode_t *
 Parrot_print_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 331 "src/ops/io.ops"
     if (SREG(2) && PREG(1)) {
         Parrot_io_putps(interp, PREG(1), SREG(2));
     }
@@ -21367,6 +21835,7 @@
 opcode_t *
 Parrot_print_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 331 "src/ops/io.ops"
     if (CONST(2)->u.string && PREG(1)) {
         Parrot_io_putps(interp, PREG(1), CONST(2)->u.string);
     }
@@ -21376,6 +21845,7 @@
 opcode_t *
 Parrot_print_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 337 "src/ops/io.ops"
     if (PREG(2) && PREG(1)) {
         STRING * const s = VTABLE_get_string(interp, PREG(2));
         Parrot_io_putps(interp, PREG(1), s);
@@ -21386,6 +21856,7 @@
 opcode_t *
 Parrot_read_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 356 "src/ops/io.ops"
     SREG(1) = Parrot_io_reads(interp, _PIO_STDIN(interp), (size_t)IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21393,6 +21864,7 @@
 opcode_t *
 Parrot_read_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 356 "src/ops/io.ops"
     SREG(1) = Parrot_io_reads(interp, _PIO_STDIN(interp), (size_t)cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21400,6 +21872,7 @@
 opcode_t *
 Parrot_read_s_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 360 "src/ops/io.ops"
     SREG(1) = Parrot_io_reads(interp, PREG(2), (size_t)IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21407,6 +21880,7 @@
 opcode_t *
 Parrot_read_s_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 360 "src/ops/io.ops"
     SREG(1) = Parrot_io_reads(interp, PREG(2), (size_t)cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21414,6 +21888,7 @@
 opcode_t *
 Parrot_readline_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 371 "src/ops/io.ops"
     SREG(1) = Parrot_io_readline(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21421,11 +21896,12 @@
 opcode_t *
 Parrot_peek_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 389 "src/ops/io.ops"
     STRING ** const s = &SREG(1);
 
     *s = NULL;
     if (Parrot_io_peek(interp, _PIO_STDIN(interp), s) < 0) {
-        SREG(1) = Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
+        SREG(1) = STRINGNULL;
     }
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21433,11 +21909,12 @@
 opcode_t *
 Parrot_peek_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 398 "src/ops/io.ops"
     STRING ** const s = &SREG(1);
 
     *s = NULL;
     if (Parrot_io_peek(interp, PREG(2), s) < 0) {
-        SREG(1) = Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
+        SREG(1) = STRINGNULL;
     }
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21445,6 +21922,7 @@
 opcode_t *
 Parrot_stat_i_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/io.ops"
     IREG(1) = Parrot_stat_info_intval(interp, SREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21452,6 +21930,7 @@
 opcode_t *
 Parrot_stat_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/io.ops"
     IREG(1) = Parrot_stat_info_intval(interp, CONST(2)->u.string, IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21459,6 +21938,7 @@
 opcode_t *
 Parrot_stat_i_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/io.ops"
     IREG(1) = Parrot_stat_info_intval(interp, SREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21466,6 +21946,7 @@
 opcode_t *
 Parrot_stat_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/io.ops"
     IREG(1) = Parrot_stat_info_intval(interp, CONST(2)->u.string, cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21473,6 +21954,7 @@
 opcode_t *
 Parrot_stat_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "src/ops/io.ops"
     IREG(1) = Parrot_fstat_info_intval(interp, IREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21480,6 +21962,7 @@
 opcode_t *
 Parrot_stat_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "src/ops/io.ops"
     IREG(1) = Parrot_fstat_info_intval(interp, cur_opcode[2], IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21487,6 +21970,7 @@
 opcode_t *
 Parrot_stat_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "src/ops/io.ops"
     IREG(1) = Parrot_fstat_info_intval(interp, IREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21494,6 +21978,7 @@
 opcode_t *
 Parrot_stat_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "src/ops/io.ops"
     IREG(1) = Parrot_fstat_info_intval(interp, cur_opcode[2], cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21501,6 +21986,7 @@
 opcode_t *
 Parrot_seek_p_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 465 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset(IREG(2)), IREG(3)) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21515,6 +22001,7 @@
 opcode_t *
 Parrot_seek_p_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 465 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset(cur_opcode[2]), IREG(3)) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21529,6 +22016,7 @@
 opcode_t *
 Parrot_seek_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 465 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset(IREG(2)), cur_opcode[3]) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21543,6 +22031,7 @@
 opcode_t *
 Parrot_seek_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 465 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset(cur_opcode[2]), cur_opcode[3]) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21557,6 +22046,7 @@
 opcode_t *
 Parrot_seek_p_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(IREG(2), IREG(3)), IREG(4)) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21571,6 +22061,7 @@
 opcode_t *
 Parrot_seek_p_ic_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(cur_opcode[2], IREG(3)), IREG(4)) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21585,6 +22076,7 @@
 opcode_t *
 Parrot_seek_p_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(IREG(2), cur_opcode[3]), IREG(4)) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21599,6 +22091,7 @@
 opcode_t *
 Parrot_seek_p_ic_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(cur_opcode[2], cur_opcode[3]), IREG(4)) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21613,6 +22106,7 @@
 opcode_t *
 Parrot_seek_p_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(IREG(2), IREG(3)), cur_opcode[4]) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21627,6 +22121,7 @@
 opcode_t *
 Parrot_seek_p_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(cur_opcode[2], IREG(3)), cur_opcode[4]) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21641,6 +22136,7 @@
 opcode_t *
 Parrot_seek_p_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(IREG(2), cur_opcode[3]), cur_opcode[4]) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21655,6 +22151,7 @@
 opcode_t *
 Parrot_seek_p_ic_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
     if (PREG(1)) {
         if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(cur_opcode[2], cur_opcode[3]), cur_opcode[4]) < 0) {
             opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21669,6 +22166,7 @@
 opcode_t *
 Parrot_tell_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 502 "src/ops/io.ops"
     if (PREG(2))
         IREG(1) = (INTVAL)Parrot_io_tell(interp, PREG(2));
 
@@ -21677,6 +22175,7 @@
 opcode_t *
 Parrot_tell_i_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 507 "src/ops/io.ops"
     if (PREG(3)) {
         PIOOFF_T pos;
         pos = Parrot_io_tell(interp, PREG(3));
@@ -21689,6 +22188,7 @@
 opcode_t *
 Parrot_abs_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 47 "src/ops/math.ops"
     IREG(1) = abs(IREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21696,6 +22196,7 @@
 opcode_t *
 Parrot_abs_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 51 "src/ops/math.ops"
     NREG(1) = fabs(NREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21703,6 +22204,7 @@
 opcode_t *
 Parrot_abs_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/math.ops"
     if (IREG(2) < 0)
         IREG(1) = - (INTVAL)IREG(2);
     else
@@ -21713,6 +22215,7 @@
 opcode_t *
 Parrot_abs_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 62 "src/ops/math.ops"
     if (NREG(2) < 0)
         NREG(1) = - (FLOATVAL)NREG(2);
     else
@@ -21723,6 +22226,7 @@
 opcode_t *
 Parrot_abs_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/math.ops"
     VTABLE_i_absolute(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -21730,6 +22234,7 @@
 opcode_t *
 Parrot_abs_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 73 "src/ops/math.ops"
     PREG(1) = VTABLE_absolute(interp, PREG(2), PREG(1));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21737,6 +22242,7 @@
 opcode_t *
 Parrot_add_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 105 "src/ops/math.ops"
     IREG(1) += IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21744,6 +22250,7 @@
 opcode_t *
 Parrot_add_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 105 "src/ops/math.ops"
     IREG(1) += cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21751,6 +22258,7 @@
 opcode_t *
 Parrot_add_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 109 "src/ops/math.ops"
     NREG(1) += NREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21758,6 +22266,7 @@
 opcode_t *
 Parrot_add_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 109 "src/ops/math.ops"
     NREG(1) += CONST(2)->u.number;
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21765,6 +22274,7 @@
 opcode_t *
 Parrot_add_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 113 "src/ops/math.ops"
     VTABLE_i_add(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21772,6 +22282,7 @@
 opcode_t *
 Parrot_add_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 117 "src/ops/math.ops"
     VTABLE_i_add_int(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21779,6 +22290,7 @@
 opcode_t *
 Parrot_add_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 117 "src/ops/math.ops"
     VTABLE_i_add_int(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21786,6 +22298,7 @@
 opcode_t *
 Parrot_add_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 121 "src/ops/math.ops"
     VTABLE_i_add_float(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21793,6 +22306,7 @@
 opcode_t *
 Parrot_add_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 121 "src/ops/math.ops"
     VTABLE_i_add_float(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -21800,6 +22314,7 @@
 opcode_t *
 Parrot_add_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 125 "src/ops/math.ops"
     IREG(1) = IREG(2) + IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21807,6 +22322,7 @@
 opcode_t *
 Parrot_add_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 125 "src/ops/math.ops"
     IREG(1) = cur_opcode[2] + IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21814,6 +22330,7 @@
 opcode_t *
 Parrot_add_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 125 "src/ops/math.ops"
     IREG(1) = IREG(2) + cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21821,6 +22338,7 @@
 opcode_t *
 Parrot_add_n_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 129 "src/ops/math.ops"
     NREG(1) = NREG(2) + NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21828,6 +22346,7 @@
 opcode_t *
 Parrot_add_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 129 "src/ops/math.ops"
     NREG(1) = CONST(2)->u.number + NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21835,6 +22354,7 @@
 opcode_t *
 Parrot_add_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 129 "src/ops/math.ops"
     NREG(1) = NREG(2) + CONST(3)->u.number;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21842,6 +22362,7 @@
 opcode_t *
 Parrot_add_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 133 "src/ops/math.ops"
     PREG(1) = VTABLE_add(interp, PREG(2), PREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21849,6 +22370,7 @@
 opcode_t *
 Parrot_add_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/math.ops"
     PREG(1) = VTABLE_add_int(interp, PREG(2), IREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21856,6 +22378,7 @@
 opcode_t *
 Parrot_add_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/math.ops"
     PREG(1) = VTABLE_add_int(interp, PREG(2), cur_opcode[3], PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21863,6 +22386,7 @@
 opcode_t *
 Parrot_add_p_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 141 "src/ops/math.ops"
     PREG(1) = VTABLE_add_float(interp, PREG(2), NREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21870,6 +22394,7 @@
 opcode_t *
 Parrot_add_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 141 "src/ops/math.ops"
     PREG(1) = VTABLE_add_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -21877,6 +22402,7 @@
 opcode_t *
 Parrot_cmod_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 186 "src/ops/math.ops"
     INTVAL den = IREG(3);
     if (IREG(3) == 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21891,6 +22417,7 @@
 opcode_t *
 Parrot_cmod_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 186 "src/ops/math.ops"
     INTVAL den = IREG(3);
     if (IREG(3) == 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21905,6 +22432,7 @@
 opcode_t *
 Parrot_cmod_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 186 "src/ops/math.ops"
     INTVAL den = cur_opcode[3];
     if (cur_opcode[3] == 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21919,6 +22447,7 @@
 opcode_t *
 Parrot_cmod_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 197 "src/ops/math.ops"
     INTVAL result;
 
     if (IREG(3) == 0) {
@@ -21938,6 +22467,7 @@
 opcode_t *
 Parrot_cmod_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 197 "src/ops/math.ops"
     INTVAL result;
 
     if (cur_opcode[3] == 0) {
@@ -21957,6 +22487,7 @@
 opcode_t *
 Parrot_cmod_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 213 "src/ops/math.ops"
     INTVAL result;
     INTVAL value = VTABLE_get_integer(interp, PREG(3));
 
@@ -21977,6 +22508,7 @@
 opcode_t *
 Parrot_cmod_n_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 263 "src/ops/math.ops"
     FLOATVAL den = NREG(3);
     if (FLOAT_IS_ZERO(NREG(3))) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21991,6 +22523,7 @@
 opcode_t *
 Parrot_cmod_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 263 "src/ops/math.ops"
     FLOATVAL den = NREG(3);
     if (FLOAT_IS_ZERO(NREG(3))) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22005,6 +22538,7 @@
 opcode_t *
 Parrot_cmod_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 263 "src/ops/math.ops"
     FLOATVAL den = CONST(3)->u.number;
     if (FLOAT_IS_ZERO(CONST(3)->u.number)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22019,6 +22553,7 @@
 opcode_t *
 Parrot_cmod_p_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/math.ops"
     FLOATVAL result;
     FLOATVAL value = NREG(3);
 
@@ -22039,6 +22574,7 @@
 opcode_t *
 Parrot_cmod_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/math.ops"
     FLOATVAL result;
     FLOATVAL value = CONST(3)->u.number;
 
@@ -22059,6 +22595,7 @@
 opcode_t *
 Parrot_dec_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 303 "src/ops/math.ops"
     IREG(1)--;
 
 return (opcode_t *)cur_opcode + 2;}
@@ -22066,6 +22603,7 @@
 opcode_t *
 Parrot_dec_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 307 "src/ops/math.ops"
     NREG(1)--;
 
 return (opcode_t *)cur_opcode + 2;}
@@ -22073,6 +22611,7 @@
 opcode_t *
 Parrot_dec_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 311 "src/ops/math.ops"
     VTABLE_decrement(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -22080,6 +22619,7 @@
 opcode_t *
 Parrot_div_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 345 "src/ops/math.ops"
     INTVAL den = IREG(2);
     if (den == 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22094,6 +22634,7 @@
 opcode_t *
 Parrot_div_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 345 "src/ops/math.ops"
     INTVAL den = cur_opcode[2];
     if (den == 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22108,6 +22649,7 @@
 opcode_t *
 Parrot_div_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 356 "src/ops/math.ops"
     FLOATVAL den = NREG(2);
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22122,6 +22664,7 @@
 opcode_t *
 Parrot_div_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 356 "src/ops/math.ops"
     FLOATVAL den = CONST(2)->u.number;
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22136,6 +22679,7 @@
 opcode_t *
 Parrot_div_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 367 "src/ops/math.ops"
     VTABLE_i_divide(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22143,6 +22687,7 @@
 opcode_t *
 Parrot_div_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 371 "src/ops/math.ops"
     VTABLE_i_divide_int(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22150,6 +22695,7 @@
 opcode_t *
 Parrot_div_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 371 "src/ops/math.ops"
     VTABLE_i_divide_int(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22157,6 +22703,7 @@
 opcode_t *
 Parrot_div_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 375 "src/ops/math.ops"
     VTABLE_i_divide_float(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22164,6 +22711,7 @@
 opcode_t *
 Parrot_div_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 375 "src/ops/math.ops"
     VTABLE_i_divide_float(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22171,6 +22719,7 @@
 opcode_t *
 Parrot_div_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/math.ops"
     INTVAL den = IREG(3);
     if (den == 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22185,6 +22734,7 @@
 opcode_t *
 Parrot_div_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/math.ops"
     INTVAL den = IREG(3);
     if (den == 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22199,6 +22749,7 @@
 opcode_t *
 Parrot_div_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/math.ops"
     INTVAL den = cur_opcode[3];
     if (den == 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22213,6 +22764,7 @@
 opcode_t *
 Parrot_div_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/math.ops"
     INTVAL den = cur_opcode[3];
     if (den == 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22227,6 +22779,7 @@
 opcode_t *
 Parrot_div_n_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 389 "src/ops/math.ops"
     FLOATVAL den = NREG(3);
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22241,6 +22794,7 @@
 opcode_t *
 Parrot_div_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 389 "src/ops/math.ops"
     FLOATVAL den = NREG(3);
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22255,6 +22809,7 @@
 opcode_t *
 Parrot_div_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 389 "src/ops/math.ops"
     FLOATVAL den = CONST(3)->u.number;
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22269,6 +22824,7 @@
 opcode_t *
 Parrot_div_n_nc_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 389 "src/ops/math.ops"
     FLOATVAL den = CONST(3)->u.number;
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22283,6 +22839,7 @@
 opcode_t *
 Parrot_div_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 400 "src/ops/math.ops"
     PREG(1) = VTABLE_divide(interp, PREG(2), PREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22290,6 +22847,7 @@
 opcode_t *
 Parrot_div_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 404 "src/ops/math.ops"
     PREG(1) = VTABLE_divide_int(interp, PREG(2), IREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22297,6 +22855,7 @@
 opcode_t *
 Parrot_div_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 404 "src/ops/math.ops"
     PREG(1) = VTABLE_divide_int(interp, PREG(2), cur_opcode[3], PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22304,6 +22863,7 @@
 opcode_t *
 Parrot_div_p_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 408 "src/ops/math.ops"
     PREG(1) = VTABLE_divide_float(interp, PREG(2), NREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22311,6 +22871,7 @@
 opcode_t *
 Parrot_div_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 408 "src/ops/math.ops"
     PREG(1) = VTABLE_divide_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22318,6 +22879,7 @@
 opcode_t *
 Parrot_fdiv_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 441 "src/ops/math.ops"
     INTVAL   den = IREG(2);
     FLOATVAL f;
 
@@ -22336,6 +22898,7 @@
 opcode_t *
 Parrot_fdiv_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 441 "src/ops/math.ops"
     INTVAL   den = cur_opcode[2];
     FLOATVAL f;
 
@@ -22354,6 +22917,7 @@
 opcode_t *
 Parrot_fdiv_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 456 "src/ops/math.ops"
     FLOATVAL den = NREG(2);
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22368,6 +22932,7 @@
 opcode_t *
 Parrot_fdiv_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 456 "src/ops/math.ops"
     FLOATVAL den = CONST(2)->u.number;
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22382,6 +22947,7 @@
 opcode_t *
 Parrot_fdiv_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 467 "src/ops/math.ops"
     VTABLE_i_floor_divide(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22389,6 +22955,7 @@
 opcode_t *
 Parrot_fdiv_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 471 "src/ops/math.ops"
     VTABLE_i_floor_divide_int(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22396,6 +22963,7 @@
 opcode_t *
 Parrot_fdiv_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 471 "src/ops/math.ops"
     VTABLE_i_floor_divide_int(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22403,6 +22971,7 @@
 opcode_t *
 Parrot_fdiv_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 475 "src/ops/math.ops"
     VTABLE_i_floor_divide_float(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22410,6 +22979,7 @@
 opcode_t *
 Parrot_fdiv_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 475 "src/ops/math.ops"
     VTABLE_i_floor_divide_float(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22417,6 +22987,7 @@
 opcode_t *
 Parrot_fdiv_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 479 "src/ops/math.ops"
     INTVAL   den = IREG(3);
     FLOATVAL f;
 
@@ -22435,6 +23006,7 @@
 opcode_t *
 Parrot_fdiv_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 479 "src/ops/math.ops"
     INTVAL   den = IREG(3);
     FLOATVAL f;
 
@@ -22453,6 +23025,7 @@
 opcode_t *
 Parrot_fdiv_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 479 "src/ops/math.ops"
     INTVAL   den = cur_opcode[3];
     FLOATVAL f;
 
@@ -22471,6 +23044,7 @@
 opcode_t *
 Parrot_fdiv_n_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 494 "src/ops/math.ops"
     FLOATVAL den = NREG(3);
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22485,6 +23059,7 @@
 opcode_t *
 Parrot_fdiv_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 494 "src/ops/math.ops"
     FLOATVAL den = NREG(3);
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22499,6 +23074,7 @@
 opcode_t *
 Parrot_fdiv_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 494 "src/ops/math.ops"
     FLOATVAL den = CONST(3)->u.number;
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22513,6 +23089,7 @@
 opcode_t *
 Parrot_fdiv_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 505 "src/ops/math.ops"
     PREG(1) = VTABLE_floor_divide(interp, PREG(2), PREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22520,6 +23097,7 @@
 opcode_t *
 Parrot_fdiv_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 509 "src/ops/math.ops"
     PREG(1) = VTABLE_floor_divide_int(interp, PREG(2), IREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22527,6 +23105,7 @@
 opcode_t *
 Parrot_fdiv_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 509 "src/ops/math.ops"
     PREG(1) = VTABLE_floor_divide_int(interp, PREG(2), cur_opcode[3], PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22534,6 +23113,7 @@
 opcode_t *
 Parrot_fdiv_p_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 513 "src/ops/math.ops"
     PREG(1) = VTABLE_floor_divide_float(interp, PREG(2), NREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22541,6 +23121,7 @@
 opcode_t *
 Parrot_fdiv_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 513 "src/ops/math.ops"
     PREG(1) = VTABLE_floor_divide_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22548,6 +23129,7 @@
 opcode_t *
 Parrot_ceil_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 531 "src/ops/math.ops"
     NREG(1) = ceil(NREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -22555,6 +23137,7 @@
 opcode_t *
 Parrot_ceil_i_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 535 "src/ops/math.ops"
     FLOATVAL f = ceil(NREG(2));
     IREG(1)         = (INTVAL)f;
 
@@ -22563,6 +23146,7 @@
 opcode_t *
 Parrot_ceil_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 540 "src/ops/math.ops"
     NREG(1) = ceil(NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22570,6 +23154,7 @@
 opcode_t *
 Parrot_floor_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 558 "src/ops/math.ops"
     NREG(1) = floor(NREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -22577,6 +23162,7 @@
 opcode_t *
 Parrot_floor_i_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 562 "src/ops/math.ops"
     FLOATVAL f = floor(NREG(2));
     IREG(1)         = (INTVAL)f;
 
@@ -22585,6 +23171,7 @@
 opcode_t *
 Parrot_floor_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 567 "src/ops/math.ops"
     NREG(1) = floor(NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22592,6 +23179,7 @@
 opcode_t *
 Parrot_inc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 583 "src/ops/math.ops"
     IREG(1)++;
 
 return (opcode_t *)cur_opcode + 2;}
@@ -22599,6 +23187,7 @@
 opcode_t *
 Parrot_inc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/math.ops"
     NREG(1)++;
 
 return (opcode_t *)cur_opcode + 2;}
@@ -22606,6 +23195,7 @@
 opcode_t *
 Parrot_inc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 591 "src/ops/math.ops"
     VTABLE_increment(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -22613,6 +23203,7 @@
 opcode_t *
 Parrot_mod_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 643 "src/ops/math.ops"
     IREG(1) = intval_mod(IREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22620,6 +23211,7 @@
 opcode_t *
 Parrot_mod_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 643 "src/ops/math.ops"
     IREG(1) = intval_mod(IREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22627,6 +23219,7 @@
 opcode_t *
 Parrot_mod_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 647 "src/ops/math.ops"
     NREG(1) = floatval_mod(NREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22634,6 +23227,7 @@
 opcode_t *
 Parrot_mod_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 647 "src/ops/math.ops"
     NREG(1) = floatval_mod(NREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22641,6 +23235,7 @@
 opcode_t *
 Parrot_mod_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 651 "src/ops/math.ops"
     VTABLE_i_modulus(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22648,6 +23243,7 @@
 opcode_t *
 Parrot_mod_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 655 "src/ops/math.ops"
     VTABLE_i_modulus_int(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22655,6 +23251,7 @@
 opcode_t *
 Parrot_mod_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 655 "src/ops/math.ops"
     VTABLE_i_modulus_int(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22662,6 +23259,7 @@
 opcode_t *
 Parrot_mod_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 659 "src/ops/math.ops"
     VTABLE_i_modulus_float(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22669,6 +23267,7 @@
 opcode_t *
 Parrot_mod_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 659 "src/ops/math.ops"
     VTABLE_i_modulus_float(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22676,6 +23275,7 @@
 opcode_t *
 Parrot_mod_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 663 "src/ops/math.ops"
     IREG(1) = intval_mod(IREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22683,6 +23283,7 @@
 opcode_t *
 Parrot_mod_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 663 "src/ops/math.ops"
     IREG(1) = intval_mod(cur_opcode[2], IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22690,6 +23291,7 @@
 opcode_t *
 Parrot_mod_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 663 "src/ops/math.ops"
     IREG(1) = intval_mod(IREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22697,6 +23299,7 @@
 opcode_t *
 Parrot_mod_n_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 667 "src/ops/math.ops"
     NREG(1) = floatval_mod(NREG(2), NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22704,6 +23307,7 @@
 opcode_t *
 Parrot_mod_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 667 "src/ops/math.ops"
     NREG(1) = floatval_mod(CONST(2)->u.number, NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22711,6 +23315,7 @@
 opcode_t *
 Parrot_mod_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 667 "src/ops/math.ops"
     NREG(1) = floatval_mod(NREG(2), CONST(3)->u.number);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22718,6 +23323,7 @@
 opcode_t *
 Parrot_mod_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 671 "src/ops/math.ops"
     PREG(1) = VTABLE_modulus(interp, PREG(2), PREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22725,6 +23331,7 @@
 opcode_t *
 Parrot_mod_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 675 "src/ops/math.ops"
     PREG(1) = VTABLE_modulus_int(interp, PREG(2), IREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22732,6 +23339,7 @@
 opcode_t *
 Parrot_mod_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 675 "src/ops/math.ops"
     PREG(1) = VTABLE_modulus_int(interp, PREG(2), cur_opcode[3], PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22739,6 +23347,7 @@
 opcode_t *
 Parrot_mod_p_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 679 "src/ops/math.ops"
     PREG(1) = VTABLE_modulus_float(interp, PREG(2), NREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22746,6 +23355,7 @@
 opcode_t *
 Parrot_mod_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 679 "src/ops/math.ops"
     PREG(1) = VTABLE_modulus_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22753,6 +23363,7 @@
 opcode_t *
 Parrot_mul_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 711 "src/ops/math.ops"
     IREG(1) *= IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22760,6 +23371,7 @@
 opcode_t *
 Parrot_mul_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 711 "src/ops/math.ops"
     IREG(1) *= cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22767,6 +23379,7 @@
 opcode_t *
 Parrot_mul_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 715 "src/ops/math.ops"
     NREG(1) *= NREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22774,6 +23387,7 @@
 opcode_t *
 Parrot_mul_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 715 "src/ops/math.ops"
     NREG(1) *= CONST(2)->u.number;
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22781,6 +23395,7 @@
 opcode_t *
 Parrot_mul_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 719 "src/ops/math.ops"
     VTABLE_i_multiply(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22788,6 +23403,7 @@
 opcode_t *
 Parrot_mul_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 723 "src/ops/math.ops"
     VTABLE_i_multiply_int(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22795,6 +23411,7 @@
 opcode_t *
 Parrot_mul_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 723 "src/ops/math.ops"
     VTABLE_i_multiply_int(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22802,6 +23419,7 @@
 opcode_t *
 Parrot_mul_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 727 "src/ops/math.ops"
     VTABLE_i_multiply_float(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22809,6 +23427,7 @@
 opcode_t *
 Parrot_mul_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 727 "src/ops/math.ops"
     VTABLE_i_multiply_float(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22816,6 +23435,7 @@
 opcode_t *
 Parrot_mul_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 731 "src/ops/math.ops"
     IREG(1) = IREG(2) * IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22823,6 +23443,7 @@
 opcode_t *
 Parrot_mul_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 731 "src/ops/math.ops"
     IREG(1) = cur_opcode[2] * IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22830,6 +23451,7 @@
 opcode_t *
 Parrot_mul_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 731 "src/ops/math.ops"
     IREG(1) = IREG(2) * cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22837,6 +23459,7 @@
 opcode_t *
 Parrot_mul_n_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 735 "src/ops/math.ops"
     NREG(1) = NREG(2) * NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22844,6 +23467,7 @@
 opcode_t *
 Parrot_mul_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 735 "src/ops/math.ops"
     NREG(1) = CONST(2)->u.number * NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22851,6 +23475,7 @@
 opcode_t *
 Parrot_mul_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 735 "src/ops/math.ops"
     NREG(1) = NREG(2) * CONST(3)->u.number;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22858,6 +23483,7 @@
 opcode_t *
 Parrot_mul_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 739 "src/ops/math.ops"
     PREG(1) = VTABLE_multiply(interp, PREG(2), PREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22865,6 +23491,7 @@
 opcode_t *
 Parrot_mul_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 743 "src/ops/math.ops"
     PREG(1) = VTABLE_multiply_int(interp, PREG(2), IREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22872,6 +23499,7 @@
 opcode_t *
 Parrot_mul_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 743 "src/ops/math.ops"
     PREG(1) = VTABLE_multiply_int(interp, PREG(2), cur_opcode[3], PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22879,6 +23507,7 @@
 opcode_t *
 Parrot_mul_p_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 747 "src/ops/math.ops"
     PREG(1) = VTABLE_multiply_float(interp, PREG(2), NREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22886,6 +23515,7 @@
 opcode_t *
 Parrot_mul_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 747 "src/ops/math.ops"
     PREG(1) = VTABLE_multiply_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22893,6 +23523,7 @@
 opcode_t *
 Parrot_neg_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 771 "src/ops/math.ops"
     IREG(1) = - IREG(1);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -22900,6 +23531,7 @@
 opcode_t *
 Parrot_neg_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 775 "src/ops/math.ops"
     NREG(1) = - NREG(1);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -22907,6 +23539,7 @@
 opcode_t *
 Parrot_neg_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 779 "src/ops/math.ops"
     VTABLE_i_neg(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -22914,6 +23547,7 @@
 opcode_t *
 Parrot_neg_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 783 "src/ops/math.ops"
     IREG(1) = - IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22921,6 +23555,7 @@
 opcode_t *
 Parrot_neg_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 787 "src/ops/math.ops"
     NREG(1) = - NREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22928,6 +23563,7 @@
 opcode_t *
 Parrot_neg_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 791 "src/ops/math.ops"
     PREG(1) = VTABLE_neg(interp, PREG(2), PREG(1));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -22935,6 +23571,7 @@
 opcode_t *
 Parrot_pow_n_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/math.ops"
     NREG(1) = pow((FLOATVAL)NREG(2), (FLOATVAL)NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22942,6 +23579,7 @@
 opcode_t *
 Parrot_pow_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/math.ops"
     NREG(1) = pow((FLOATVAL)CONST(2)->u.number, (FLOATVAL)NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22949,6 +23587,7 @@
 opcode_t *
 Parrot_pow_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/math.ops"
     NREG(1) = pow((FLOATVAL)NREG(2), (FLOATVAL)CONST(3)->u.number);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22956,6 +23595,7 @@
 opcode_t *
 Parrot_pow_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 815 "src/ops/math.ops"
     const FLOATVAL a = VTABLE_get_number(interp, PREG(2));
     const FLOATVAL b = VTABLE_get_number(interp, PREG(3));
     const FLOATVAL c = pow(a, b);
@@ -22970,6 +23610,7 @@
 opcode_t *
 Parrot_pow_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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);
@@ -22984,6 +23625,7 @@
 opcode_t *
 Parrot_pow_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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);
@@ -22998,6 +23640,7 @@
 opcode_t *
 Parrot_pow_p_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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)))
@@ -23011,6 +23654,7 @@
 opcode_t *
 Parrot_pow_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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)))
@@ -23024,6 +23668,7 @@
 opcode_t *
 Parrot_pow_n_n_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 847 "src/ops/math.ops"
     FLOATVAL n2 = NREG(2);
     FLOATVAL res = 1.0;
     INTVAL   e  = IREG(3);
@@ -23051,6 +23696,7 @@
 opcode_t *
 Parrot_pow_n_nc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 847 "src/ops/math.ops"
     FLOATVAL n2 = CONST(2)->u.number;
     FLOATVAL res = 1.0;
     INTVAL   e  = IREG(3);
@@ -23078,6 +23724,7 @@
 opcode_t *
 Parrot_pow_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 847 "src/ops/math.ops"
     FLOATVAL n2 = NREG(2);
     FLOATVAL res = 1.0;
     INTVAL   e  = cur_opcode[3];
@@ -23105,6 +23752,7 @@
 opcode_t *
 Parrot_pow_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 847 "src/ops/math.ops"
     FLOATVAL n2 = CONST(2)->u.number;
     FLOATVAL res = 1.0;
     INTVAL   e  = cur_opcode[3];
@@ -23132,6 +23780,7 @@
 opcode_t *
 Parrot_sub_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 899 "src/ops/math.ops"
     IREG(1) -= IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23139,6 +23788,7 @@
 opcode_t *
 Parrot_sub_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 899 "src/ops/math.ops"
     IREG(1) -= cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23146,6 +23796,7 @@
 opcode_t *
 Parrot_sub_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 903 "src/ops/math.ops"
     NREG(1) -= NREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23153,6 +23804,7 @@
 opcode_t *
 Parrot_sub_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 903 "src/ops/math.ops"
     NREG(1) -= CONST(2)->u.number;
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23160,6 +23812,7 @@
 opcode_t *
 Parrot_sub_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 907 "src/ops/math.ops"
     VTABLE_i_subtract(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23167,6 +23820,7 @@
 opcode_t *
 Parrot_sub_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 911 "src/ops/math.ops"
     VTABLE_i_subtract_int(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23174,6 +23828,7 @@
 opcode_t *
 Parrot_sub_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 911 "src/ops/math.ops"
     VTABLE_i_subtract_int(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23181,6 +23836,7 @@
 opcode_t *
 Parrot_sub_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 915 "src/ops/math.ops"
     VTABLE_i_subtract_float(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23188,6 +23844,7 @@
 opcode_t *
 Parrot_sub_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 915 "src/ops/math.ops"
     VTABLE_i_subtract_float(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23195,6 +23852,7 @@
 opcode_t *
 Parrot_sub_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 919 "src/ops/math.ops"
     IREG(1) = IREG(2) - IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23202,6 +23860,7 @@
 opcode_t *
 Parrot_sub_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 919 "src/ops/math.ops"
     IREG(1) = cur_opcode[2] - IREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23209,6 +23868,7 @@
 opcode_t *
 Parrot_sub_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 919 "src/ops/math.ops"
     IREG(1) = IREG(2) - cur_opcode[3];
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23216,6 +23876,7 @@
 opcode_t *
 Parrot_sub_n_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 923 "src/ops/math.ops"
     NREG(1) = NREG(2) - NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23223,6 +23884,7 @@
 opcode_t *
 Parrot_sub_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 923 "src/ops/math.ops"
     NREG(1) = CONST(2)->u.number - NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23230,6 +23892,7 @@
 opcode_t *
 Parrot_sub_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 923 "src/ops/math.ops"
     NREG(1) = NREG(2) - CONST(3)->u.number;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23237,6 +23900,7 @@
 opcode_t *
 Parrot_sub_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 927 "src/ops/math.ops"
     PREG(1) = VTABLE_subtract(interp, PREG(2), PREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23244,6 +23908,7 @@
 opcode_t *
 Parrot_sub_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 931 "src/ops/math.ops"
     PREG(1) = VTABLE_subtract_int(interp, PREG(2), IREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23251,6 +23916,7 @@
 opcode_t *
 Parrot_sub_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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;}
@@ -23258,6 +23924,7 @@
 opcode_t *
 Parrot_sub_p_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 935 "src/ops/math.ops"
     PREG(1) = VTABLE_subtract_float(interp, PREG(2), NREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23265,6 +23932,7 @@
 opcode_t *
 Parrot_sub_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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;}
@@ -23272,6 +23940,7 @@
 opcode_t *
 Parrot_sqrt_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 947 "src/ops/math.ops"
     NREG(1) = sqrt((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23279,6 +23948,7 @@
 opcode_t *
 Parrot_acos_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 976 "src/ops/math.ops"
     NREG(1) = acos((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23286,6 +23956,7 @@
 opcode_t *
 Parrot_asec_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 988 "src/ops/math.ops"
     NREG(1) = acos(((FLOATVAL)1) / ((FLOATVAL)NREG(2)));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23293,6 +23964,7 @@
 opcode_t *
 Parrot_asin_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1001 "src/ops/math.ops"
     NREG(1) = asin((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23300,6 +23972,7 @@
 opcode_t *
 Parrot_atan_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1019 "src/ops/math.ops"
     NREG(1) = atan((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23307,6 +23980,7 @@
 opcode_t *
 Parrot_atan_n_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1023 "src/ops/math.ops"
     NREG(1) = atan2((FLOATVAL)NREG(2), (FLOATVAL)NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23314,6 +23988,7 @@
 opcode_t *
 Parrot_atan_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1023 "src/ops/math.ops"
     NREG(1) = atan2((FLOATVAL)CONST(2)->u.number, (FLOATVAL)NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23321,6 +23996,7 @@
 opcode_t *
 Parrot_atan_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1023 "src/ops/math.ops"
     NREG(1) = atan2((FLOATVAL)NREG(2), (FLOATVAL)CONST(3)->u.number);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23328,6 +24004,7 @@
 opcode_t *
 Parrot_cos_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1035 "src/ops/math.ops"
     NREG(1) = cos((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23335,6 +24012,7 @@
 opcode_t *
 Parrot_cosh_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1047 "src/ops/math.ops"
     NREG(1) = cosh((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23342,6 +24020,7 @@
 opcode_t *
 Parrot_exp_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1060 "src/ops/math.ops"
     NREG(1) = exp((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23349,6 +24028,7 @@
 opcode_t *
 Parrot_ln_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1072 "src/ops/math.ops"
     NREG(1) = log((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23356,6 +24036,7 @@
 opcode_t *
 Parrot_log10_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1084 "src/ops/math.ops"
     NREG(1) = log10((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23363,6 +24044,7 @@
 opcode_t *
 Parrot_log2_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1096 "src/ops/math.ops"
     FLOATVAL temp = log((FLOATVAL)2.0);
     NREG(1) = log((FLOATVAL)NREG(2)) / temp;
 
@@ -23371,6 +24053,7 @@
 opcode_t *
 Parrot_sec_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1109 "src/ops/math.ops"
     NREG(1) = ((FLOATVAL)1) / cos((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23378,6 +24061,7 @@
 opcode_t *
 Parrot_sech_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1121 "src/ops/math.ops"
     NREG(1) = ((FLOATVAL)1) / cosh((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23385,6 +24069,7 @@
 opcode_t *
 Parrot_sin_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1133 "src/ops/math.ops"
     NREG(1) = sin((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23392,6 +24077,7 @@
 opcode_t *
 Parrot_sinh_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1145 "src/ops/math.ops"
     NREG(1) = sinh((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23399,6 +24085,7 @@
 opcode_t *
 Parrot_tan_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1157 "src/ops/math.ops"
     NREG(1) = tan((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23406,6 +24093,7 @@
 opcode_t *
 Parrot_tanh_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1169 "src/ops/math.ops"
     NREG(1) = tanh((FLOATVAL)NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23413,6 +24101,7 @@
 opcode_t *
 Parrot_gcd_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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);
@@ -23440,6 +24129,7 @@
 opcode_t *
 Parrot_gcd_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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);
@@ -23467,6 +24157,7 @@
 opcode_t *
 Parrot_gcd_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#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];
@@ -23494,6 +24185,7 @@
 opcode_t *
 Parrot_lcm_i_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1228 "src/ops/math.ops"
     INTVAL gcd = 0;
     INTVAL p = 0;
     INTVAL a = IREG(2) < 0 ? -IREG(2) : IREG(2);
@@ -23524,6 +24216,7 @@
 opcode_t *
 Parrot_lcm_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1228 "src/ops/math.ops"
     INTVAL gcd = 0;
     INTVAL p = 0;
     INTVAL a = cur_opcode[2] < 0 ? -cur_opcode[2] : cur_opcode[2];
@@ -23554,6 +24247,7 @@
 opcode_t *
 Parrot_lcm_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1228 "src/ops/math.ops"
     INTVAL gcd = 0;
     INTVAL p = 0;
     INTVAL a = IREG(2) < 0 ? -IREG(2) : IREG(2);
@@ -23584,6 +24278,7 @@
 opcode_t *
 Parrot_fact_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1265 "src/ops/math.ops"
     /* Coercing a negative to a UINT can get pretty ugly
      * in this situation. */
     INTVAL i = IREG(2);
@@ -23599,6 +24294,7 @@
 opcode_t *
 Parrot_fact_n_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1277 "src/ops/math.ops"
     /* Coercing a negative to a UINT can get pretty ugly
      * in this situation. */
     INTVAL i = IREG(2);
@@ -23614,6 +24310,7 @@
 opcode_t *
 Parrot_callmethodcc_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 50 "src/ops/object.ops"
     PMC      * const object     = PREG(1);
     STRING   * const meth       = SREG(2);
     opcode_t * const next       = cur_opcode + 3;
@@ -23649,6 +24346,7 @@
 opcode_t *
 Parrot_callmethodcc_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 50 "src/ops/object.ops"
     PMC      * const object     = PREG(1);
     STRING   * const meth       = CONST(2)->u.string;
     opcode_t * const next       = cur_opcode + 3;
@@ -23684,6 +24382,7 @@
 opcode_t *
 Parrot_callmethodcc_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 83 "src/ops/object.ops"
     opcode_t        *dest;
     opcode_t * const next  = cur_opcode + 3;
     PMC      *       signature  = Parrot_pcc_get_signature(interp,
@@ -23700,6 +24399,7 @@
 opcode_t *
 Parrot_callmethod_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 97 "src/ops/object.ops"
     PMC      * const object     = PREG(1);
     STRING   * const meth       = SREG(2);
     opcode_t * const next       = cur_opcode + 4;
@@ -23727,6 +24427,7 @@
 opcode_t *
 Parrot_callmethod_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 97 "src/ops/object.ops"
     PMC      * const object     = PREG(1);
     STRING   * const meth       = CONST(2)->u.string;
     opcode_t * const next       = cur_opcode + 4;
@@ -23754,6 +24455,7 @@
 opcode_t *
 Parrot_callmethod_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 122 "src/ops/object.ops"
     PMC      * const object     = PREG(1);
     PMC      * const method_pmc = PREG(2);
     opcode_t * const next       = cur_opcode + 4;
@@ -23772,6 +24474,7 @@
 opcode_t *
 Parrot_tailcallmethod_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 138 "src/ops/object.ops"
     opcode_t * const next       = cur_opcode + 3;
     PMC      * const object     = PREG(1);
     STRING   * const meth       = SREG(2);
@@ -23799,6 +24502,7 @@
 opcode_t *
 Parrot_tailcallmethod_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 138 "src/ops/object.ops"
     opcode_t * const next       = cur_opcode + 3;
     PMC      * const object     = PREG(1);
     STRING   * const meth       = CONST(2)->u.string;
@@ -23826,6 +24530,7 @@
 opcode_t *
 Parrot_tailcallmethod_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 163 "src/ops/object.ops"
     opcode_t * const next       = cur_opcode + 3;
     PMC      * const object     = PREG(1);
     PMC      * const method_pmc = PREG(2);
@@ -23846,6 +24551,7 @@
 opcode_t *
 Parrot_addmethod_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/object.ops"
     VTABLE_add_method(interp, PREG(1), SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23853,6 +24559,7 @@
 opcode_t *
 Parrot_addmethod_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/object.ops"
     VTABLE_add_method(interp, PREG(1), CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23860,6 +24567,7 @@
 opcode_t *
 Parrot_can_i_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 199 "src/ops/object.ops"
     IREG(1) = VTABLE_can(interp, PREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23867,6 +24575,7 @@
 opcode_t *
 Parrot_can_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 199 "src/ops/object.ops"
     IREG(1) = VTABLE_can(interp, PREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23874,6 +24583,7 @@
 opcode_t *
 Parrot_does_i_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 211 "src/ops/object.ops"
     IREG(1) = SREG(3) ? VTABLE_does(interp, PREG(2), SREG(3)) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23881,6 +24591,7 @@
 opcode_t *
 Parrot_does_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 211 "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;}
@@ -23888,6 +24599,7 @@
 opcode_t *
 Parrot_does_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 222 "src/ops/object.ops"
     IREG(1) = PREG(3) ? VTABLE_does_pmc(interp, PREG(2), PREG(3)) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23895,6 +24607,7 @@
 opcode_t *
 Parrot_does_i_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 222 "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;}
@@ -23902,6 +24615,7 @@
 opcode_t *
 Parrot_isa_i_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 235 "src/ops/object.ops"
     IREG(1) = SREG(3) ? VTABLE_isa(interp, PREG(2), SREG(3)) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23909,6 +24623,7 @@
 opcode_t *
 Parrot_isa_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 235 "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;}
@@ -23916,6 +24631,7 @@
 opcode_t *
 Parrot_isa_i_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 239 "src/ops/object.ops"
     IREG(1) = PREG(3) ? VTABLE_isa_pmc(interp, PREG(2), PREG(3)) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23923,6 +24639,7 @@
 opcode_t *
 Parrot_isa_i_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 239 "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;}
@@ -23930,6 +24647,7 @@
 opcode_t *
 Parrot_newclass_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 257 "src/ops/object.ops"
     PMC * const name = Parrot_pmc_new(interp, enum_class_String);
     VTABLE_set_string_native(interp, name, SREG(2));
     PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, name);
@@ -23939,6 +24657,7 @@
 opcode_t *
 Parrot_newclass_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 257 "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) = Parrot_pmc_new_init(interp, enum_class_Class, name);
@@ -23948,6 +24667,7 @@
 opcode_t *
 Parrot_newclass_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 263 "src/ops/object.ops"
     PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23955,6 +24675,7 @@
 opcode_t *
 Parrot_newclass_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 263 "src/ops/object.ops"
     PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(2)->u.key);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -23962,6 +24683,7 @@
 opcode_t *
 Parrot_subclass_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
     opcode_t * const next         = cur_opcode + 3;
 
@@ -23979,6 +24701,7 @@
 opcode_t *
 Parrot_subclass_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
     opcode_t * const next         = cur_opcode + 3;
 
@@ -23996,6 +24719,7 @@
 opcode_t *
 Parrot_subclass_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 294 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24013,6 +24737,7 @@
 opcode_t *
 Parrot_subclass_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 294 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24030,6 +24755,7 @@
 opcode_t *
 Parrot_subclass_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 294 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24047,6 +24773,7 @@
 opcode_t *
 Parrot_subclass_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 294 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24064,6 +24791,7 @@
 opcode_t *
 Parrot_subclass_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 309 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24081,6 +24809,7 @@
 opcode_t *
 Parrot_subclass_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 309 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24098,6 +24827,7 @@
 opcode_t *
 Parrot_subclass_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 309 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24115,6 +24845,7 @@
 opcode_t *
 Parrot_subclass_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 309 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24132,6 +24863,7 @@
 opcode_t *
 Parrot_subclass_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 337 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
     opcode_t * const next         = cur_opcode + 3;
 
@@ -24150,6 +24882,7 @@
 opcode_t *
 Parrot_subclass_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 337 "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;
 
@@ -24168,6 +24901,7 @@
 opcode_t *
 Parrot_subclass_p_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 353 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24186,6 +24920,7 @@
 opcode_t *
 Parrot_subclass_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 353 "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;
 
@@ -24204,6 +24939,7 @@
 opcode_t *
 Parrot_subclass_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 353 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24222,6 +24958,7 @@
 opcode_t *
 Parrot_subclass_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 353 "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;
 
@@ -24240,6 +24977,7 @@
 opcode_t *
 Parrot_subclass_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 369 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24258,6 +24996,7 @@
 opcode_t *
 Parrot_subclass_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 369 "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;
 
@@ -24276,6 +25015,7 @@
 opcode_t *
 Parrot_subclass_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 369 "src/ops/object.ops"
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
     opcode_t * const next         = cur_opcode + 4;
 
@@ -24294,6 +25034,7 @@
 opcode_t *
 Parrot_subclass_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 369 "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;
 
@@ -24312,6 +25053,7 @@
 opcode_t *
 Parrot_get_class_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 395 "src/ops/object.ops"
     PREG(1) = Parrot_oo_get_class_str(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24319,6 +25061,7 @@
 opcode_t *
 Parrot_get_class_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 395 "src/ops/object.ops"
     PREG(1) = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24326,6 +25069,7 @@
 opcode_t *
 Parrot_get_class_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 399 "src/ops/object.ops"
     PREG(1) = Parrot_oo_get_class(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24333,6 +25077,7 @@
 opcode_t *
 Parrot_get_class_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 399 "src/ops/object.ops"
     PREG(1) = Parrot_oo_get_class(interp, CONST(2)->u.key);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24340,6 +25085,7 @@
 opcode_t *
 Parrot_class_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 411 "src/ops/object.ops"
     PREG(1) = VTABLE_get_class(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24347,6 +25093,7 @@
 opcode_t *
 Parrot_addparent_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 424 "src/ops/object.ops"
     VTABLE_add_parent(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24354,6 +25101,7 @@
 opcode_t *
 Parrot_removeparent_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 434 "src/ops/object.ops"
     VTABLE_remove_parent(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24361,6 +25109,7 @@
 opcode_t *
 Parrot_addrole_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 444 "src/ops/object.ops"
     VTABLE_add_role(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24368,6 +25117,7 @@
 opcode_t *
 Parrot_addattribute_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 454 "src/ops/object.ops"
     STRING * const class_name  = string_from_literal(interp, "Class");
     STRING * const role_name   = string_from_literal(interp, "Role");
 
@@ -24385,6 +25135,7 @@
 opcode_t *
 Parrot_addattribute_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 454 "src/ops/object.ops"
     STRING * const class_name  = string_from_literal(interp, "Class");
     STRING * const role_name   = string_from_literal(interp, "Role");
 
@@ -24402,6 +25153,7 @@
 opcode_t *
 Parrot_removeattribute_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 474 "src/ops/object.ops"
     VTABLE_remove_attribute(interp, PREG(1), SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24409,6 +25161,7 @@
 opcode_t *
 Parrot_removeattribute_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 474 "src/ops/object.ops"
     VTABLE_remove_attribute(interp, PREG(1), CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24416,6 +25169,7 @@
 opcode_t *
 Parrot_getattribute_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 491 "src/ops/object.ops"
     PREG(1) = VTABLE_get_attr_str(interp, PREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -24423,6 +25177,7 @@
 opcode_t *
 Parrot_getattribute_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 491 "src/ops/object.ops"
     PREG(1) = VTABLE_get_attr_str(interp, PREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -24430,6 +25185,7 @@
 opcode_t *
 Parrot_getattribute_p_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 495 "src/ops/object.ops"
     PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), PREG(3), SREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24437,6 +25193,7 @@
 opcode_t *
 Parrot_getattribute_p_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 495 "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;}
@@ -24444,6 +25201,7 @@
 opcode_t *
 Parrot_getattribute_p_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 495 "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;}
@@ -24451,6 +25209,7 @@
 opcode_t *
 Parrot_getattribute_p_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 495 "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;}
@@ -24458,6 +25217,7 @@
 opcode_t *
 Parrot_setattribute_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 511 "src/ops/object.ops"
     VTABLE_set_attr_str(interp, PREG(1), SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -24465,6 +25225,7 @@
 opcode_t *
 Parrot_setattribute_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 511 "src/ops/object.ops"
     VTABLE_set_attr_str(interp, PREG(1), CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -24472,6 +25233,7 @@
 opcode_t *
 Parrot_setattribute_p_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "src/ops/object.ops"
     VTABLE_set_attr_keyed(interp, PREG(1), PREG(2), SREG(3), PREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24479,6 +25241,7 @@
 opcode_t *
 Parrot_setattribute_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "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;}
@@ -24486,6 +25249,7 @@
 opcode_t *
 Parrot_setattribute_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "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;}
@@ -24493,6 +25257,7 @@
 opcode_t *
 Parrot_setattribute_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "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;}
@@ -24500,6 +25265,7 @@
 opcode_t *
 Parrot_inspect_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 533 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24507,6 +25273,7 @@
 opcode_t *
 Parrot_inspect_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 533 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect(interp, CONST(2)->u.key);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24514,6 +25281,7 @@
 opcode_t *
 Parrot_inspect_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 537 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect_str(interp, PREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -24521,6 +25289,7 @@
 opcode_t *
 Parrot_inspect_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 537 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect_str(interp, CONST(2)->u.key, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -24528,6 +25297,7 @@
 opcode_t *
 Parrot_inspect_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 537 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect_str(interp, PREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -24535,6 +25305,7 @@
 opcode_t *
 Parrot_inspect_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 537 "src/ops/object.ops"
     PREG(1) = VTABLE_inspect_str(interp, CONST(2)->u.key, CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -24542,6 +25313,7 @@
 opcode_t *
 Parrot_new_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 53 "src/ops/pmc.ops"
     STRING * const name   = SREG(2);
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
@@ -24565,6 +25337,7 @@
 opcode_t *
 Parrot_new_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 53 "src/ops/pmc.ops"
     STRING * const name   = CONST(2)->u.string;
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
@@ -24588,6 +25361,7 @@
 opcode_t *
 Parrot_new_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 73 "src/ops/pmc.ops"
     STRING * const name   = SREG(2);
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
@@ -24611,6 +25385,7 @@
 opcode_t *
 Parrot_new_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 73 "src/ops/pmc.ops"
     STRING * const name   = CONST(2)->u.string;
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
@@ -24634,6 +25409,7 @@
 opcode_t *
 Parrot_new_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 73 "src/ops/pmc.ops"
     STRING * const name   = SREG(2);
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
@@ -24657,6 +25433,7 @@
 opcode_t *
 Parrot_new_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 73 "src/ops/pmc.ops"
     STRING * const name   = CONST(2)->u.string;
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
@@ -24680,6 +25457,7 @@
 opcode_t *
 Parrot_new_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 93 "src/ops/pmc.ops"
     PMC * const name_key = PREG(2);
     PMC * const _class   = Parrot_oo_get_class(interp, name_key);
 
@@ -24701,6 +25479,7 @@
 opcode_t *
 Parrot_new_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 93 "src/ops/pmc.ops"
     PMC * const name_key = CONST(2)->u.key;
     PMC * const _class   = Parrot_oo_get_class(interp, name_key);
 
@@ -24722,6 +25501,7 @@
 opcode_t *
 Parrot_new_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "src/ops/pmc.ops"
     PMC * const name_key = PREG(2);
     PMC * const _class   = Parrot_oo_get_class(interp, name_key);
 
@@ -24743,6 +25523,7 @@
 opcode_t *
 Parrot_new_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "src/ops/pmc.ops"
     PMC * const name_key = CONST(2)->u.key;
     PMC * const _class   = Parrot_oo_get_class(interp, name_key);
 
@@ -24764,6 +25545,7 @@
 opcode_t *
 Parrot_new_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "src/ops/pmc.ops"
     PMC * const name_key = PREG(2);
     PMC * const _class   = Parrot_oo_get_class(interp, name_key);
 
@@ -24785,6 +25567,7 @@
 opcode_t *
 Parrot_new_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "src/ops/pmc.ops"
     PMC * const name_key = CONST(2)->u.key;
     PMC * const _class   = Parrot_oo_get_class(interp, name_key);
 
@@ -24806,6 +25589,7 @@
 opcode_t *
 Parrot_root_new_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 144 "src/ops/pmc.ops"
     PMC * const key      = PREG(2);
     PMC * const root_ns  = interp->root_namespace;
     PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -24827,6 +25611,7 @@
 opcode_t *
 Parrot_root_new_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 144 "src/ops/pmc.ops"
     PMC * const key      = CONST(2)->u.key;
     PMC * const root_ns  = interp->root_namespace;
     PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -24848,6 +25633,7 @@
 opcode_t *
 Parrot_root_new_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 162 "src/ops/pmc.ops"
     PMC * const key      = PREG(2);
     PMC * const root_ns  = interp->root_namespace;
     PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -24869,6 +25655,7 @@
 opcode_t *
 Parrot_root_new_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 162 "src/ops/pmc.ops"
     PMC * const key      = CONST(2)->u.key;
     PMC * const root_ns  = interp->root_namespace;
     PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -24890,6 +25677,7 @@
 opcode_t *
 Parrot_root_new_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 162 "src/ops/pmc.ops"
     PMC * const key      = PREG(2);
     PMC * const root_ns  = interp->root_namespace;
     PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -24911,6 +25699,7 @@
 opcode_t *
 Parrot_root_new_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 162 "src/ops/pmc.ops"
     PMC * const key      = CONST(2)->u.key;
     PMC * const root_ns  = interp->root_namespace;
     PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -24932,6 +25721,7 @@
 opcode_t *
 Parrot_typeof_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 191 "src/ops/pmc.ops"
     SREG(1) = VTABLE_name(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24939,6 +25729,7 @@
 opcode_t *
 Parrot_typeof_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 195 "src/ops/pmc.ops"
     PREG(1) = VTABLE_get_class(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24946,6 +25737,7 @@
 opcode_t *
 Parrot_get_repr_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 207 "src/ops/pmc.ops"
     SREG(1) = VTABLE_get_repr(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24953,6 +25745,7 @@
 opcode_t *
 Parrot_find_method_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 234 "src/ops/pmc.ops"
     opcode_t * const resume = cur_opcode + 4;
     PREG(1) = VTABLE_find_method(interp, PREG(2), SREG(3));
     if (PMC_IS_NULL(PREG(1)) || !VTABLE_defined(interp, PREG(1))) {
@@ -24968,6 +25761,7 @@
 opcode_t *
 Parrot_find_method_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 234 "src/ops/pmc.ops"
     opcode_t * const resume = cur_opcode + 4;
     PREG(1) = VTABLE_find_method(interp, PREG(2), CONST(3)->u.string);
     if (PMC_IS_NULL(PREG(1)) || !VTABLE_defined(interp, PREG(1))) {
@@ -24983,6 +25777,7 @@
 opcode_t *
 Parrot_defined_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 266 "src/ops/pmc.ops"
     IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -24990,6 +25785,7 @@
 opcode_t *
 Parrot_defined_i_p_ki(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 270 "src/ops/pmc.ops"
     IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed_int(interp, PREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -24997,6 +25793,7 @@
 opcode_t *
 Parrot_defined_i_p_kic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 270 "src/ops/pmc.ops"
     IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed_int(interp, PREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25004,6 +25801,7 @@
 opcode_t *
 Parrot_defined_i_p_k(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/pmc.ops"
     IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed(interp, PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25011,6 +25809,7 @@
 opcode_t *
 Parrot_defined_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/pmc.ops"
     IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed(interp, PREG(2), CONST(3)->u.key);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25018,6 +25817,7 @@
 opcode_t *
 Parrot_exists_i_p_ki(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 278 "src/ops/pmc.ops"
     IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_exists_keyed_int(interp, PREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25025,6 +25825,7 @@
 opcode_t *
 Parrot_exists_i_p_kic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 278 "src/ops/pmc.ops"
     IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_exists_keyed_int(interp, PREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25032,6 +25833,7 @@
 opcode_t *
 Parrot_exists_i_p_k(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/pmc.ops"
     IREG(1) = PMC_IS_NULL(PREG(2)) ? 0: VTABLE_exists_keyed(interp, PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25039,6 +25841,7 @@
 opcode_t *
 Parrot_exists_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/pmc.ops"
     IREG(1) = PMC_IS_NULL(PREG(2)) ? 0: VTABLE_exists_keyed(interp, PREG(2), CONST(3)->u.key);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25046,6 +25849,7 @@
 opcode_t *
 Parrot_delete_p_k(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/pmc.ops"
     VTABLE_delete_keyed(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25053,6 +25857,7 @@
 opcode_t *
 Parrot_delete_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/pmc.ops"
     VTABLE_delete_keyed(interp, PREG(1), CONST(2)->u.key);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25060,6 +25865,7 @@
 opcode_t *
 Parrot_delete_p_ki(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 300 "src/ops/pmc.ops"
     VTABLE_delete_keyed_int(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25067,6 +25873,7 @@
 opcode_t *
 Parrot_delete_p_kic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 300 "src/ops/pmc.ops"
     VTABLE_delete_keyed_int(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25074,6 +25881,7 @@
 opcode_t *
 Parrot_elements_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/pmc.ops"
     IREG(1) = VTABLE_elements(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25081,6 +25889,7 @@
 opcode_t *
 Parrot_push_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 344 "src/ops/pmc.ops"
     VTABLE_push_integer(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25088,6 +25897,7 @@
 opcode_t *
 Parrot_push_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 344 "src/ops/pmc.ops"
     VTABLE_push_integer(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25095,6 +25905,7 @@
 opcode_t *
 Parrot_push_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 348 "src/ops/pmc.ops"
     VTABLE_push_float(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25102,6 +25913,7 @@
 opcode_t *
 Parrot_push_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 348 "src/ops/pmc.ops"
     VTABLE_push_float(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25109,6 +25921,7 @@
 opcode_t *
 Parrot_push_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 352 "src/ops/pmc.ops"
     VTABLE_push_string(interp, PREG(1), SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25116,6 +25929,7 @@
 opcode_t *
 Parrot_push_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 352 "src/ops/pmc.ops"
     VTABLE_push_string(interp, PREG(1), CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25123,6 +25937,7 @@
 opcode_t *
 Parrot_push_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 356 "src/ops/pmc.ops"
     VTABLE_push_pmc(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25130,6 +25945,7 @@
 opcode_t *
 Parrot_pop_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 374 "src/ops/pmc.ops"
     IREG(1) = VTABLE_pop_integer(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25137,6 +25953,7 @@
 opcode_t *
 Parrot_pop_n_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/pmc.ops"
     NREG(1) = VTABLE_pop_float(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25144,6 +25961,7 @@
 opcode_t *
 Parrot_pop_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 382 "src/ops/pmc.ops"
     SREG(1) = VTABLE_pop_string(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25151,6 +25969,7 @@
 opcode_t *
 Parrot_pop_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 386 "src/ops/pmc.ops"
     PREG(1) = VTABLE_pop_pmc(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25158,6 +25977,7 @@
 opcode_t *
 Parrot_unshift_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 404 "src/ops/pmc.ops"
     VTABLE_unshift_integer(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25165,6 +25985,7 @@
 opcode_t *
 Parrot_unshift_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 404 "src/ops/pmc.ops"
     VTABLE_unshift_integer(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25172,6 +25993,7 @@
 opcode_t *
 Parrot_unshift_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 408 "src/ops/pmc.ops"
     VTABLE_unshift_float(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25179,6 +26001,7 @@
 opcode_t *
 Parrot_unshift_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 408 "src/ops/pmc.ops"
     VTABLE_unshift_float(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25186,6 +26009,7 @@
 opcode_t *
 Parrot_unshift_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 412 "src/ops/pmc.ops"
     VTABLE_unshift_string(interp, PREG(1), SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25193,6 +26017,7 @@
 opcode_t *
 Parrot_unshift_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 412 "src/ops/pmc.ops"
     VTABLE_unshift_string(interp, PREG(1), CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25200,6 +26025,7 @@
 opcode_t *
 Parrot_unshift_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 416 "src/ops/pmc.ops"
     VTABLE_unshift_pmc(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25207,6 +26033,7 @@
 opcode_t *
 Parrot_shift_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 434 "src/ops/pmc.ops"
     IREG(1) = VTABLE_shift_integer(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25214,6 +26041,7 @@
 opcode_t *
 Parrot_shift_n_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 438 "src/ops/pmc.ops"
     NREG(1) = VTABLE_shift_float(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25221,6 +26049,7 @@
 opcode_t *
 Parrot_shift_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 442 "src/ops/pmc.ops"
     SREG(1) = VTABLE_shift_string(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25228,6 +26057,7 @@
 opcode_t *
 Parrot_shift_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 446 "src/ops/pmc.ops"
     PREG(1) = VTABLE_shift_pmc(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25235,6 +26065,7 @@
 opcode_t *
 Parrot_splice_p_p_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 458 "src/ops/pmc.ops"
     VTABLE_splice(interp, PREG(1), PREG(2), IREG(3), IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -25242,6 +26073,7 @@
 opcode_t *
 Parrot_splice_p_p_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 458 "src/ops/pmc.ops"
     VTABLE_splice(interp, PREG(1), PREG(2), cur_opcode[3], IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -25249,6 +26081,7 @@
 opcode_t *
 Parrot_splice_p_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 458 "src/ops/pmc.ops"
     VTABLE_splice(interp, PREG(1), PREG(2), IREG(3), cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -25256,6 +26089,7 @@
 opcode_t *
 Parrot_splice_p_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 458 "src/ops/pmc.ops"
     VTABLE_splice(interp, PREG(1), PREG(2), cur_opcode[3], cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -25263,6 +26097,7 @@
 opcode_t *
 Parrot_setprop_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 485 "src/ops/pmc.ops"
     VTABLE_setprop(interp, PREG(1), SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25270,6 +26105,7 @@
 opcode_t *
 Parrot_setprop_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 485 "src/ops/pmc.ops"
     VTABLE_setprop(interp, PREG(1), CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25277,6 +26113,7 @@
 opcode_t *
 Parrot_getprop_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 497 "src/ops/pmc.ops"
     PREG(1) = VTABLE_getprop(interp, PREG(3), SREG(2));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25284,6 +26121,7 @@
 opcode_t *
 Parrot_getprop_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 497 "src/ops/pmc.ops"
     PREG(1) = VTABLE_getprop(interp, PREG(3), CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25291,6 +26129,7 @@
 opcode_t *
 Parrot_delprop_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 509 "src/ops/pmc.ops"
     VTABLE_delprop(interp, PREG(1), SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25298,6 +26137,7 @@
 opcode_t *
 Parrot_delprop_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 509 "src/ops/pmc.ops"
     VTABLE_delprop(interp, PREG(1), CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25305,6 +26145,7 @@
 opcode_t *
 Parrot_prophash_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 522 "src/ops/pmc.ops"
     PREG(1) = VTABLE_getprops(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25312,6 +26153,7 @@
 opcode_t *
 Parrot_freeze_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 552 "src/ops/pmc.ops"
     SREG(1) = Parrot_freeze(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25319,6 +26161,7 @@
 opcode_t *
 Parrot_thaw_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 556 "src/ops/pmc.ops"
     PREG(1) = Parrot_thaw(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25326,6 +26169,7 @@
 opcode_t *
 Parrot_thaw_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 556 "src/ops/pmc.ops"
     PREG(1) = Parrot_thaw(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25333,6 +26177,7 @@
 opcode_t *
 Parrot_add_multi_s_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/pmc.ops"
     Parrot_mmd_add_multi_from_long_sig(interp, SREG(1), SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25340,6 +26185,7 @@
 opcode_t *
 Parrot_add_multi_sc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/pmc.ops"
     Parrot_mmd_add_multi_from_long_sig(interp, CONST(1)->u.string, SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25347,6 +26193,7 @@
 opcode_t *
 Parrot_add_multi_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/pmc.ops"
     Parrot_mmd_add_multi_from_long_sig(interp, SREG(1), CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25354,6 +26201,7 @@
 opcode_t *
 Parrot_add_multi_sc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/pmc.ops"
     Parrot_mmd_add_multi_from_long_sig(interp, CONST(1)->u.string, CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25361,6 +26209,7 @@
 opcode_t *
 Parrot_find_multi_p_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 597 "src/ops/pmc.ops"
     PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, SREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25368,6 +26217,7 @@
 opcode_t *
 Parrot_find_multi_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 597 "src/ops/pmc.ops"
     PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, CONST(2)->u.string, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25375,6 +26225,7 @@
 opcode_t *
 Parrot_find_multi_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 597 "src/ops/pmc.ops"
     PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, SREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25382,6 +26233,7 @@
 opcode_t *
 Parrot_find_multi_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 597 "src/ops/pmc.ops"
     PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, CONST(2)->u.string, CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25389,6 +26241,7 @@
 opcode_t *
 Parrot_register_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 630 "src/ops/pmc.ops"
     Parrot_pmc_gc_register(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -25396,6 +26249,7 @@
 opcode_t *
 Parrot_unregister_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 634 "src/ops/pmc.ops"
     Parrot_pmc_gc_unregister(interp, PREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -25403,6 +26257,7 @@
 opcode_t *
 Parrot_box_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 651 "src/ops/pmc.ops"
     PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
     VTABLE_set_integer_native(interp, PREG(1), IREG(2));
 
@@ -25411,6 +26266,7 @@
 opcode_t *
 Parrot_box_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 651 "src/ops/pmc.ops"
     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]);
 
@@ -25419,6 +26275,7 @@
 opcode_t *
 Parrot_box_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 656 "src/ops/pmc.ops"
     PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
     VTABLE_set_number_native(interp, PREG(1), NREG(2));
 
@@ -25427,6 +26284,7 @@
 opcode_t *
 Parrot_box_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 656 "src/ops/pmc.ops"
     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);
 
@@ -25435,6 +26293,7 @@
 opcode_t *
 Parrot_box_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 661 "src/ops/pmc.ops"
     PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
     VTABLE_set_string_native(interp, PREG(1), SREG(2));
 
@@ -25443,6 +26302,7 @@
 opcode_t *
 Parrot_box_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 661 "src/ops/pmc.ops"
     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);
 
@@ -25451,6 +26311,7 @@
 opcode_t *
 Parrot_iter_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 674 "src/ops/pmc.ops"
     PREG(1) = VTABLE_get_iter(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25458,6 +26319,7 @@
 opcode_t *
 Parrot_morph_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 686 "src/ops/pmc.ops"
     VTABLE_morph(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25465,6 +26327,7 @@
 opcode_t *
 Parrot_morph_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 686 "src/ops/pmc.ops"
     VTABLE_morph(interp, PREG(1), CONST(2)->u.key);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25472,6 +26335,7 @@
 opcode_t *
 Parrot_clone_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 28 "src/ops/set.ops"
     /* cloning a NULL STRING produces an empty STRING; TT #964 */
     SREG(1) = SREG(2)
        ? SREG(2)
@@ -25482,6 +26346,7 @@
 opcode_t *
 Parrot_clone_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 28 "src/ops/set.ops"
     /* cloning a NULL STRING produces an empty STRING; TT #964 */
     SREG(1) = CONST(2)->u.string
        ? CONST(2)->u.string
@@ -25492,6 +26357,7 @@
 opcode_t *
 Parrot_exchange_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 51 "src/ops/set.ops"
     const INTVAL temp = IREG(1);
     IREG(1) = IREG(2);
     IREG(2) = temp;
@@ -25501,6 +26367,7 @@
 opcode_t *
 Parrot_exchange_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 57 "src/ops/set.ops"
     PMC * const temp = PREG(1);
     PREG(1) = PREG(2);
     PREG(2) = temp;
@@ -25510,6 +26377,7 @@
 opcode_t *
 Parrot_exchange_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 63 "src/ops/set.ops"
     FLOATVAL temp = NREG(1);
     NREG(1) = NREG(2);
     NREG(2) = temp;
@@ -25519,6 +26387,7 @@
 opcode_t *
 Parrot_exchange_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/set.ops"
     STRING * const temp = SREG(1);
     SREG(1) = SREG(2);
     SREG(2) = temp;
@@ -25528,6 +26397,7 @@
 opcode_t *
 Parrot_set_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 121 "src/ops/set.ops"
     IREG(1) = IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25535,6 +26405,7 @@
 opcode_t *
 Parrot_set_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 121 "src/ops/set.ops"
     IREG(1) = cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25542,6 +26413,7 @@
 opcode_t *
 Parrot_set_i_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 125 "src/ops/set.ops"
     IREG(1) = (INTVAL)(NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25549,6 +26421,7 @@
 opcode_t *
 Parrot_set_i_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 125 "src/ops/set.ops"
     IREG(1) = (INTVAL)(CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25556,6 +26429,7 @@
 opcode_t *
 Parrot_set_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 129 "src/ops/set.ops"
     IREG(1) = Parrot_str_to_int(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25563,6 +26437,7 @@
 opcode_t *
 Parrot_set_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 129 "src/ops/set.ops"
     IREG(1) = Parrot_str_to_int(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25570,6 +26445,7 @@
 opcode_t *
 Parrot_set_n_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 133 "src/ops/set.ops"
     NREG(1) = NREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25577,6 +26453,7 @@
 opcode_t *
 Parrot_set_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 133 "src/ops/set.ops"
     NREG(1) = CONST(2)->u.number;
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25584,6 +26461,7 @@
 opcode_t *
 Parrot_set_n_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/set.ops"
     NREG(1) = (FLOATVAL)IREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25591,6 +26469,7 @@
 opcode_t *
 Parrot_set_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/set.ops"
     NREG(1) = (FLOATVAL)cur_opcode[2];
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25598,6 +26477,7 @@
 opcode_t *
 Parrot_set_n_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 141 "src/ops/set.ops"
     NREG(1) = Parrot_str_to_num(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25605,6 +26485,7 @@
 opcode_t *
 Parrot_set_n_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 141 "src/ops/set.ops"
     NREG(1) = Parrot_str_to_num(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25612,6 +26493,7 @@
 opcode_t *
 Parrot_set_n_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 145 "src/ops/set.ops"
     NREG(1) = VTABLE_get_number(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25619,6 +26501,7 @@
 opcode_t *
 Parrot_set_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 149 "src/ops/set.ops"
     SREG(1) = VTABLE_get_string(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25626,6 +26509,7 @@
 opcode_t *
 Parrot_set_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 153 "src/ops/set.ops"
     SREG(1) = SREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25633,6 +26517,7 @@
 opcode_t *
 Parrot_set_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 157 "src/ops/set.ops"
     SREG(1) = CONST(2)->u.string;
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25640,6 +26525,7 @@
 opcode_t *
 Parrot_set_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 161 "src/ops/set.ops"
     SREG(1) = Parrot_str_from_int(interp, IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25647,6 +26533,7 @@
 opcode_t *
 Parrot_set_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 161 "src/ops/set.ops"
     SREG(1) = Parrot_str_from_int(interp, cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25654,6 +26541,7 @@
 opcode_t *
 Parrot_set_s_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 165 "src/ops/set.ops"
     SREG(1) = Parrot_str_from_num(interp, NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25661,6 +26549,7 @@
 opcode_t *
 Parrot_set_s_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 165 "src/ops/set.ops"
     SREG(1) = Parrot_str_from_num(interp, CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25668,6 +26557,7 @@
 opcode_t *
 Parrot_set_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 169 "src/ops/set.ops"
     PREG(1) = CONST(2)->u.key;
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25675,6 +26565,7 @@
 opcode_t *
 Parrot_set_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 173 "src/ops/set.ops"
     PREG(1) = PREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25682,6 +26573,7 @@
 opcode_t *
 Parrot_set_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 177 "src/ops/set.ops"
     VTABLE_set_integer_native(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25689,6 +26581,7 @@
 opcode_t *
 Parrot_set_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 177 "src/ops/set.ops"
     VTABLE_set_integer_native(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25696,6 +26589,7 @@
 opcode_t *
 Parrot_set_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 181 "src/ops/set.ops"
     VTABLE_set_number_native(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25703,6 +26597,7 @@
 opcode_t *
 Parrot_set_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 181 "src/ops/set.ops"
     VTABLE_set_number_native(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25710,6 +26605,7 @@
 opcode_t *
 Parrot_set_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 185 "src/ops/set.ops"
     VTABLE_set_string_native(interp, PREG(1), SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25717,6 +26613,7 @@
 opcode_t *
 Parrot_set_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 189 "src/ops/set.ops"
     VTABLE_set_string_native(interp, PREG(1), CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25724,6 +26621,7 @@
 opcode_t *
 Parrot_set_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 192 "src/ops/set.ops"
     IREG(1) = VTABLE_get_integer(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25731,6 +26629,7 @@
 opcode_t *
 Parrot_assign_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 233 "src/ops/set.ops"
     VTABLE_assign_pmc(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25738,6 +26637,7 @@
 opcode_t *
 Parrot_assign_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 237 "src/ops/set.ops"
     VTABLE_set_integer_native(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25745,6 +26645,7 @@
 opcode_t *
 Parrot_assign_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 237 "src/ops/set.ops"
     VTABLE_set_integer_native(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25752,6 +26653,7 @@
 opcode_t *
 Parrot_assign_p_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/set.ops"
     VTABLE_set_number_native(interp, PREG(1), NREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25759,6 +26661,7 @@
 opcode_t *
 Parrot_assign_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/set.ops"
     VTABLE_set_number_native(interp, PREG(1), CONST(2)->u.number);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25766,6 +26669,7 @@
 opcode_t *
 Parrot_assign_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 245 "src/ops/set.ops"
     VTABLE_assign_string_native(interp, PREG(1), SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25773,6 +26677,7 @@
 opcode_t *
 Parrot_assign_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 245 "src/ops/set.ops"
     VTABLE_assign_string_native(interp, PREG(1), CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25780,6 +26685,7 @@
 opcode_t *
 Parrot_assign_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 249 "src/ops/set.ops"
     SREG(1) = SREG(2);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25787,6 +26693,7 @@
 opcode_t *
 Parrot_assign_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 249 "src/ops/set.ops"
     SREG(1) = CONST(2)->u.string;
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25794,6 +26701,7 @@
 opcode_t *
 Parrot_setref_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 253 "src/ops/set.ops"
     VTABLE_set_pmc(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25801,6 +26709,7 @@
 opcode_t *
 Parrot_deref_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 257 "src/ops/set.ops"
     PREG(1) = VTABLE_get_pmc(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -25808,6 +26717,7 @@
 opcode_t *
 Parrot_setp_ind_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 275 "src/ops/set.ops"
     if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_PMC(interp, IREG(1)) = PREG(2);
@@ -25817,6 +26727,7 @@
 opcode_t *
 Parrot_setp_ind_ic_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 275 "src/ops/set.ops"
     if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_PMC(interp, cur_opcode[1]) = PREG(2);
@@ -25826,6 +26737,7 @@
 opcode_t *
 Parrot_setn_ind_i_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 289 "src/ops/set.ops"
     if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_NUM(interp, IREG(1)) = NREG(2);
@@ -25835,6 +26747,7 @@
 opcode_t *
 Parrot_setn_ind_ic_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 289 "src/ops/set.ops"
     if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_NUM(interp, cur_opcode[1]) = NREG(2);
@@ -25844,6 +26757,7 @@
 opcode_t *
 Parrot_setn_ind_i_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 289 "src/ops/set.ops"
     if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_NUM(interp, IREG(1)) = CONST(2)->u.number;
@@ -25853,6 +26767,7 @@
 opcode_t *
 Parrot_setn_ind_ic_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 289 "src/ops/set.ops"
     if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_NUM(interp, cur_opcode[1]) = CONST(2)->u.number;
@@ -25862,6 +26777,7 @@
 opcode_t *
 Parrot_sets_ind_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 303 "src/ops/set.ops"
     if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_STR(interp, IREG(1)) = SREG(2);
@@ -25871,6 +26787,7 @@
 opcode_t *
 Parrot_sets_ind_ic_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 303 "src/ops/set.ops"
     if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_STR(interp, cur_opcode[1]) = SREG(2);
@@ -25880,6 +26797,7 @@
 opcode_t *
 Parrot_sets_ind_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 303 "src/ops/set.ops"
     if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_STR(interp, IREG(1)) = CONST(2)->u.string;
@@ -25889,6 +26807,7 @@
 opcode_t *
 Parrot_sets_ind_ic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 303 "src/ops/set.ops"
     if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_STR(interp, cur_opcode[1]) = CONST(2)->u.string;
@@ -25898,6 +26817,7 @@
 opcode_t *
 Parrot_seti_ind_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/set.ops"
     if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_INT(interp, IREG(1)) = IREG(2);
@@ -25907,6 +26827,7 @@
 opcode_t *
 Parrot_seti_ind_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/set.ops"
     if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_INT(interp, cur_opcode[1]) = IREG(2);
@@ -25916,6 +26837,7 @@
 opcode_t *
 Parrot_seti_ind_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/set.ops"
     if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_INT(interp, IREG(1)) = cur_opcode[2];
@@ -25925,6 +26847,7 @@
 opcode_t *
 Parrot_seti_ind_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/set.ops"
     if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
         PANIC(interp, "Out of bound register access");
     REG_INT(interp, cur_opcode[1]) = cur_opcode[2];
@@ -25934,6 +26857,7 @@
 opcode_t *
 Parrot_set_p_ki_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/set.ops"
     VTABLE_set_integer_keyed_int(interp, PREG(1), IREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25941,6 +26865,7 @@
 opcode_t *
 Parrot_set_p_kic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/set.ops"
     VTABLE_set_integer_keyed_int(interp, PREG(1), cur_opcode[2], IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25948,6 +26873,7 @@
 opcode_t *
 Parrot_set_p_ki_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/set.ops"
     VTABLE_set_integer_keyed_int(interp, PREG(1), IREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25955,6 +26881,7 @@
 opcode_t *
 Parrot_set_p_kic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/set.ops"
     VTABLE_set_integer_keyed_int(interp, PREG(1), cur_opcode[2], cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25962,6 +26889,7 @@
 opcode_t *
 Parrot_set_p_ki_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 347 "src/ops/set.ops"
     VTABLE_set_number_keyed_int(interp, PREG(1), IREG(2), NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25969,6 +26897,7 @@
 opcode_t *
 Parrot_set_p_kic_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 347 "src/ops/set.ops"
     VTABLE_set_number_keyed_int(interp, PREG(1), cur_opcode[2], NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25976,6 +26905,7 @@
 opcode_t *
 Parrot_set_p_ki_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 347 "src/ops/set.ops"
     VTABLE_set_number_keyed_int(interp, PREG(1), IREG(2), CONST(3)->u.number);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25983,6 +26913,7 @@
 opcode_t *
 Parrot_set_p_kic_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 347 "src/ops/set.ops"
     VTABLE_set_number_keyed_int(interp, PREG(1), cur_opcode[2], CONST(3)->u.number);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25990,6 +26921,7 @@
 opcode_t *
 Parrot_set_p_ki_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 351 "src/ops/set.ops"
     VTABLE_set_string_keyed_int(interp, PREG(1), IREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -25997,6 +26929,7 @@
 opcode_t *
 Parrot_set_p_kic_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 351 "src/ops/set.ops"
     VTABLE_set_string_keyed_int(interp, PREG(1), cur_opcode[2], SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26004,6 +26937,7 @@
 opcode_t *
 Parrot_set_p_ki_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 351 "src/ops/set.ops"
     VTABLE_set_string_keyed_int(interp, PREG(1), IREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26011,6 +26945,7 @@
 opcode_t *
 Parrot_set_p_kic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 351 "src/ops/set.ops"
     VTABLE_set_string_keyed_int(interp, PREG(1), cur_opcode[2], CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26018,6 +26953,7 @@
 opcode_t *
 Parrot_set_p_ki_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 355 "src/ops/set.ops"
     VTABLE_set_pmc_keyed_int(interp, PREG(1), IREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26025,6 +26961,7 @@
 opcode_t *
 Parrot_set_p_kic_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 355 "src/ops/set.ops"
     VTABLE_set_pmc_keyed_int(interp, PREG(1), cur_opcode[2], PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26032,6 +26969,7 @@
 opcode_t *
 Parrot_set_i_p_ki(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 379 "src/ops/set.ops"
     IREG(1) = VTABLE_get_integer_keyed_int(interp, PREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26039,6 +26977,7 @@
 opcode_t *
 Parrot_set_i_p_kic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 379 "src/ops/set.ops"
     IREG(1) = VTABLE_get_integer_keyed_int(interp, PREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26046,6 +26985,7 @@
 opcode_t *
 Parrot_set_n_p_ki(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/set.ops"
     NREG(1) = VTABLE_get_number_keyed_int(interp, PREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26053,6 +26993,7 @@
 opcode_t *
 Parrot_set_n_p_kic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/set.ops"
     NREG(1) = VTABLE_get_number_keyed_int(interp, PREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26060,6 +27001,7 @@
 opcode_t *
 Parrot_set_s_p_ki(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 387 "src/ops/set.ops"
     SREG(1) = VTABLE_get_string_keyed_int(interp, PREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26067,6 +27009,7 @@
 opcode_t *
 Parrot_set_s_p_kic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 387 "src/ops/set.ops"
     SREG(1) = VTABLE_get_string_keyed_int(interp, PREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26074,6 +27017,7 @@
 opcode_t *
 Parrot_set_p_p_ki(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/set.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26081,6 +27025,7 @@
 opcode_t *
 Parrot_set_p_p_kic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/set.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26088,6 +27033,7 @@
 opcode_t *
 Parrot_set_p_k_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 415 "src/ops/set.ops"
     VTABLE_set_integer_keyed(interp, PREG(1), PREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26095,6 +27041,7 @@
 opcode_t *
 Parrot_set_p_kc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 415 "src/ops/set.ops"
     VTABLE_set_integer_keyed(interp, PREG(1), CONST(2)->u.key, IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26102,6 +27049,7 @@
 opcode_t *
 Parrot_set_p_k_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 415 "src/ops/set.ops"
     VTABLE_set_integer_keyed(interp, PREG(1), PREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26109,6 +27057,7 @@
 opcode_t *
 Parrot_set_p_kc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 415 "src/ops/set.ops"
     VTABLE_set_integer_keyed(interp, PREG(1), CONST(2)->u.key, cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26116,6 +27065,7 @@
 opcode_t *
 Parrot_set_p_k_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 419 "src/ops/set.ops"
     VTABLE_set_number_keyed(interp, PREG(1), PREG(2), NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26123,6 +27073,7 @@
 opcode_t *
 Parrot_set_p_kc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 419 "src/ops/set.ops"
     VTABLE_set_number_keyed(interp, PREG(1), CONST(2)->u.key, NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26130,6 +27081,7 @@
 opcode_t *
 Parrot_set_p_k_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 419 "src/ops/set.ops"
     VTABLE_set_number_keyed(interp, PREG(1), PREG(2), CONST(3)->u.number);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26137,6 +27089,7 @@
 opcode_t *
 Parrot_set_p_kc_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 419 "src/ops/set.ops"
     VTABLE_set_number_keyed(interp, PREG(1), CONST(2)->u.key, CONST(3)->u.number);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26144,6 +27097,7 @@
 opcode_t *
 Parrot_set_p_k_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 423 "src/ops/set.ops"
     VTABLE_set_string_keyed(interp, PREG(1), PREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26151,6 +27105,7 @@
 opcode_t *
 Parrot_set_p_kc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 423 "src/ops/set.ops"
     VTABLE_set_string_keyed(interp, PREG(1), CONST(2)->u.key, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26158,6 +27113,7 @@
 opcode_t *
 Parrot_set_p_k_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 423 "src/ops/set.ops"
     VTABLE_set_string_keyed(interp, PREG(1), PREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26165,6 +27121,7 @@
 opcode_t *
 Parrot_set_p_kc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 423 "src/ops/set.ops"
     VTABLE_set_string_keyed(interp, PREG(1), CONST(2)->u.key, CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26172,6 +27129,7 @@
 opcode_t *
 Parrot_set_p_k_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 427 "src/ops/set.ops"
     VTABLE_set_pmc_keyed(interp, PREG(1), PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26179,6 +27137,7 @@
 opcode_t *
 Parrot_set_p_kc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 427 "src/ops/set.ops"
     VTABLE_set_pmc_keyed(interp, PREG(1), CONST(2)->u.key, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26186,6 +27145,7 @@
 opcode_t *
 Parrot_set_i_p_k(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 451 "src/ops/set.ops"
     IREG(1) = VTABLE_get_integer_keyed(interp, PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26193,6 +27153,7 @@
 opcode_t *
 Parrot_set_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 451 "src/ops/set.ops"
     IREG(1) = VTABLE_get_integer_keyed(interp, PREG(2), CONST(3)->u.key);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26200,6 +27161,7 @@
 opcode_t *
 Parrot_set_n_p_k(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 455 "src/ops/set.ops"
     NREG(1) = VTABLE_get_number_keyed(interp, PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26207,6 +27169,7 @@
 opcode_t *
 Parrot_set_n_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 455 "src/ops/set.ops"
     NREG(1) = VTABLE_get_number_keyed(interp, PREG(2), CONST(3)->u.key);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26214,6 +27177,7 @@
 opcode_t *
 Parrot_set_s_p_k(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 459 "src/ops/set.ops"
     SREG(1) = VTABLE_get_string_keyed(interp, PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26221,6 +27185,7 @@
 opcode_t *
 Parrot_set_s_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 459 "src/ops/set.ops"
     SREG(1) = VTABLE_get_string_keyed(interp, PREG(2), CONST(3)->u.key);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26228,6 +27193,7 @@
 opcode_t *
 Parrot_set_p_p_k(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 463 "src/ops/set.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26235,6 +27201,7 @@
 opcode_t *
 Parrot_set_p_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 463 "src/ops/set.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26242,6 +27209,7 @@
 opcode_t *
 Parrot_clone_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 473 "src/ops/set.ops"
     PREG(1) = VTABLE_clone(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26249,6 +27217,7 @@
 opcode_t *
 Parrot_clone_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 483 "src/ops/set.ops"
     PREG(1) = VTABLE_clone_pmc(interp, PREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26256,6 +27225,7 @@
 opcode_t *
 Parrot_clone_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 483 "src/ops/set.ops"
     PREG(1) = VTABLE_clone_pmc(interp, PREG(2), CONST(3)->u.key);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26263,6 +27233,7 @@
 opcode_t *
 Parrot_copy_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 493 "src/ops/set.ops"
     if (PMC_IS_NULL(PREG(1))) {
         opcode_t * const dest = cur_opcode + 3;
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
@@ -26302,6 +27273,7 @@
 opcode_t *
 Parrot_null_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 561 "src/ops/set.ops"
     SREG(1) = STRINGNULL;
 
 return (opcode_t *)cur_opcode + 2;}
@@ -26309,6 +27281,7 @@
 opcode_t *
 Parrot_null_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/set.ops"
     IREG(1) = 0;
 
 return (opcode_t *)cur_opcode + 2;}
@@ -26316,6 +27289,7 @@
 opcode_t *
 Parrot_null_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 569 "src/ops/set.ops"
     PREG(1) = PMCNULL;
 
 return (opcode_t *)cur_opcode + 2;}
@@ -26323,6 +27297,7 @@
 opcode_t *
 Parrot_null_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/set.ops"
     NREG(1) = 0;
 
 return (opcode_t *)cur_opcode + 2;}
@@ -26330,6 +27305,7 @@
 opcode_t *
 Parrot_cleari(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 595 "src/ops/set.ops"
     Parrot_clear_i(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -26337,6 +27313,7 @@
 opcode_t *
 Parrot_clearn(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 599 "src/ops/set.ops"
     Parrot_clear_n(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -26344,6 +27321,7 @@
 opcode_t *
 Parrot_clears(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 603 "src/ops/set.ops"
     Parrot_clear_s(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -26351,6 +27329,7 @@
 opcode_t *
 Parrot_clearp(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 607 "src/ops/set.ops"
     Parrot_clear_p(interp);
 
 return (opcode_t *)cur_opcode + 1;}
@@ -26358,6 +27337,7 @@
 opcode_t *
 Parrot_ord_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 40 "src/ops/string.ops"
     IREG(1) = string_ord(interp, SREG(2), 0);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26365,6 +27345,7 @@
 opcode_t *
 Parrot_ord_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 40 "src/ops/string.ops"
     IREG(1) = string_ord(interp, CONST(2)->u.string, 0);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26372,6 +27353,7 @@
 opcode_t *
 Parrot_ord_i_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 44 "src/ops/string.ops"
     IREG(1) = string_ord(interp, SREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26379,6 +27361,7 @@
 opcode_t *
 Parrot_ord_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 44 "src/ops/string.ops"
     IREG(1) = string_ord(interp, CONST(2)->u.string, IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26386,6 +27369,7 @@
 opcode_t *
 Parrot_ord_i_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 44 "src/ops/string.ops"
     IREG(1) = string_ord(interp, SREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26393,6 +27377,7 @@
 opcode_t *
 Parrot_ord_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 44 "src/ops/string.ops"
     IREG(1) = string_ord(interp, CONST(2)->u.string, cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26400,6 +27385,7 @@
 opcode_t *
 Parrot_chr_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/string.ops"
     STRING * const s = string_chr(interp, (UINTVAL)IREG(2));
     SREG(1) = s;
 
@@ -26408,6 +27394,7 @@
 opcode_t *
 Parrot_chr_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/string.ops"
     STRING * const s = string_chr(interp, (UINTVAL)cur_opcode[2]);
     SREG(1) = s;
 
@@ -26416,6 +27403,7 @@
 opcode_t *
 Parrot_chopn_s_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/string.ops"
     SREG(1) = Parrot_str_chopn(interp, SREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26423,6 +27411,7 @@
 opcode_t *
 Parrot_chopn_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/string.ops"
     SREG(1) = Parrot_str_chopn(interp, CONST(2)->u.string, IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26430,6 +27419,7 @@
 opcode_t *
 Parrot_chopn_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/string.ops"
     SREG(1) = Parrot_str_chopn(interp, SREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26437,6 +27427,7 @@
 opcode_t *
 Parrot_chopn_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/string.ops"
     SREG(1) = Parrot_str_chopn(interp, CONST(2)->u.string, cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26444,6 +27435,7 @@
 opcode_t *
 Parrot_concat_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 92 "src/ops/string.ops"
 INTVAL unused = PARROT_WARNINGS_test(interp,PARROT_WARNINGS_DEPRECATED_FLAG) &&
   fprintf(stderr,"Warning: instruction 'concat' is deprecated\n");
     SREG(1) = Parrot_str_concat(interp, SREG(1), SREG(2));
@@ -26453,6 +27445,7 @@
 opcode_t *
 Parrot_concat_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 92 "src/ops/string.ops"
 INTVAL unused = PARROT_WARNINGS_test(interp,PARROT_WARNINGS_DEPRECATED_FLAG) &&
   fprintf(stderr,"Warning: instruction 'concat' is deprecated\n");
     SREG(1) = Parrot_str_concat(interp, SREG(1), CONST(2)->u.string);
@@ -26462,6 +27455,7 @@
 opcode_t *
 Parrot_concat_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 96 "src/ops/string.ops"
     VTABLE_i_concatenate(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26469,6 +27463,7 @@
 opcode_t *
 Parrot_concat_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 100 "src/ops/string.ops"
     VTABLE_i_concatenate_str(interp, PREG(1), SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26476,6 +27471,7 @@
 opcode_t *
 Parrot_concat_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 100 "src/ops/string.ops"
     VTABLE_i_concatenate_str(interp, PREG(1), CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26483,6 +27479,7 @@
 opcode_t *
 Parrot_concat_s_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 104 "src/ops/string.ops"
     SREG(1) = Parrot_str_concat(interp, SREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26490,6 +27487,7 @@
 opcode_t *
 Parrot_concat_s_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 104 "src/ops/string.ops"
     SREG(1) = Parrot_str_concat(interp, CONST(2)->u.string, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26497,6 +27495,7 @@
 opcode_t *
 Parrot_concat_s_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 104 "src/ops/string.ops"
     SREG(1) = Parrot_str_concat(interp, SREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26504,6 +27503,7 @@
 opcode_t *
 Parrot_concat_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 108 "src/ops/string.ops"
     PREG(1) = VTABLE_concatenate_str(interp, PREG(2), SREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26511,6 +27511,7 @@
 opcode_t *
 Parrot_concat_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 108 "src/ops/string.ops"
     PREG(1) = VTABLE_concatenate_str(interp, PREG(2), CONST(3)->u.string, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26518,6 +27519,7 @@
 opcode_t *
 Parrot_concat_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 112 "src/ops/string.ops"
     PREG(1) = VTABLE_concatenate(interp, PREG(2), PREG(3), PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26525,6 +27527,7 @@
 opcode_t *
 Parrot_repeat_s_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/string.ops"
     if (IREG(3) < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_NEG_REPEAT,
@@ -26538,6 +27541,7 @@
 opcode_t *
 Parrot_repeat_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/string.ops"
     if (IREG(3) < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_NEG_REPEAT,
@@ -26551,6 +27555,7 @@
 opcode_t *
 Parrot_repeat_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/string.ops"
     if (cur_opcode[3] < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_NEG_REPEAT,
@@ -26564,6 +27569,7 @@
 opcode_t *
 Parrot_repeat_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/string.ops"
     if (cur_opcode[3] < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_NEG_REPEAT,
@@ -26577,6 +27583,7 @@
 opcode_t *
 Parrot_repeat_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/string.ops"
     if (IREG(3) < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_NEG_REPEAT,
@@ -26590,6 +27597,7 @@
 opcode_t *
 Parrot_repeat_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/string.ops"
     if (cur_opcode[3] < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_NEG_REPEAT,
@@ -26603,6 +27611,7 @@
 opcode_t *
 Parrot_repeat_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 147 "src/ops/string.ops"
     if (VTABLE_get_integer(interp, PREG(3)) < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_NEG_REPEAT,
@@ -26616,6 +27625,7 @@
 opcode_t *
 Parrot_repeat_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 166 "src/ops/string.ops"
     VTABLE_i_repeat_int(interp, PREG(1), IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26623,6 +27633,7 @@
 opcode_t *
 Parrot_repeat_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 166 "src/ops/string.ops"
     VTABLE_i_repeat_int(interp, PREG(1), cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26630,6 +27641,7 @@
 opcode_t *
 Parrot_repeat_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/string.ops"
     VTABLE_i_repeat(interp, PREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -26637,50 +27649,39 @@
 opcode_t *
 Parrot_length_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = SREG(2) ? Parrot_str_byte_length(interp, SREG(2)) : 0;
+#line 187 "src/ops/string.ops"
+    IREG(1) = Parrot_str_length(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_length_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(2)->u.string ? Parrot_str_byte_length(interp, CONST(2)->u.string) : 0;
+#line 187 "src/ops/string.ops"
+    IREG(1) = Parrot_str_length(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bytelength_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    UINTVAL n;
-    const STRING * const s = SREG(2);
-    if (STRING_IS_NULL(s))
-        n = 0;
-    else {
-        n = s->bufused;
-        PARROT_ASSERT(n == ENCODING_BYTES(interp, SREG(2)));
-    }
-    IREG(1) = n;
+#line 191 "src/ops/string.ops"
+    IREG(1) = Parrot_str_byte_length(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_bytelength_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    UINTVAL n;
-    const STRING * const s = CONST(2)->u.string;
-    if (STRING_IS_NULL(s))
-        n = 0;
-    else {
-        n = s->bufused;
-        PARROT_ASSERT(n == ENCODING_BYTES(interp, CONST(2)->u.string));
-    }
-    IREG(1) = n;
+#line 191 "src/ops/string.ops"
+    IREG(1) = Parrot_str_byte_length(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_pin_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 206 "src/ops/string.ops"
     Parrot_str_pin(interp, SREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -26688,6 +27689,7 @@
 opcode_t *
 Parrot_unpin_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 218 "src/ops/string.ops"
     Parrot_str_unpin(interp, SREG(1));
 
 return (opcode_t *)cur_opcode + 2;}
@@ -26695,6 +27697,7 @@
 opcode_t *
 Parrot_substr_s_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 251 "src/ops/string.ops"
     const INTVAL len = Parrot_str_byte_length(interp, SREG(2));
     SREG(1) = Parrot_str_substr(interp, SREG(2), IREG(3), len);
 
@@ -26703,6 +27706,7 @@
 opcode_t *
 Parrot_substr_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 251 "src/ops/string.ops"
     const INTVAL len = Parrot_str_byte_length(interp, CONST(2)->u.string);
     SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, IREG(3), len);
 
@@ -26711,6 +27715,7 @@
 opcode_t *
 Parrot_substr_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 251 "src/ops/string.ops"
     const INTVAL len = Parrot_str_byte_length(interp, SREG(2));
     SREG(1) = Parrot_str_substr(interp, SREG(2), cur_opcode[3], len);
 
@@ -26719,6 +27724,7 @@
 opcode_t *
 Parrot_substr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 251 "src/ops/string.ops"
     const INTVAL len = Parrot_str_byte_length(interp, CONST(2)->u.string);
     SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, cur_opcode[3], len);
 
@@ -26727,6 +27733,7 @@
 opcode_t *
 Parrot_substr_s_s_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 256 "src/ops/string.ops"
     SREG(1) = Parrot_str_substr(interp, SREG(2), IREG(3), IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26734,6 +27741,7 @@
 opcode_t *
 Parrot_substr_s_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 256 "src/ops/string.ops"
     SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, IREG(3), IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26741,6 +27749,7 @@
 opcode_t *
 Parrot_substr_s_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 256 "src/ops/string.ops"
     SREG(1) = Parrot_str_substr(interp, SREG(2), cur_opcode[3], IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26748,6 +27757,7 @@
 opcode_t *
 Parrot_substr_s_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 256 "src/ops/string.ops"
     SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, cur_opcode[3], IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26755,6 +27765,7 @@
 opcode_t *
 Parrot_substr_s_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 256 "src/ops/string.ops"
     SREG(1) = Parrot_str_substr(interp, SREG(2), IREG(3), cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26762,6 +27773,7 @@
 opcode_t *
 Parrot_substr_s_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 256 "src/ops/string.ops"
     SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, IREG(3), cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26769,6 +27781,7 @@
 opcode_t *
 Parrot_substr_s_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 256 "src/ops/string.ops"
     SREG(1) = Parrot_str_substr(interp, SREG(2), cur_opcode[3], cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26776,6 +27789,7 @@
 opcode_t *
 Parrot_substr_s_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 256 "src/ops/string.ops"
     SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, cur_opcode[3], cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26783,6 +27797,7 @@
 opcode_t *
 Parrot_substr_s_p_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 260 "src/ops/string.ops"
     SREG(1) = VTABLE_substr_str(interp, PREG(2), IREG(3), IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26790,6 +27805,7 @@
 opcode_t *
 Parrot_substr_s_p_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 260 "src/ops/string.ops"
     SREG(1) = VTABLE_substr_str(interp, PREG(2), cur_opcode[3], IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26797,6 +27813,7 @@
 opcode_t *
 Parrot_substr_s_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 260 "src/ops/string.ops"
     SREG(1) = VTABLE_substr_str(interp, PREG(2), IREG(3), cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26804,6 +27821,7 @@
 opcode_t *
 Parrot_substr_s_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 260 "src/ops/string.ops"
     SREG(1) = VTABLE_substr_str(interp, PREG(2), cur_opcode[3], cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26811,6 +27829,7 @@
 opcode_t *
 Parrot_replace_s_s_i_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), IREG(4), SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26818,6 +27837,7 @@
 opcode_t *
 Parrot_replace_s_sc_i_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), IREG(4), SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26825,6 +27845,7 @@
 opcode_t *
 Parrot_replace_s_s_ic_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], IREG(4), SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26832,6 +27853,7 @@
 opcode_t *
 Parrot_replace_s_sc_ic_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], IREG(4), SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26839,6 +27861,7 @@
 opcode_t *
 Parrot_replace_s_s_i_ic_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), cur_opcode[4], SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26846,6 +27869,7 @@
 opcode_t *
 Parrot_replace_s_sc_i_ic_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), cur_opcode[4], SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26853,6 +27877,7 @@
 opcode_t *
 Parrot_replace_s_s_ic_ic_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], cur_opcode[4], SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26860,6 +27885,7 @@
 opcode_t *
 Parrot_replace_s_sc_ic_ic_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], cur_opcode[4], SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26867,6 +27893,7 @@
 opcode_t *
 Parrot_replace_s_s_i_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), IREG(4), CONST(5)->u.string);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26874,6 +27901,7 @@
 opcode_t *
 Parrot_replace_s_sc_i_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), IREG(4), CONST(5)->u.string);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26881,6 +27909,7 @@
 opcode_t *
 Parrot_replace_s_s_ic_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], IREG(4), CONST(5)->u.string);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26888,6 +27917,7 @@
 opcode_t *
 Parrot_replace_s_sc_ic_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], IREG(4), CONST(5)->u.string);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26895,6 +27925,7 @@
 opcode_t *
 Parrot_replace_s_s_i_ic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), cur_opcode[4], CONST(5)->u.string);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26902,6 +27933,7 @@
 opcode_t *
 Parrot_replace_s_sc_i_ic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), cur_opcode[4], CONST(5)->u.string);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26909,6 +27941,7 @@
 opcode_t *
 Parrot_replace_s_s_ic_ic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], cur_opcode[4], CONST(5)->u.string);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26916,6 +27949,7 @@
 opcode_t *
 Parrot_replace_s_sc_ic_ic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
     SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], cur_opcode[4], CONST(5)->u.string);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -26923,6 +27957,7 @@
 opcode_t *
 Parrot_index_i_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 284 "src/ops/string.ops"
     IREG(1) = (SREG(2) && SREG(3)) ? Parrot_str_find_index(interp, SREG(2), SREG(3), 0) : -1;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26930,6 +27965,7 @@
 opcode_t *
 Parrot_index_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 284 "src/ops/string.ops"
     IREG(1) = (CONST(2)->u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2)->u.string, SREG(3), 0) : -1;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26937,6 +27973,7 @@
 opcode_t *
 Parrot_index_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 284 "src/ops/string.ops"
     IREG(1) = (SREG(2) && CONST(3)->u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3)->u.string, 0) : -1;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26944,6 +27981,7 @@
 opcode_t *
 Parrot_index_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 284 "src/ops/string.ops"
     IREG(1) = (CONST(2)->u.string && CONST(3)->u.string) ? Parrot_str_find_index(interp, CONST(2)->u.string, CONST(3)->u.string, 0) : -1;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -26951,6 +27989,7 @@
 opcode_t *
 Parrot_index_i_s_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 288 "src/ops/string.ops"
     IREG(1) = (SREG(2) && SREG(3)) ? Parrot_str_find_index(interp, SREG(2), SREG(3), IREG(4)) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26958,6 +27997,7 @@
 opcode_t *
 Parrot_index_i_sc_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 288 "src/ops/string.ops"
     IREG(1) = (CONST(2)->u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2)->u.string, SREG(3), IREG(4)) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26965,6 +28005,7 @@
 opcode_t *
 Parrot_index_i_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 288 "src/ops/string.ops"
     IREG(1) = (SREG(2) && CONST(3)->u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3)->u.string, IREG(4)) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26972,6 +28013,7 @@
 opcode_t *
 Parrot_index_i_sc_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 288 "src/ops/string.ops"
     IREG(1) = (CONST(2)->u.string && CONST(3)->u.string) ? Parrot_str_find_index(interp, CONST(2)->u.string, CONST(3)->u.string, IREG(4)) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26979,6 +28021,7 @@
 opcode_t *
 Parrot_index_i_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 288 "src/ops/string.ops"
     IREG(1) = (SREG(2) && SREG(3)) ? Parrot_str_find_index(interp, SREG(2), SREG(3), cur_opcode[4]) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26986,6 +28029,7 @@
 opcode_t *
 Parrot_index_i_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 288 "src/ops/string.ops"
     IREG(1) = (CONST(2)->u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2)->u.string, SREG(3), cur_opcode[4]) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
@@ -26993,6 +28037,7 @@
 opcode_t *
 Parrot_index_i_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 288 "src/ops/string.ops"
     IREG(1) = (SREG(2) && CONST(3)->u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3)->u.string, cur_opcode[4]) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
@@ -27000,6 +28045,7 @@
 opcode_t *
 Parrot_index_i_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 288 "src/ops/string.ops"
     IREG(1) = (CONST(2)->u.string && CONST(3)->u.string) ? Parrot_str_find_index(interp, CONST(2)->u.string, CONST(3)->u.string, cur_opcode[4]) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
@@ -27007,6 +28053,7 @@
 opcode_t *
 Parrot_sprintf_s_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 308 "src/ops/string.ops"
     SREG(1)=Parrot_psprintf(interp, SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27014,6 +28061,7 @@
 opcode_t *
 Parrot_sprintf_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 308 "src/ops/string.ops"
     SREG(1)=Parrot_psprintf(interp, CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27021,6 +28069,7 @@
 opcode_t *
 Parrot_sprintf_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/string.ops"
     VTABLE_set_string_native(interp, PREG(1),
         Parrot_psprintf(interp, VTABLE_get_string(interp, PREG(2)), PREG(3)));
 
@@ -27029,6 +28078,7 @@
 opcode_t *
 Parrot_new_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 326 "src/ops/string.ops"
     SREG(1) = Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
 
 return (opcode_t *)cur_opcode + 2;}
@@ -27036,6 +28086,7 @@
 opcode_t *
 Parrot_new_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 330 "src/ops/string.ops"
     SREG(1) = Parrot_str_new_noinit(interp, enum_stringrep_one, IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27043,6 +28094,7 @@
 opcode_t *
 Parrot_new_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 330 "src/ops/string.ops"
     SREG(1) = Parrot_str_new_noinit(interp, enum_stringrep_one, cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27050,6 +28102,7 @@
 opcode_t *
 Parrot_stringinfo_i_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 360 "src/ops/string.ops"
     if (SREG(2) == NULL)
         IREG(1) = 0;
     else {
@@ -27087,6 +28140,7 @@
 opcode_t *
 Parrot_stringinfo_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 360 "src/ops/string.ops"
     if (CONST(2)->u.string == NULL)
         IREG(1) = 0;
     else {
@@ -27124,6 +28178,7 @@
 opcode_t *
 Parrot_stringinfo_i_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 360 "src/ops/string.ops"
     if (SREG(2) == NULL)
         IREG(1) = 0;
     else {
@@ -27161,6 +28216,7 @@
 opcode_t *
 Parrot_stringinfo_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 360 "src/ops/string.ops"
     if (CONST(2)->u.string == NULL)
         IREG(1) = 0;
     else {
@@ -27198,6 +28254,7 @@
 opcode_t *
 Parrot_upcase_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 401 "src/ops/string.ops"
     SREG(1) = Parrot_str_upcase(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27205,6 +28262,7 @@
 opcode_t *
 Parrot_upcase_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 401 "src/ops/string.ops"
     SREG(1) = Parrot_str_upcase(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27212,6 +28270,7 @@
 opcode_t *
 Parrot_downcase_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 411 "src/ops/string.ops"
     SREG(1) = Parrot_str_downcase(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27219,6 +28278,7 @@
 opcode_t *
 Parrot_downcase_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 411 "src/ops/string.ops"
     SREG(1) = Parrot_str_downcase(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27226,6 +28286,7 @@
 opcode_t *
 Parrot_titlecase_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 421 "src/ops/string.ops"
     SREG(1) = Parrot_str_titlecase(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27233,6 +28294,7 @@
 opcode_t *
 Parrot_titlecase_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 421 "src/ops/string.ops"
     SREG(1) = Parrot_str_titlecase(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27240,6 +28302,7 @@
 opcode_t *
 Parrot_join_s_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 443 "src/ops/string.ops"
     SREG(1) = Parrot_str_join(interp, SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27247,6 +28310,7 @@
 opcode_t *
 Parrot_join_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 443 "src/ops/string.ops"
     SREG(1) = Parrot_str_join(interp, CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27254,6 +28318,7 @@
 opcode_t *
 Parrot_split_p_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 447 "src/ops/string.ops"
     PREG(1) = Parrot_str_split(interp, SREG(2), SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27261,6 +28326,7 @@
 opcode_t *
 Parrot_split_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 447 "src/ops/string.ops"
     PREG(1) = Parrot_str_split(interp, CONST(2)->u.string, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27268,6 +28334,7 @@
 opcode_t *
 Parrot_split_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 447 "src/ops/string.ops"
     PREG(1) = Parrot_str_split(interp, SREG(2), CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27275,6 +28342,7 @@
 opcode_t *
 Parrot_split_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 447 "src/ops/string.ops"
     PREG(1) = Parrot_str_split(interp, CONST(2)->u.string, CONST(3)->u.string);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27282,6 +28350,7 @@
 opcode_t *
 Parrot_charset_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 474 "src/ops/string.ops"
     IREG(1) = Parrot_charset_number_of_str(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27289,6 +28358,7 @@
 opcode_t *
 Parrot_charset_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 474 "src/ops/string.ops"
     IREG(1) = Parrot_charset_number_of_str(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27296,6 +28366,7 @@
 opcode_t *
 Parrot_charsetname_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 478 "src/ops/string.ops"
     SREG(1) = Parrot_charset_name(interp, IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27303,6 +28374,7 @@
 opcode_t *
 Parrot_charsetname_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 478 "src/ops/string.ops"
     SREG(1) = Parrot_charset_name(interp, cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27310,6 +28382,7 @@
 opcode_t *
 Parrot_find_charset_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 482 "src/ops/string.ops"
     const INTVAL n = Parrot_charset_number(interp, SREG(2));
     if (n < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
@@ -27324,6 +28397,7 @@
 opcode_t *
 Parrot_find_charset_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 482 "src/ops/string.ops"
     const INTVAL n = Parrot_charset_number(interp, CONST(2)->u.string);
     if (n < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
@@ -27338,6 +28412,7 @@
 opcode_t *
 Parrot_trans_charset_s_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 493 "src/ops/string.ops"
     SREG(1) = Parrot_str_change_charset(interp, SREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27345,6 +28420,7 @@
 opcode_t *
 Parrot_trans_charset_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 493 "src/ops/string.ops"
     SREG(1) = Parrot_str_change_charset(interp, CONST(2)->u.string, IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27352,6 +28428,7 @@
 opcode_t *
 Parrot_trans_charset_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 493 "src/ops/string.ops"
     SREG(1) = Parrot_str_change_charset(interp, SREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27359,6 +28436,7 @@
 opcode_t *
 Parrot_trans_charset_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 493 "src/ops/string.ops"
     SREG(1) = Parrot_str_change_charset(interp, CONST(2)->u.string, cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27366,6 +28444,7 @@
 opcode_t *
 Parrot_encoding_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 520 "src/ops/string.ops"
     IREG(1) = Parrot_encoding_number_of_str(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27373,6 +28452,7 @@
 opcode_t *
 Parrot_encoding_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 520 "src/ops/string.ops"
     IREG(1) = Parrot_encoding_number_of_str(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27380,6 +28460,7 @@
 opcode_t *
 Parrot_encodingname_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 524 "src/ops/string.ops"
     SREG(1) = Parrot_encoding_name(interp, IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27387,6 +28468,7 @@
 opcode_t *
 Parrot_encodingname_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 524 "src/ops/string.ops"
     SREG(1) = Parrot_encoding_name(interp, cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27394,6 +28476,7 @@
 opcode_t *
 Parrot_find_encoding_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 528 "src/ops/string.ops"
     const INTVAL n = Parrot_encoding_number(interp, SREG(2));
     if (n < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
@@ -27408,6 +28491,7 @@
 opcode_t *
 Parrot_find_encoding_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 528 "src/ops/string.ops"
     const INTVAL n = Parrot_encoding_number(interp, CONST(2)->u.string);
     if (n < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
@@ -27422,6 +28506,7 @@
 opcode_t *
 Parrot_trans_encoding_s_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 539 "src/ops/string.ops"
     SREG(1) = Parrot_str_change_encoding(interp, SREG(2), IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27429,6 +28514,7 @@
 opcode_t *
 Parrot_trans_encoding_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 539 "src/ops/string.ops"
     SREG(1) = Parrot_str_change_encoding(interp, CONST(2)->u.string, IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27436,6 +28522,7 @@
 opcode_t *
 Parrot_trans_encoding_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 539 "src/ops/string.ops"
     SREG(1) = Parrot_str_change_encoding(interp, SREG(2), cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27443,6 +28530,7 @@
 opcode_t *
 Parrot_trans_encoding_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 539 "src/ops/string.ops"
     SREG(1) = Parrot_str_change_encoding(interp, CONST(2)->u.string, cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
@@ -27450,6 +28538,7 @@
 opcode_t *
 Parrot_is_cclass_i_i_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 551 "src/ops/string.ops"
     IREG(1) = Parrot_str_is_cclass(interp, IREG(2), SREG(3), IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -27457,6 +28546,7 @@
 opcode_t *
 Parrot_is_cclass_i_ic_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 551 "src/ops/string.ops"
     IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], SREG(3), IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -27464,6 +28554,7 @@
 opcode_t *
 Parrot_is_cclass_i_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 551 "src/ops/string.ops"
     IREG(1) = Parrot_str_is_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -27471,6 +28562,7 @@
 opcode_t *
 Parrot_is_cclass_i_ic_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 551 "src/ops/string.ops"
     IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
@@ -27478,6 +28570,7 @@
 opcode_t *
 Parrot_is_cclass_i_i_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 551 "src/ops/string.ops"
     IREG(1) = Parrot_str_is_cclass(interp, IREG(2), SREG(3), cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -27485,6 +28578,7 @@
 opcode_t *
 Parrot_is_cclass_i_ic_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 551 "src/ops/string.ops"
     IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -27492,6 +28586,7 @@
 opcode_t *
 Parrot_is_cclass_i_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 551 "src/ops/string.ops"
     IREG(1) = Parrot_str_is_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -27499,6 +28594,7 @@
 opcode_t *
 Parrot_is_cclass_i_ic_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 551 "src/ops/string.ops"
     IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
@@ -27506,6 +28602,7 @@
 opcode_t *
 Parrot_find_cclass_i_i_s_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27513,6 +28610,7 @@
 opcode_t *
 Parrot_find_cclass_i_ic_s_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27520,6 +28618,7 @@
 opcode_t *
 Parrot_find_cclass_i_i_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27527,6 +28626,7 @@
 opcode_t *
 Parrot_find_cclass_i_ic_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27534,6 +28634,7 @@
 opcode_t *
 Parrot_find_cclass_i_i_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27541,6 +28642,7 @@
 opcode_t *
 Parrot_find_cclass_i_ic_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27548,6 +28650,7 @@
 opcode_t *
 Parrot_find_cclass_i_i_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27555,6 +28658,7 @@
 opcode_t *
 Parrot_find_cclass_i_ic_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27562,6 +28666,7 @@
 opcode_t *
 Parrot_find_cclass_i_i_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27569,6 +28674,7 @@
 opcode_t *
 Parrot_find_cclass_i_ic_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27576,6 +28682,7 @@
 opcode_t *
 Parrot_find_cclass_i_i_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27583,6 +28690,7 @@
 opcode_t *
 Parrot_find_cclass_i_ic_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27590,6 +28698,7 @@
 opcode_t *
 Parrot_find_cclass_i_i_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27597,6 +28706,7 @@
 opcode_t *
 Parrot_find_cclass_i_ic_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27604,6 +28714,7 @@
 opcode_t *
 Parrot_find_cclass_i_i_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27611,6 +28722,7 @@
 opcode_t *
 Parrot_find_cclass_i_ic_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27618,6 +28730,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_s_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27625,6 +28738,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_ic_s_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27632,6 +28746,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27639,6 +28754,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_ic_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27646,6 +28762,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27653,6 +28770,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_ic_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27660,6 +28778,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27667,6 +28786,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_ic_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27674,6 +28794,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27681,6 +28802,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_ic_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27688,6 +28810,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27695,6 +28818,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_ic_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27702,6 +28826,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27709,6 +28834,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_ic_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27716,6 +28842,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27723,6 +28850,7 @@
 opcode_t *
 Parrot_find_not_cclass_i_ic_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 579 "src/ops/string.ops"
     IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
@@ -27730,6 +28858,7 @@
 opcode_t *
 Parrot_escape_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 595 "src/ops/string.ops"
     SREG(1) = Parrot_str_escape(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27737,6 +28866,7 @@
 opcode_t *
 Parrot_compose_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 599 "src/ops/string.ops"
     SREG(1) = Parrot_str_compose(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27744,6 +28874,7 @@
 opcode_t *
 Parrot_compose_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 599 "src/ops/string.ops"
     SREG(1) = Parrot_str_compose(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27751,6 +28882,7 @@
 opcode_t *
 Parrot_spawnw_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 42 "src/ops/sys.ops"
     IREG(1) = Parrot_Run_OS_Command(interp, SREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27758,6 +28890,7 @@
 opcode_t *
 Parrot_spawnw_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 42 "src/ops/sys.ops"
     IREG(1) = Parrot_Run_OS_Command(interp, CONST(2)->u.string);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27765,6 +28898,7 @@
 opcode_t *
 Parrot_spawnw_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 46 "src/ops/sys.ops"
     IREG(1) = Parrot_Run_OS_Command_Argv(interp, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27772,6 +28906,7 @@
 opcode_t *
 Parrot_err_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 67 "src/ops/sys.ops"
     IREG(1) = errno;
 
 return (opcode_t *)cur_opcode + 2;}
@@ -27779,6 +28914,7 @@
 opcode_t *
 Parrot_err_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 71 "src/ops/sys.ops"
     const char * const tmp = strerror(errno);
     SREG(1) = string_make(interp, tmp, strlen(tmp), "ascii", 0);
 
@@ -27787,6 +28923,7 @@
 opcode_t *
 Parrot_err_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 76 "src/ops/sys.ops"
     const char * const tmp = strerror(IREG(2));
     SREG(1) = string_make(interp, tmp, strlen(tmp), "ascii", 0);
 
@@ -27795,6 +28932,7 @@
 opcode_t *
 Parrot_err_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 76 "src/ops/sys.ops"
     const char * const tmp = strerror(cur_opcode[2]);
     SREG(1) = string_make(interp, tmp, strlen(tmp), "ascii", 0);
 
@@ -27803,6 +28941,7 @@
 opcode_t *
 Parrot_time_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 91 "src/ops/sys.ops"
     IREG(1) = Parrot_intval_time();
 
 return (opcode_t *)cur_opcode + 2;}
@@ -27810,6 +28949,7 @@
 opcode_t *
 Parrot_time_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 105 "src/ops/sys.ops"
     NREG(1) = Parrot_floatval_time();
 
 return (opcode_t *)cur_opcode + 2;}
@@ -27817,6 +28957,7 @@
 opcode_t *
 Parrot_gmtime_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 178 "src/ops/sys.ops"
     struct tm tm;
     const time_t t = (time_t) IREG(2);
     char resultbuffer[26];
@@ -27829,6 +28970,7 @@
 opcode_t *
 Parrot_gmtime_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 178 "src/ops/sys.ops"
     struct tm tm;
     const time_t t = (time_t) cur_opcode[2];
     char resultbuffer[26];
@@ -27841,6 +28983,7 @@
 opcode_t *
 Parrot_localtime_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/sys.ops"
     struct tm tm;
     const time_t t = (time_t) IREG(2);
     char resultbuffer[26];
@@ -27853,6 +28996,7 @@
 opcode_t *
 Parrot_localtime_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/sys.ops"
     struct tm tm;
     const time_t t = (time_t) cur_opcode[2];
     char resultbuffer[26];
@@ -27865,6 +29009,7 @@
 opcode_t *
 Parrot_decodetime_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 196 "src/ops/sys.ops"
     struct tm tm;
     const time_t t = (time_t) IREG(2);
     Parrot_gmtime_r(&t, &tm);
@@ -27875,6 +29020,7 @@
 opcode_t *
 Parrot_decodetime_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 196 "src/ops/sys.ops"
     struct tm tm;
     const time_t t = (time_t) cur_opcode[2];
     Parrot_gmtime_r(&t, &tm);
@@ -27885,6 +29031,7 @@
 opcode_t *
 Parrot_decodelocaltime_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 203 "src/ops/sys.ops"
     struct tm tm;
     const time_t t = (time_t) IREG(2);
     Parrot_localtime_r(&t, &tm);
@@ -27895,6 +29042,7 @@
 opcode_t *
 Parrot_decodelocaltime_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 203 "src/ops/sys.ops"
     struct tm tm;
     const time_t t = (time_t) cur_opcode[2];
     Parrot_localtime_r(&t, &tm);
@@ -27905,6 +29053,7 @@
 opcode_t *
 Parrot_sysinfo_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 267 "src/ops/sys.ops"
     SREG(1) = sysinfo_s(interp, IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27912,6 +29061,7 @@
 opcode_t *
 Parrot_sysinfo_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 267 "src/ops/sys.ops"
     SREG(1) = sysinfo_s(interp, cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27919,6 +29069,7 @@
 opcode_t *
 Parrot_sysinfo_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 271 "src/ops/sys.ops"
     IREG(1) = sysinfo_i(interp, IREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27926,6 +29077,7 @@
 opcode_t *
 Parrot_sysinfo_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 271 "src/ops/sys.ops"
     IREG(1) = sysinfo_i(interp, cur_opcode[2]);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -27933,6 +29085,7 @@
 opcode_t *
 Parrot_sleep_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 285 "src/ops/sys.ops"
     opcode_t *next = cur_opcode + 2;
     if (IREG(1) < 0) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -27947,6 +29100,7 @@
 opcode_t *
 Parrot_sleep_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 285 "src/ops/sys.ops"
     opcode_t *next = cur_opcode + 2;
     if (cur_opcode[1] < 0) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -27961,6 +29115,7 @@
 opcode_t *
 Parrot_sleep_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 297 "src/ops/sys.ops"
     opcode_t *next = cur_opcode + 2;
     if (NREG(1) < 0.0) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -27975,6 +29130,7 @@
 opcode_t *
 Parrot_sleep_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 297 "src/ops/sys.ops"
     opcode_t *next = cur_opcode + 2;
     if (CONST(1)->u.number < 0.0) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -27989,6 +29145,7 @@
 opcode_t *
 Parrot_sizeof_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * 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)
@@ -28001,6 +29158,7 @@
 opcode_t *
 Parrot_sizeof_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * 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)
@@ -28013,6 +29171,7 @@
 opcode_t *
 Parrot_store_lex_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 40 "src/ops/var.ops"
     PMC     * const ctx      = CURRENT_CONTEXT(interp);
     STRING  * const lex_name = SREG(1);
     PMC     * const lex_pad  = Parrot_find_pad(interp, lex_name, ctx);
@@ -28030,6 +29189,7 @@
 opcode_t *
 Parrot_store_lex_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 40 "src/ops/var.ops"
     PMC     * const ctx      = CURRENT_CONTEXT(interp);
     STRING  * const lex_name = CONST(1)->u.string;
     PMC     * const lex_pad  = Parrot_find_pad(interp, lex_name, ctx);
@@ -28047,6 +29207,7 @@
 opcode_t *
 Parrot_store_dynamic_lex_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 65 "src/ops/var.ops"
     STRING  * const lex_name = SREG(1);
     PMC     * const ctx      =
         Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
@@ -28068,6 +29229,7 @@
 opcode_t *
 Parrot_store_dynamic_lex_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 65 "src/ops/var.ops"
     STRING  * const lex_name = CONST(1)->u.string;
     PMC     * const ctx      =
         Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
@@ -28089,6 +29251,7 @@
 opcode_t *
 Parrot_find_lex_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 94 "src/ops/var.ops"
     PMC     * const ctx      = CURRENT_CONTEXT(interp);
     STRING  * const lex_name = SREG(2);
     PMC     * const lex_pad  = Parrot_find_pad(interp, lex_name, ctx);
@@ -28110,6 +29273,7 @@
 opcode_t *
 Parrot_find_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 94 "src/ops/var.ops"
     PMC     * const ctx      = CURRENT_CONTEXT(interp);
     STRING  * const lex_name = CONST(2)->u.string;
     PMC     * const lex_pad  = Parrot_find_pad(interp, lex_name, ctx);
@@ -28131,6 +29295,7 @@
 opcode_t *
 Parrot_find_dynamic_lex_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 123 "src/ops/var.ops"
     STRING  * const lex_name = SREG(2);
     PMC     * const ctx      =
         Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
@@ -28149,6 +29314,7 @@
 opcode_t *
 Parrot_find_dynamic_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 123 "src/ops/var.ops"
     STRING  * const lex_name = CONST(2)->u.string;
     PMC     * const ctx      =
         Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
@@ -28167,6 +29333,7 @@
 opcode_t *
 Parrot_find_caller_lex_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 147 "src/ops/var.ops"
     STRING  * const lex_name = SREG(2);
     PMC     * ctx            = CURRENT_CONTEXT(interp);
     PMC     * result         = PMCNULL;
@@ -28188,6 +29355,7 @@
 opcode_t *
 Parrot_find_caller_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 147 "src/ops/var.ops"
     STRING  * const lex_name = CONST(2)->u.string;
     PMC     * ctx            = CURRENT_CONTEXT(interp);
     PMC     * result         = PMCNULL;
@@ -28209,6 +29377,7 @@
 opcode_t *
 Parrot_get_namespace_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 186 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     PREG(1) = cur_ns;
 
@@ -28217,6 +29386,7 @@
 opcode_t *
 Parrot_get_namespace_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 191 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     PMC * const ns     = Parrot_get_namespace_keyed(interp, cur_ns, PREG(2));
 
@@ -28227,6 +29397,7 @@
 opcode_t *
 Parrot_get_namespace_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 191 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     PMC * const ns     = Parrot_get_namespace_keyed(interp, cur_ns, CONST(2)->u.key);
 
@@ -28237,6 +29408,7 @@
 opcode_t *
 Parrot_get_hll_namespace_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 210 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     PREG(1) = hll_ns;
 
@@ -28245,6 +29417,7 @@
 opcode_t *
 Parrot_get_hll_namespace_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 215 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     if (PMC_IS_NULL(hll_ns))
         PREG(1) = PMCNULL;
@@ -28258,6 +29431,7 @@
 opcode_t *
 Parrot_get_hll_namespace_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 215 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     if (PMC_IS_NULL(hll_ns))
         PREG(1) = PMCNULL;
@@ -28271,6 +29445,7 @@
 opcode_t *
 Parrot_get_root_namespace_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 236 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     PREG(1) = root_ns;
 
@@ -28279,6 +29454,7 @@
 opcode_t *
 Parrot_get_root_namespace_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
@@ -28292,6 +29468,7 @@
 opcode_t *
 Parrot_get_root_namespace_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
@@ -28305,6 +29482,7 @@
 opcode_t *
 Parrot_get_global_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     PREG(1) = Parrot_find_global_op(interp, cur_ns, SREG(2), cur_opcode + 3);
 
@@ -28313,6 +29491,7 @@
 opcode_t *
 Parrot_get_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     PREG(1) = Parrot_find_global_op(interp, cur_ns, CONST(2)->u.string, cur_opcode + 3);
 
@@ -28321,6 +29500,7 @@
 opcode_t *
 Parrot_get_global_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     if (PMC_IS_NULL(cur_ns)) {
         PREG(1) = PMCNULL;
@@ -28338,6 +29518,7 @@
 opcode_t *
 Parrot_get_global_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     if (PMC_IS_NULL(cur_ns)) {
         PREG(1) = PMCNULL;
@@ -28355,6 +29536,7 @@
 opcode_t *
 Parrot_get_global_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     if (PMC_IS_NULL(cur_ns)) {
         PREG(1) = PMCNULL;
@@ -28372,6 +29554,7 @@
 opcode_t *
 Parrot_get_global_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     if (PMC_IS_NULL(cur_ns)) {
         PREG(1) = PMCNULL;
@@ -28389,6 +29572,7 @@
 opcode_t *
 Parrot_get_hll_global_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 306 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     PREG(1) = Parrot_find_global_op(interp, hll_ns, SREG(2), cur_opcode + 3);
 
@@ -28397,6 +29581,7 @@
 opcode_t *
 Parrot_get_hll_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 306 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     PREG(1) = Parrot_find_global_op(interp, hll_ns, CONST(2)->u.string, cur_opcode + 3);
 
@@ -28405,6 +29590,7 @@
 opcode_t *
 Parrot_get_hll_global_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 311 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     if (PMC_IS_NULL(hll_ns)) {
         PREG(1) = hll_ns;
@@ -28422,6 +29608,7 @@
 opcode_t *
 Parrot_get_hll_global_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 311 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     if (PMC_IS_NULL(hll_ns)) {
         PREG(1) = hll_ns;
@@ -28439,6 +29626,7 @@
 opcode_t *
 Parrot_get_hll_global_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 311 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     if (PMC_IS_NULL(hll_ns)) {
         PREG(1) = hll_ns;
@@ -28456,6 +29644,7 @@
 opcode_t *
 Parrot_get_hll_global_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 311 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     if (PMC_IS_NULL(hll_ns)) {
         PREG(1) = hll_ns;
@@ -28473,6 +29662,7 @@
 opcode_t *
 Parrot_get_root_global_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 338 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     PREG(1) = Parrot_find_global_op(interp, root_ns, SREG(2), cur_opcode + 3);
 
@@ -28481,6 +29671,7 @@
 opcode_t *
 Parrot_get_root_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 338 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     PREG(1) = Parrot_find_global_op(interp, root_ns, CONST(2)->u.string, cur_opcode + 3);
 
@@ -28489,6 +29680,7 @@
 opcode_t *
 Parrot_get_root_global_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
@@ -28505,6 +29697,7 @@
 opcode_t *
 Parrot_get_root_global_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
@@ -28521,6 +29714,7 @@
 opcode_t *
 Parrot_get_root_global_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
@@ -28537,6 +29731,7 @@
 opcode_t *
 Parrot_get_root_global_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
@@ -28553,6 +29748,7 @@
 opcode_t *
 Parrot_set_global_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     Parrot_set_global(interp, cur_ns, SREG(1), PREG(2));
 
@@ -28561,6 +29757,7 @@
 opcode_t *
 Parrot_set_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     Parrot_set_global(interp, cur_ns, CONST(1)->u.string, PREG(2));
 
@@ -28569,6 +29766,7 @@
 opcode_t *
 Parrot_set_global_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     PMC * const ns     = Parrot_make_namespace_keyed(interp, cur_ns, PREG(1));
 
@@ -28579,6 +29777,7 @@
 opcode_t *
 Parrot_set_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     PMC * const ns     = Parrot_make_namespace_keyed(interp, cur_ns, CONST(1)->u.key);
 
@@ -28589,6 +29788,7 @@
 opcode_t *
 Parrot_set_global_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     PMC * const ns     = Parrot_make_namespace_keyed(interp, cur_ns, PREG(1));
 
@@ -28599,6 +29799,7 @@
 opcode_t *
 Parrot_set_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/var.ops"
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     PMC * const ns     = Parrot_make_namespace_keyed(interp, cur_ns, CONST(1)->u.key);
 
@@ -28609,6 +29810,7 @@
 opcode_t *
 Parrot_set_hll_global_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 402 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     Parrot_set_global(interp, hll_ns, SREG(1), PREG(2));
 
@@ -28617,6 +29819,7 @@
 opcode_t *
 Parrot_set_hll_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 402 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     Parrot_set_global(interp, hll_ns, CONST(1)->u.string, PREG(2));
 
@@ -28625,6 +29828,7 @@
 opcode_t *
 Parrot_set_hll_global_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 407 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     PMC * const ns     = Parrot_make_namespace_keyed(interp, hll_ns, PREG(1));
 
@@ -28635,6 +29839,7 @@
 opcode_t *
 Parrot_set_hll_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 407 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     PMC * const ns     = Parrot_make_namespace_keyed(interp, hll_ns, CONST(1)->u.key);
 
@@ -28645,6 +29850,7 @@
 opcode_t *
 Parrot_set_hll_global_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 407 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     PMC * const ns     = Parrot_make_namespace_keyed(interp, hll_ns, PREG(1));
 
@@ -28655,6 +29861,7 @@
 opcode_t *
 Parrot_set_hll_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 407 "src/ops/var.ops"
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     PMC * const ns     = Parrot_make_namespace_keyed(interp, hll_ns, CONST(1)->u.key);
 
@@ -28665,6 +29872,7 @@
 opcode_t *
 Parrot_set_root_global_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 426 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     Parrot_set_global(interp, root_ns, SREG(1), PREG(2));
 
@@ -28673,6 +29881,7 @@
 opcode_t *
 Parrot_set_root_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 426 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     Parrot_set_global(interp, root_ns, CONST(1)->u.string, PREG(2));
 
@@ -28681,6 +29890,7 @@
 opcode_t *
 Parrot_set_root_global_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     PMC * const ns      = Parrot_make_namespace_keyed(interp, root_ns, PREG(1));
 
@@ -28691,6 +29901,7 @@
 opcode_t *
 Parrot_set_root_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     PMC * const ns      = Parrot_make_namespace_keyed(interp, root_ns, CONST(1)->u.key);
 
@@ -28701,6 +29912,7 @@
 opcode_t *
 Parrot_set_root_global_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     PMC * const ns      = Parrot_make_namespace_keyed(interp, root_ns, PREG(1));
 
@@ -28711,6 +29923,7 @@
 opcode_t *
 Parrot_set_root_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/var.ops"
     PMC * const root_ns = interp->root_namespace;
     PMC * const ns      = Parrot_make_namespace_keyed(interp, root_ns, CONST(1)->u.key);
 
@@ -28721,6 +29934,7 @@
 opcode_t *
 Parrot_find_name_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 463 "src/ops/var.ops"
     if (!SREG(2)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_INVALID_OPERATION,
@@ -28735,6 +29949,7 @@
 opcode_t *
 Parrot_find_name_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 463 "src/ops/var.ops"
     if (!CONST(2)->u.string) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_INVALID_OPERATION,
@@ -28749,6 +29964,7 @@
 opcode_t *
 Parrot_find_sub_not_null_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 481 "src/ops/var.ops"
     opcode_t *dest = cur_opcode + 3;
     PMC *sub = Parrot_find_name_op(interp, SREG(2), dest);
 
@@ -28766,6 +29982,7 @@
 opcode_t *
 Parrot_find_sub_not_null_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 481 "src/ops/var.ops"
     opcode_t *dest = cur_opcode + 3;
     PMC *sub = Parrot_find_name_op(interp, CONST(2)->u.string, dest);
 
@@ -28783,6 +30000,7 @@
 opcode_t *
 Parrot_trap(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 46 "src/ops/experimental.ops"
 INTVAL unused = PARROT_WARNINGS_test(interp,PARROT_WARNINGS_DEPRECATED_FLAG) &&
   fprintf(stderr,"Warning: instruction 'trap' is deprecated\n");
 #if defined(__GNUC__) && defined(i386)
@@ -28797,6 +30015,7 @@
 opcode_t *
 Parrot_set_label_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 71 "src/ops/experimental.ops"
     VTABLE_set_pointer(interp, PREG(1), (CUR_OPCODE + cur_opcode[2]));
 
 return (opcode_t *)cur_opcode + 3;}
@@ -28804,6 +30023,7 @@
 opcode_t *
 Parrot_get_label_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 75 "src/ops/experimental.ops"
     void * const ptr = VTABLE_get_pointer(interp, PREG(2));
     IREG(1) =  PTR2INTVAL(ptr);
 
@@ -28812,6 +30032,7 @@
 opcode_t *
 Parrot_fetch_p_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -28835,6 +30056,7 @@
 opcode_t *
 Parrot_fetch_p_pc_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -28858,6 +30080,7 @@
 opcode_t *
 Parrot_fetch_p_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -28881,6 +30104,7 @@
 opcode_t *
 Parrot_fetch_p_pc_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -28904,6 +30128,7 @@
 opcode_t *
 Parrot_fetch_p_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -28927,6 +30152,7 @@
 opcode_t *
 Parrot_fetch_p_pc_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -28950,6 +30176,7 @@
 opcode_t *
 Parrot_fetch_p_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -28973,6 +30200,7 @@
 opcode_t *
 Parrot_fetch_p_pc_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -28996,6 +30224,7 @@
 opcode_t *
 Parrot_fetch_p_p_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29019,6 +30248,7 @@
 opcode_t *
 Parrot_fetch_p_pc_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29042,6 +30272,7 @@
 opcode_t *
 Parrot_fetch_p_p_ic_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29065,6 +30296,7 @@
 opcode_t *
 Parrot_fetch_p_pc_ic_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29088,6 +30320,7 @@
 opcode_t *
 Parrot_fetch_p_p_i_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29111,6 +30344,7 @@
 opcode_t *
 Parrot_fetch_p_pc_i_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29134,6 +30368,7 @@
 opcode_t *
 Parrot_fetch_p_p_ic_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29157,6 +30392,7 @@
 opcode_t *
 Parrot_fetch_p_pc_ic_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29180,6 +30416,7 @@
 opcode_t *
 Parrot_fetch_p_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29203,6 +30440,7 @@
 opcode_t *
 Parrot_fetch_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29226,6 +30464,7 @@
 opcode_t *
 Parrot_fetch_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29249,6 +30488,7 @@
 opcode_t *
 Parrot_fetch_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29272,6 +30512,7 @@
 opcode_t *
 Parrot_fetch_p_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29295,6 +30536,7 @@
 opcode_t *
 Parrot_fetch_p_pc_s_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29318,6 +30560,7 @@
 opcode_t *
 Parrot_fetch_p_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29341,6 +30584,7 @@
 opcode_t *
 Parrot_fetch_p_pc_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29364,6 +30608,7 @@
 opcode_t *
 Parrot_vivify_p_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29390,6 +30635,7 @@
 opcode_t *
 Parrot_vivify_p_pc_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29416,6 +30662,7 @@
 opcode_t *
 Parrot_vivify_p_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29442,6 +30689,7 @@
 opcode_t *
 Parrot_vivify_p_pc_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29468,6 +30716,7 @@
 opcode_t *
 Parrot_vivify_p_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29494,6 +30743,7 @@
 opcode_t *
 Parrot_vivify_p_pc_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29520,6 +30770,7 @@
 opcode_t *
 Parrot_vivify_p_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29546,6 +30797,7 @@
 opcode_t *
 Parrot_vivify_p_pc_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29572,6 +30824,7 @@
 opcode_t *
 Parrot_vivify_p_p_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29598,6 +30851,7 @@
 opcode_t *
 Parrot_vivify_p_pc_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29624,6 +30878,7 @@
 opcode_t *
 Parrot_vivify_p_p_ic_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29650,6 +30905,7 @@
 opcode_t *
 Parrot_vivify_p_pc_ic_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29676,6 +30932,7 @@
 opcode_t *
 Parrot_vivify_p_p_i_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29702,6 +30959,7 @@
 opcode_t *
 Parrot_vivify_p_pc_i_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29728,6 +30986,7 @@
 opcode_t *
 Parrot_vivify_p_p_ic_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29754,6 +31013,7 @@
 opcode_t *
 Parrot_vivify_p_pc_ic_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29780,6 +31040,7 @@
 opcode_t *
 Parrot_vivify_p_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29806,6 +31067,7 @@
 opcode_t *
 Parrot_vivify_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29832,6 +31094,7 @@
 opcode_t *
 Parrot_vivify_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29858,6 +31121,7 @@
 opcode_t *
 Parrot_vivify_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29884,6 +31148,7 @@
 opcode_t *
 Parrot_vivify_p_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29910,6 +31175,7 @@
 opcode_t *
 Parrot_vivify_p_pc_s_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29936,6 +31202,7 @@
 opcode_t *
 Parrot_vivify_p_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29962,6 +31229,7 @@
 opcode_t *
 Parrot_vivify_p_pc_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
 
     if (PMC_IS_NULL(PREG(1))) {
@@ -29988,6 +31256,7 @@
 opcode_t *
 Parrot_new_p_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 250 "src/ops/experimental.ops"
     STRING * const name   = SREG(2);
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
@@ -30014,6 +31283,7 @@
 opcode_t *
 Parrot_new_p_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 250 "src/ops/experimental.ops"
     STRING * const name   = CONST(2)->u.string;
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
@@ -30040,6 +31310,7 @@
 opcode_t *
 Parrot_new_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 250 "src/ops/experimental.ops"
     STRING * const name   = SREG(2);
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
@@ -30066,6 +31337,7 @@
 opcode_t *
 Parrot_new_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 250 "src/ops/experimental.ops"
     STRING * const name   = CONST(2)->u.string;
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
@@ -30092,6 +31364,7 @@
 opcode_t *
 Parrot_new_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/experimental.ops"
     PMC * const  name_key = PREG(2);
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30125,6 +31398,7 @@
 opcode_t *
 Parrot_new_p_pc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/experimental.ops"
     PMC * const  name_key = CONST(2)->u.key;
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30158,6 +31432,7 @@
 opcode_t *
 Parrot_new_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/experimental.ops"
     PMC * const  name_key = PREG(2);
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30191,6 +31466,7 @@
 opcode_t *
 Parrot_new_p_pc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/experimental.ops"
     PMC * const  name_key = CONST(2)->u.key;
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30224,6 +31500,7 @@
 opcode_t *
 Parrot_root_new_p_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/experimental.ops"
     PMC * const  name_key = PREG(2);
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30259,6 +31536,7 @@
 opcode_t *
 Parrot_root_new_p_pc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/experimental.ops"
     PMC * const  name_key = CONST(2)->u.key;
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30294,6 +31572,7 @@
 opcode_t *
 Parrot_root_new_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/experimental.ops"
     PMC * const  name_key = PREG(2);
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30329,6 +31608,7 @@
 opcode_t *
 Parrot_root_new_p_pc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/experimental.ops"
     PMC * const  name_key = CONST(2)->u.key;
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30361,6 +31641,7 @@
 
 return (opcode_t *)cur_opcode + 4;}
 
+#line 31556 "src/ops/core_ops.c"
 
 /*
 ** Op lookup function:

Modified: branches/ops_pct/src/ops/io.ops
==============================================================================
--- branches/ops_pct/src/ops/io.ops	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/ops/io.ops	Sat May  8 02:08:40 2010	(r46399)
@@ -390,7 +390,7 @@
 
     *s = NULL;
     if (Parrot_io_peek(interp, _PIO_STDIN(interp), s) < 0) {
-        $1 = Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
+        $1 = STRINGNULL;
     }
 }
 
@@ -399,7 +399,7 @@
 
     *s = NULL;
     if (Parrot_io_peek(interp, $2, s) < 0) {
-        $1 = Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
+        $1 = STRINGNULL;
     }
 }
 

Modified: branches/ops_pct/src/ops/string.ops
==============================================================================
--- branches/ops_pct/src/ops/string.ops	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/ops/string.ops	Sat May  8 02:08:40 2010	(r46399)
@@ -184,19 +184,11 @@
 =cut
 
 inline op length(out INT, in STR) :base_mem {
-    $1 = $2 ? Parrot_str_byte_length(interp, $2) : 0;
+    $1 = Parrot_str_length(interp, $2);
 }
 
 inline op bytelength(out INT, in STR) :base_mem {
-    UINTVAL n;
-    const STRING * const s = $2;
-    if (STRING_IS_NULL(s))
-        n = 0;
-    else {
-        n = s->bufused;
-        PARROT_ASSERT(n == ENCODING_BYTES(interp, $2));
-    }
-    $1 = n;
+    $1 = Parrot_str_byte_length(interp, $2);
 }
 
 

Modified: branches/ops_pct/src/packfile.c
==============================================================================
--- branches/ops_pct/src/packfile.c	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/packfile.c	Sat May  8 02:08:40 2010	(r46399)
@@ -4122,26 +4122,16 @@
     INTVAL                i;
 
     /* Free any keys. */
-    if (self->keys) {
-        for (i = 0; i < self->num_keys; ++i)
-            mem_gc_free(interp, self->keys[i]);
-
+    if (self->keys)
         mem_gc_free(interp, self->keys);
-    }
 
     /* Free any groups. */
-    if (self->groups) {
-        for (i = 0; i < self->num_groups; ++i)
-            mem_gc_free(interp, self->groups[i]);
+    if (self->groups)
         mem_gc_free(interp, self->groups);
-    }
 
     /* Free any entries. */
-    if (self->entries) {
-        for (i = 0; i < self->num_entries; ++i)
-            mem_gc_free(interp, self->entries[i]);
+    if (self->entries)
         mem_gc_free(interp, self->entries);
-    }
 }
 
 
@@ -4195,7 +4185,7 @@
     *cursor++ = self->num_keys;
 
     for (i = 0; i < self->num_keys; ++i) {
-        const PackFile_Annotations_Key * const key = self->keys[i];
+        const PackFile_Annotations_Key * const key = self->keys + i;
         *cursor++ = key->name;
         *cursor++ = key->type;
     }
@@ -4204,7 +4194,7 @@
     *cursor++ = self->num_groups;
 
     for (i = 0; i < self->num_groups; ++i) {
-        const PackFile_Annotations_Group * const group = self->groups[i];
+        const PackFile_Annotations_Group * const group = self->groups + i;
         *cursor++ = group->bytecode_offset;
         *cursor++ = group->entries_offset;
     }
@@ -4213,7 +4203,7 @@
     *cursor++ = self->num_entries;
 
     for (i = 0; i < self->num_entries; ++i) {
-        const PackFile_Annotations_Entry * const entry = self->entries[i];
+        const PackFile_Annotations_Entry * const entry = self->entries + i;
         *cursor++ = entry->bytecode_offset;
         *cursor++ = entry->key;
         *cursor++ = entry->value;
@@ -4255,11 +4245,10 @@
                   self->num_keys));
 
     self->keys     = mem_gc_allocate_n_zeroed_typed(interp,
-            self->num_keys, PackFile_Annotations_Key *);
+            self->num_keys, PackFile_Annotations_Key);
 
     for (i = 0; i < self->num_keys; ++i) {
-        PackFile_Annotations_Key * const key = self->keys[i] =
-                mem_gc_allocate_zeroed_typed(interp, PackFile_Annotations_Key);
+        PackFile_Annotations_Key * const key = self->keys + i;
         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",
@@ -4269,12 +4258,10 @@
     /* Unpack groups. */
     self->num_groups = PF_fetch_opcode(seg->pf, &cursor);
     self->groups     = mem_gc_allocate_n_zeroed_typed(interp,
-            self->num_groups, PackFile_Annotations_Group *);
+            self->num_groups, PackFile_Annotations_Group);
 
     for (i = 0; i < self->num_groups; ++i) {
-        PackFile_Annotations_Group * const group =
-            self->groups[i] = mem_gc_allocate_zeroed_typed(interp,
-                    PackFile_Annotations_Group);
+        PackFile_Annotations_Group * const group = self->groups + i;
         group->bytecode_offset = PF_fetch_opcode(seg->pf, &cursor);
         group->entries_offset  = PF_fetch_opcode(seg->pf, &cursor);
         TRACE_PRINTF_VAL((
@@ -4286,11 +4273,9 @@
     /* Unpack entries. */
     self->num_entries = PF_fetch_opcode(seg->pf, &cursor);
     self->entries     = mem_gc_allocate_n_zeroed_typed(interp,
-            self->num_entries, PackFile_Annotations_Entry *);
+            self->num_entries, PackFile_Annotations_Entry);
     for (i = 0; i < self->num_entries; ++i) {
-        PackFile_Annotations_Entry * const entry =
-            self->entries[i]   = mem_gc_allocate_zeroed_typed(interp,
-                    PackFile_Annotations_Entry);
+        PackFile_Annotations_Entry * const entry = self->entries + i;
         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);
@@ -4338,7 +4323,7 @@
     /* Dump keys. */
     Parrot_io_printf(interp, "\n  keys => [\n");
     for (i = 0; i < self->num_keys; ++i) {
-        const PackFile_Annotations_Key * const key = self->keys[i];
+        const PackFile_Annotations_Key * const key = self->keys + i;
         Parrot_io_printf(interp, "    #%d\n    [\n", i);
         Parrot_io_printf(interp, "        NAME => %Ss\n",
                 PF_CONST(self->code, key->name)->u.string);
@@ -4355,7 +4340,7 @@
     /* Dump groups. */
     Parrot_io_printf(interp, "\n  groups => [\n");
     for (i = 0; i < self->num_groups; ++i) {
-        const PackFile_Annotations_Group * const group = self->groups[i];
+        const PackFile_Annotations_Group * const group = self->groups + i;
         Parrot_io_printf(interp, "    #%d\n    [\n", i);
         Parrot_io_printf(interp, "        BYTECODE_OFFSET => %d\n",
                 group->bytecode_offset);
@@ -4370,7 +4355,7 @@
     Parrot_io_printf(interp, "\n  entries => [\n");
 
     for (i = 0; i < self->num_entries; ++i) {
-        const PackFile_Annotations_Entry * const entry = self->entries[i];
+        const PackFile_Annotations_Entry * const entry = self->entries + i;
         Parrot_io_printf(interp, "    #%d\n    [\n", i);
         Parrot_io_printf(interp, "        BYTECODE_OFFSET => %d\n",
                 entry->bytecode_offset);
@@ -4408,14 +4393,13 @@
     /* Allocate extra space for the group in the groups array. */
     if (self->groups)
         self->groups = mem_gc_realloc_n_typed_zeroed(interp, self->groups,
-            1 + self->num_groups, self->num_groups, PackFile_Annotations_Group *);
+            1 + self->num_groups, self->num_groups, PackFile_Annotations_Group);
     else
         self->groups = mem_gc_allocate_n_typed(interp,
-                1 + self->num_groups, PackFile_Annotations_Group *);
+                1 + self->num_groups, PackFile_Annotations_Group);
 
     /* Store details. */
-    group = self->groups[self->num_groups] =
-                mem_gc_allocate_zeroed_typed(interp, PackFile_Annotations_Group);
+    group = self->groups + self->num_groups;
     group->bytecode_offset = offset;
     group->entries_offset  = self->num_entries;
 
@@ -4452,7 +4436,7 @@
     INTVAL   i;
 
     for (i = 0; i < self->num_keys; ++i) {
-        STRING * const test_key = PF_CONST(self->code, self->keys[i]->name)->u.string;
+        STRING * const test_key = PF_CONST(self->code, self->keys[i].name)->u.string;
         if (Parrot_str_equal(interp, test_key, key_name)) {
             key_id = i;
             break;
@@ -4463,22 +4447,21 @@
         /* We do have it. Add key entry. */
         if (self->keys)
             self->keys = mem_gc_realloc_n_typed_zeroed(interp, self->keys,
-                    1 + self->num_keys, self->num_keys, PackFile_Annotations_Key *);
+                    1 + self->num_keys, self->num_keys, PackFile_Annotations_Key);
         else
             self->keys = mem_gc_allocate_n_typed(interp,
-                    1 + self->num_keys, PackFile_Annotations_Key *);
+                    1 + self->num_keys, PackFile_Annotations_Key);
 
         key_id             = self->num_keys;
-        self->keys[key_id] = mem_gc_allocate_typed(interp, PackFile_Annotations_Key);
         ++self->num_keys;
 
         /* Populate it. */
-        self->keys[key_id]->name = key;
-        self->keys[key_id]->type = type;
+        self->keys[key_id].name = key;
+        self->keys[key_id].type = type;
     }
     else {
         /* Ensure key types are compatible. */
-        if (self->keys[key_id]->type != type)
+        if (self->keys[key_id].type != type)
             Parrot_ex_throw_from_c_args(interp, NULL,
                 EXCEPTION_INVALID_OPERATION,
                 "Annotations with different types of value used for key '%S'\n",
@@ -4488,16 +4471,14 @@
     /* Add annotations entry. */
     if (self->entries)
             self->entries = mem_gc_realloc_n_typed(interp, self->entries,
-                    1 + self->num_entries, PackFile_Annotations_Entry *);
+                    1 + self->num_entries, PackFile_Annotations_Entry);
         else
             self->entries = mem_gc_allocate_n_typed(interp,
-                    1 + self->num_entries, PackFile_Annotations_Entry *);
+                    1 + self->num_entries, PackFile_Annotations_Entry);
 
-    self->entries[self->num_entries]                  =
-                        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;
+    self->entries[self->num_entries].bytecode_offset = offset;
+    self->entries[self->num_entries].key             = key_id;
+    self->entries[self->num_entries].value           = value;
 
     ++self->num_entries;
 }
@@ -4572,7 +4553,7 @@
 
     if (!STRING_IS_NULL(key)) {
         for (i = 0; i < self->num_keys; ++i) {
-            STRING * const test_key = PF_CONST(self->code, self->keys[i]->name)->u.string;
+            STRING * const test_key = PF_CONST(self->code, self->keys[i].name)->u.string;
             if (Parrot_str_equal(interp, test_key, key)) {
                 key_id = i;
                 break;
@@ -4585,10 +4566,10 @@
 
     /* Use groups to find search start point. */
     for (i = 0; i < self->num_groups; ++i)
-        if (offset < self->groups[i]->bytecode_offset)
+        if (offset < self->groups[i].bytecode_offset)
             break;
         else
-            start_entry = self->groups[i]->entries_offset;
+            start_entry = self->groups[i].entries_offset;
 
     if (key_id == -1) {
         /* Look through entries, storing what we find by key and tracking those
@@ -4599,11 +4580,11 @@
                 self->num_keys, opcode_t);
 
         for (i = start_entry; i < self->num_entries; ++i) {
-            if (self->entries[i]->bytecode_offset >= offset)
+            if (self->entries[i].bytecode_offset >= offset)
                 break;
 
-            latest_values[self->entries[i]->key] = self->entries[i]->value;
-            have_values[self->entries[i]->key]   = 1;
+            latest_values[self->entries[i].key] = self->entries[i].value;
+            have_values[self->entries[i].key]   = 1;
         }
 
         /* Create hash of values we have. */
@@ -4611,9 +4592,9 @@
 
         for (i = 0; i < self->num_keys; ++i) {
             if (have_values[i]) {
-                STRING * const key_name = PF_CONST(self->code, self->keys[i]->name)->u.string;
+                STRING * const key_name = PF_CONST(self->code, self->keys[i].name)->u.string;
                 VTABLE_set_pmc_keyed_str(interp, result, key_name,
-                        make_annotation_value_pmc(interp, self, self->keys[i]->type,
+                        make_annotation_value_pmc(interp, self, self->keys[i].type,
                                 latest_values[i]));
             }
         }
@@ -4627,11 +4608,11 @@
         opcode_t found_value  = 0;
 
         for (i = start_entry; i < self->num_entries; ++i) {
-            if (self->entries[i]->bytecode_offset >= offset)
+            if (self->entries[i].bytecode_offset >= offset)
                 break;
 
-            if (self->entries[i]->key == key_id) {
-                latest_value = self->entries[i]->value;
+            if (self->entries[i].key == key_id) {
+                latest_value = self->entries[i].value;
                 found_value  = 1;
             }
         }
@@ -4641,7 +4622,7 @@
             result = PMCNULL;
         else
             result = make_annotation_value_pmc(interp, self,
-                    self->keys[key_id]->type, latest_value);
+                    self->keys[key_id].type, latest_value);
     }
 
     return result;

Modified: branches/ops_pct/src/packout.c
==============================================================================
--- branches/ops_pct/src/packout.c	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/packout.c	Sat May  8 02:08:40 2010	(r46399)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 This program is free software. It is subject to the same license as
 Parrot itself.
 $Id$
@@ -218,24 +218,126 @@
 PARROT_EXPORT
 int
 PackFile_find_in_const(PARROT_INTERP,
-        ARGIN(const PackFile_ConstTable *ct), ARGIN(PMC *key), int type)
+    ARGIN(const PackFile_ConstTable *ct), ARGIN(PMC *key), int type)
 {
     ASSERT_ARGS(PackFile_find_in_const)
-    int      i;
+    int i = PackFile_ConstTable_rlookup(interp, ct, key, type);
+
+    if (i < 0) {
+        Parrot_io_eprintf(NULL, "find_in_const: couldn't find const for key\n");
+        Parrot_exit(interp, 1);
+    }
+
+    return i;
+}
+
+/*
+
+=item C<int PackFile_ConstTable_rlookup(PARROT_INTERP, const PackFile_ConstTable
+*ct, PMC *key, int type)>
+
+Reverse lookup a constant in the constant table.
+
+TODO: use a hash to make these O(1) for strings
+
+=cut
+
+*/
+
+PARROT_EXPORT
+int
+PackFile_ConstTable_rlookup(PARROT_INTERP,
+    ARGIN(const PackFile_ConstTable *ct), ARGIN(PMC *key), int type)
+{
+    ASSERT_ARGS(PackFile_ConstTable_rlookup)
+    int      i, strings;
     FLOATVAL key_num;
     STRING  *key_str;
+    PMC     *string_list;
+
+    PARROT_ASSERT(type == PFC_STRING || type == PFC_NUMBER);
 
     GETATTR_Key_str_key(interp, key, key_str);
     GETATTR_Key_num_key(interp, key, key_num);
 
+    /*
+     * string_hash contains array of all possible charset/encoding
+     * combinations for given string.
+     *
+     * Because we don't have templateble PMC like tuple<charset, encoding, i>
+     * we store FIA [charset ^ encoding, i].
+     *
+     * So cache looks like this:
+     *   "foo" => [
+     *      [charset1 ^ encoding1, index1],
+     *      ...
+     *      [charsetN ^ encodingN, indexN]
+     *   ]
+     */
+
+    if (type == PFC_STRING) {
+        /* Auto-vivify cache */
+        if (PMC_IS_NULL(ct->string_hash)) {
+            DECL_CONST_CAST;
+            PackFile_ConstTable * c = PARROT_const_cast(PackFile_ConstTable*, ct);
+            c->string_hash = Parrot_pmc_new(interp, enum_class_Hash);
+        }
+
+        /* Auto-vivify cache item */
+        string_list = VTABLE_get_pmc_keyed_str(interp, ct->string_hash, key_str);
+        if (PMC_IS_NULL(string_list)) {
+            string_list = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+            VTABLE_set_pmc_keyed_str(interp, ct->string_hash, key_str, string_list);
+        }
+
+        /* Iterate of cache and try to find exactly this string */
+        strings = VTABLE_elements(interp, string_list);
+        for (i = 0; i < strings; ++i) {
+            PMC    *item = VTABLE_get_pmc_keyed_int(interp, string_list, i);
+            INTVAL xored = VTABLE_get_integer_keyed_int(interp, item, 0);
+            if (((size_t)key_str->encoding ^ (size_t)key_str->charset) == (size_t)xored)
+                return VTABLE_get_integer_keyed_int(interp, item, 1);
+        }
+    }
+
     for (i = 0; i < ct->const_count; ++i) {
-        if (type == PFC_STRING && ct->constants[i]->u.string == key_str)
-            return i;
-        if (type == PFC_NUMBER && ct->constants[i]->u.number == key_num)
-            return i;
+        PackFile_Constant *constant = ct->constants[i];
+
+        switch (type) {
+          case PFC_STRING:
+            if (constant->type == PFC_STRING) {
+                STRING * const sc = constant->u.string;
+                if (Parrot_str_equal(interp, key_str, sc)
+                &&  Parrot_charset_number_of_str(interp, key_str)
+                ==  Parrot_charset_number_of_str(interp, sc)
+                &&  Parrot_encoding_number_of_str(interp, key_str)
+                ==  Parrot_encoding_number_of_str(interp, sc)) {
+                    /* Cache found string */
+                    PMC *item = Parrot_pmc_new_init_int(interp,
+                                    enum_class_FixedIntegerArray, 2);
+                    VTABLE_set_integer_keyed_int(interp, item, 0,
+                            (size_t)sc->encoding ^ (size_t)sc->charset);
+                    VTABLE_set_integer_keyed_int(interp, item, 1,
+                            i);
+                    VTABLE_push_pmc(interp, string_list, item);
+                    return i;
+                }
+            }
+            break;
+
+          case PFC_NUMBER:
+            if (constant->type == PFC_NUMBER)
+                if (constant->u.number == key_num)
+                    return i;
+            break;
+
+          default:
+            PANIC(interp, "Universe imploded. Did you divide by zero?");
+        }
     }
-    Parrot_io_eprintf(NULL, "find_in_const: couldn't find const for key\n");
-    Parrot_exit(interp, 1);
+
+    /* not found */
+    return -1;
 }
 
 /*

Modified: branches/ops_pct/src/pmc/codestring.pmc
==============================================================================
--- branches/ops_pct/src/pmc/codestring.pmc	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/pmc/codestring.pmc	Sat May  8 02:08:40 2010	(r46399)
@@ -141,7 +141,7 @@
         }
 
         fmt    = Parrot_str_replace(INTERP, fmt, pos, 2, repl);
-        replen = Parrot_str_byte_length(INTERP, repl);
+        replen = Parrot_str_length(INTERP, repl);
     }
 
     GET_ATTR_str_val(INTERP, SELF, S1);
@@ -151,7 +151,7 @@
     VTABLE_set_string_keyed_int(INTERP, parts, 1, fmt);
 
     /* Add a newline if necessary */
-    if ('\n' != Parrot_str_indexed(INTERP, fmt, Parrot_str_byte_length(INTERP, fmt) - 1))
+    if ('\n' != Parrot_str_indexed(INTERP, fmt, Parrot_str_length(INTERP, fmt) - 1))
         VTABLE_set_string_keyed_int(INTERP, parts, 2, newline);
 
     S1 = Parrot_str_join(INTERP, STRINGNULL, parts);
@@ -188,7 +188,7 @@
         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);
+        eos  = Parrot_str_length(INTERP, str);
         /* find the first newline, if any */
         jpos = Parrot_str_find_cclass(INTERP, enum_cclass_newline,
                                       str, 0, eos);

Modified: branches/ops_pct/src/pmc/filehandle.pmc
==============================================================================
--- branches/ops_pct/src/pmc/filehandle.pmc	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/pmc/filehandle.pmc	Sat May  8 02:08:40 2010	(r46399)
@@ -459,7 +459,6 @@
 
             result = Parrot_io_reads(INTERP, filehandle, size);
             Parrot_io_close(INTERP, filehandle);
-            RETURN(STRING *result);
         }
         else {
             /* slurp open file */
@@ -467,19 +466,16 @@
                 Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_PIO_ERROR,
                     "Cannot readall without a file name or open filehandle");
 
-            result = Parrot_str_new_noinit(INTERP, enum_stringrep_one, 0);
-
             /* Do line buffering on the filehandle */
             if (!(PARROT_FILEHANDLE(SELF)->flags & PIO_F_LINEBUF))
                 Parrot_io_setlinebuf(INTERP, SELF);
 
+            result = STRINGNULL;
             do {
                 STRING * const part = Parrot_io_reads(INTERP, SELF, 0);
-                result = Parrot_str_concat(INTERP, result, part);
-
-                if (Parrot_io_eof(INTERP, SELF))
-                    break;
-            } while (1);
+                result = STRING_IS_NULL(result) ? part :
+                        Parrot_str_concat(INTERP, result, part);
+            } while (!Parrot_io_eof(INTERP, SELF));
         }
 
         RETURN(STRING *result);

Modified: branches/ops_pct/src/pmc/imageio.pmc
==============================================================================
--- branches/ops_pct/src/pmc/imageio.pmc	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/pmc/imageio.pmc	Sat May  8 02:08:40 2010	(r46399)
@@ -536,23 +536,15 @@
     VTABLE void push_string(STRING *v) {
         if (PObj_flag_TEST(private1, SELF)) {
             /* store a reference to constant table entry of string */
-            int i;
+            PMC *v_pmc = key_new_string(interp, v);
             PackFile_ConstTable *table = PARROT_IMAGEIO(SELF)->pf_ct;
-            for (i = 0; i < table->const_count; i++) {
-                PackFile_Constant *constant = table->constants[i];
-                if (constant->type == PFC_STRING) {
-                    STRING * const sc = constant->u.string;
-                    if (Parrot_str_equal(INTERP, v, sc)
-                    && Parrot_charset_number_of_str(INTERP, v)
-                    ==  Parrot_charset_number_of_str(INTERP, sc)
-                    &&  Parrot_encoding_number_of_str(INTERP, v)
-                    ==  Parrot_encoding_number_of_str(INTERP, sc))
-                    {
-                        STATICSELF.push_integer(i);
-                        return;
-                    }
-                }
+            int idx = PackFile_ConstTable_rlookup(INTERP, table, v_pmc, PFC_STRING);
+
+            if (idx >= 0) {
+                STATICSELF.push_integer(idx);
+                return;
             }
+
             /* XXX
              * handle cases where the PMC has changed after Parrot_freeze_strings was called
              * eg: :immediate subs

Modified: branches/ops_pct/src/pmc/imageiosize.pmc
==============================================================================
--- branches/ops_pct/src/pmc/imageiosize.pmc	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/pmc/imageiosize.pmc	Sat May  8 02:08:40 2010	(r46399)
@@ -246,23 +246,16 @@
 
     VTABLE void push_string(STRING *v) {
         if (PObj_flag_TEST(private1, SELF)) {
-            /* look for a reference to constant table entry of string */
-            int i;
+            /* store a reference to constant table entry of string */
+            PMC *v_pmc = key_new_string(interp, v);
             PackFile_ConstTable *table = PARROT_IMAGEIOSIZE(SELF)->pf_ct;
-            for (i = 0; i < table->const_count; i++) {
-                PackFile_Constant *constant = table->constants[i];
-                if (constant->type == PFC_STRING) {
-                    STRING * const sc = constant->u.string;
-                    if (Parrot_str_equal(INTERP, v, sc)
-                    &&  Parrot_charset_number_of_str(INTERP, v)
-                    ==  Parrot_charset_number_of_str(INTERP, sc)
-                    &&  Parrot_encoding_number_of_str(INTERP, v)
-                    ==  Parrot_encoding_number_of_str(INTERP, sc)) {
-                        STATICSELF.push_integer(i);
-                        return;
-                    }
-                }
+            int idx = PackFile_ConstTable_rlookup(INTERP, table, v_pmc, PFC_STRING);
+
+            if (idx >= 0) {
+                STATICSELF.push_integer(idx);
+                return;
             }
+
             /* XXX
              * handle cases where the PMC has changed after Parrot_freeze_strings was called
              * eg: :immediate subs

Modified: branches/ops_pct/src/pmc/packfileannotations.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfileannotations.pmc	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/pmc/packfileannotations.pmc	Sat May  8 02:08:40 2010	(r46399)
@@ -37,6 +37,9 @@
     /* ConstantTable used for names lookup */
     ATTR PMC *const_table;
 
+    /* Annotations group: two RIA for a now */
+    ATTR PMC *gr_byte;
+    ATTR PMC *gr_entries;
     /* RPA of Annotation */
     ATTR PMC *annotations;
 
@@ -219,11 +222,25 @@
         PMC      *annotation;
         Parrot_PackfileAnnotation_attributes *annotation_attrs;
 
+        /* Copy annotations groups */
+        if (a->num_groups > 0) {
+            attrs->gr_byte  = Parrot_pmc_new_init_int(INTERP,
+                    enum_class_ResizableIntegerArray, a->num_groups);
+            attrs->gr_entries = Parrot_pmc_new_init_int(INTERP,
+                    enum_class_ResizableIntegerArray, a->num_groups);
+            for (i = 0; i < a->num_groups; ++i) {
+                VTABLE_set_integer_keyed_int(INTERP, attrs->gr_byte, i,
+                        a->groups[i].bytecode_offset);
+                VTABLE_set_integer_keyed_int(INTERP, attrs->gr_entries, i,
+                        a->groups[i].entries_offset);
+            }
+        }
+
         /* Copy annotations to own array */
         VTABLE_set_integer_native(INTERP, attrs->annotations, a->num_entries);
         for (i = 0; i < a->num_entries; ++i) {
-            PackFile_Annotations_Entry *entry = a->entries[i];
-            PackFile_Annotations_Key   *key   = a->keys[entry->key];
+            PackFile_Annotations_Entry *entry = a->entries + i;
+            PackFile_Annotations_Key   *key   = a->keys + entry->key;
             annotation = Parrot_pmc_new(INTERP, enum_class_PackfileAnnotation);
 
             /* Poke directly to annotation attributes. */
@@ -280,6 +297,21 @@
 
         res->base.type = PF_ANNOTATIONS_SEG;
 
+        /* Create annotations groups */
+        num = PMC_IS_NULL(attrs->gr_byte) ?
+            (INTVAL)0 : VTABLE_elements(INTERP, attrs->gr_byte);
+        res->num_groups = num;
+        if (num > 0) {
+            res->groups = mem_gc_allocate_n_zeroed_typed(interp,
+                    num, PackFile_Annotations_Group);
+            for (i = 0; i < num; ++i) {
+                res->groups[i].bytecode_offset =
+                        VTABLE_get_integer_keyed_int(INTERP, attrs->gr_byte, i);
+                res->groups[i].entries_offset =
+                        VTABLE_get_integer_keyed_int(INTERP, attrs->gr_entries, i);
+            }
+        }
+
         /*
             Create keys. Hash will be created in next structure:
             keys => {
@@ -305,7 +337,7 @@
         /* Iterate over stored annotations and create Key if required. */
         num = VTABLE_elements(INTERP, attrs->annotations);
         res->num_entries = num;
-        res->entries = mem_gc_allocate_n_typed(INTERP, num, PackFile_Annotations_Entry*);
+        res->entries = mem_gc_allocate_n_typed(INTERP, num, PackFile_Annotations_Entry);
         for (i = 0; i < num; ++i) {
             PMC  * const entity = VTABLE_get_pmc_keyed_int(INTERP, attrs->annotations, i);
             const Parrot_PackfileAnnotation_attributes * const entity_attrs =
@@ -344,26 +376,24 @@
 
             /* At this point we have create (if nesassary) key and name constant. */
             /* Start storing real entity */
-            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;
+            res->entries[i].bytecode_offset = entity_attrs->offset;
+            res->entries[i].key             = key_id;
 
             /* Handle value */
             switch (entity_attrs->value_type) {
                 case PF_ANNOTATION_KEY_TYPE_INT:
-                    res->entries[i]->value = entity_attrs->int_value;
+                    res->entries[i].value = entity_attrs->int_value;
                     break;
                 case PF_ANNOTATION_KEY_TYPE_STR:
                     Parrot_mmd_multi_dispatch_from_c_args(INTERP, "get_or_create_constant",
                             "PS->I", attrs->const_table, entity_attrs->str_value,
-                            &res->entries[i]->value);
+                            &res->entries[i].value);
                     break;
                 case PF_ANNOTATION_KEY_TYPE_NUM:
                     Parrot_mmd_multi_dispatch_from_c_args(INTERP, "get_or_create_constant",
                             "PN->I", attrs->const_table, entity_attrs->num_value,
-                            &res->entries[i]->value);
+                            &res->entries[i].value);
                     break;
                 default:
                     Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_MALFORMED_PACKFILE,
@@ -375,11 +405,10 @@
         num = VTABLE_elements(INTERP, types);
         res->num_keys = num;
         res->keys = mem_gc_allocate_n_zeroed_typed(INTERP, num,
-                PackFile_Annotations_Key*);
+                PackFile_Annotations_Key);
         for (i = 0; i < num; ++i) {
-            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);
+            res->keys[i].name = VTABLE_get_integer_keyed_int(INTERP, names, i);
+            res->keys[i].type = VTABLE_get_integer_keyed_int(INTERP, types, i);
         }
 
         return res;

Modified: branches/ops_pct/src/pmc/string.pmc
==============================================================================
--- branches/ops_pct/src/pmc/string.pmc	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/pmc/string.pmc	Sat May  8 02:08:40 2010	(r46399)
@@ -689,17 +689,19 @@
         unsigned char *p;
         INTVAL        *tr_data;
         INTVAL         i;
+        STRING        *dest;
 
         const INTVAL len = Parrot_str_byte_length(INTERP, src);
 
         if (!len)
-            RETURN(void);
+            RETURN(STRING src);
 
         if (src->charset != Parrot_ascii_charset_ptr)
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_ENCODING,
                 "Can't translate non-ascii");
 
-        p = (unsigned char *)(src->strstart);
+        dest = Parrot_str_clone(INTERP, src);
+        p = (unsigned char *)(dest->strstart);
         /* TODO verify trans table */
 
         GETATTR_FixedIntegerArray_int_array(INTERP, table, tr_data);
@@ -709,6 +711,9 @@
             if (ch)
                 *p = ch;
         }
+
+        dest->hashval = 0; /* hash is invalid */
+        RETURN(STRING dest);
     }
 
 /*

Copied: branches/ops_pct/src/pmc/stringbuilder.pmc (from r46398, trunk/src/pmc/stringbuilder.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/src/pmc/stringbuilder.pmc	Sat May  8 02:08:40 2010	(r46399, copy of r46398, trunk/src/pmc/stringbuilder.pmc)
@@ -0,0 +1,289 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/stringbuilder.pmc - StringBuilder PMC Class
+
+=head1 DESCRIPTION
+
+TODO: Add description here.
+
+=head2 Methods
+
+=over 4
+
+=cut
+
+*/
+
+#include "parrot/string_funcs.h"
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static size_t calculate_capacity(SHIM_INTERP,
+    size_t current,
+    size_t additional);
+
+#define ASSERT_ARGS_calculate_capacity __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
+#define INITIAL_STRING_CAPACITY 128
+
+pmclass StringBuilder provides string auto_attrs {
+    ATTR STRING *buffer;    /* Mutable string to gather results */
+
+/*
+
+=item C<void init()>
+
+Initializes the StringBuilder.
+
+=cut
+
+*/
+
+    VTABLE void init() {
+        STATICSELF.init_int(INITIAL_STRING_CAPACITY);
+    }
+
+/*
+
+=item C<void init_int()>
+
+Initializes the StringBuilder with initial size of buffer.
+
+=cut
+
+*/
+
+    VTABLE void init_int(INTVAL initial_size) {
+        STRING * const buffer = Parrot_str_new_init(INTERP, NULL, initial_size,
+                Parrot_default_encoding_ptr, Parrot_default_charset_ptr, 0);
+        SET_ATTR_buffer(INTERP, SELF, buffer);
+
+        PObj_custom_mark_SET(SELF);
+    }
+
+/*
+
+=item C<void mark()>
+
+Marks the StringBuilder as live.
+
+=cut
+
+*/
+
+    VTABLE void mark() {
+        STRING *buffer;
+
+        if (!PMC_data(SELF))
+            return;
+
+        GET_ATTR_buffer(INTERP, SELF, buffer);
+        Parrot_gc_mark_STRING_alive(INTERP, buffer);
+    }
+
+/*
+
+=item C<STRING *get_string()>
+
+Clones and returns current buffer. We need clone because outside of
+StringBuilder strings are immutable.
+
+=cut
+
+*/
+
+    VTABLE STRING *get_string() {
+        STRING *buffer, *retv;
+        GET_ATTR_buffer(INTERP, SELF, buffer);
+        retv = Parrot_str_clone(INTERP, buffer);
+        retv->hashval = 0; /* hash is invalid */
+        return retv;
+    }
+
+/*
+
+=item C<STRING *push_string()>
+
+Append string to current buffer.
+
+=cut
+
+*/
+
+    VTABLE void push_string(STRING *s) {
+        STRING          *buffer;
+        size_t           total_size;
+        const CHARSET   *cs;
+        const ENCODING  *enc = NULL;
+
+        /* Early return on NULL strings */
+        if (STRING_IS_NULL(s))
+            return;
+
+        GET_ATTR_buffer(INTERP, SELF, buffer);
+
+        /* If strings are incompatible - convert them */
+        /* TODO Ask chromatic why in Parrot_str_join he ignored charset */
+        cs = Parrot_str_rep_compatible(interp, buffer, s, &enc);
+        if (!cs) {
+            cs = Parrot_unicode_charset_ptr;
+            enc = (buffer->encoding == Parrot_utf16_encoding_ptr
+               ||  s->encoding == Parrot_utf16_encoding_ptr
+               ||  buffer->encoding == Parrot_ucs2_encoding_ptr
+               ||  s->encoding == Parrot_ucs2_encoding_ptr)
+                ? Parrot_utf16_encoding_ptr
+                : Parrot_utf8_encoding_ptr;
+
+            buffer = Parrot_unicode_charset_ptr->to_charset(interp, buffer);
+            s      = Parrot_unicode_charset_ptr->to_charset(interp, s);
+
+            SET_ATTR_buffer(INTERP, SELF, buffer);
+        }
+
+        /* Calculate (possibly new) total size */
+        total_size = calculate_capacity(INTERP, buffer->bufused, s->bufused);
+
+        /* Reallocate if necessary */
+        if (total_size > Buffer_buflen(buffer))
+            Parrot_gc_reallocate_string_storage(INTERP, buffer, total_size);
+
+        /* Tack s on the end of buffer */
+        mem_sys_memcopy((void *)((ptrcast_t)buffer->strstart + buffer->bufused),
+                s->strstart, s->bufused);
+
+        /* Update buffer */
+        buffer->bufused += s->bufused;
+        buffer->strlen  += Parrot_str_length(INTERP, s);
+
+        PARROT_ASSERT(buffer->bufused <= Buffer_buflen(buffer));
+    }
+
+/*
+
+=item C<VTABLE i_concatenate_str()>
+
+=item C<VTABLE i_concatenate()>
+
+Append string. Synonym for push_string
+
+=cut
+
+*/
+
+    VTABLE void i_concatenate_str(STRING *s) {
+        SELF.push_string(s);
+    }
+
+    VTABLE void i_concatenate(PMC *p) {
+        SELF.push_string(VTABLE_get_string(INTERP, p));
+    }
+
+    VTABLE void push_pmc(PMC *p) {
+        SELF.push_string(VTABLE_get_string(INTERP, p));
+    }
+
+/*
+
+=item C<VTABLE set_string_native()>
+
+Set content of buffer to passed string
+
+=cut
+
+*/
+    VTABLE void set_string_native(STRING *s) {
+        SET_ATTR_buffer(INTERP, SELF, Parrot_str_clone(INTERP, s));
+    }
+
+
+/*
+
+=item C<VTABLE get_integer()>
+
+Returns current capacity of allocated buffer.
+
+For testing purpose only?
+
+=cut
+
+*/
+    INTVAL get_integer() {
+        STRING *buffer;
+        GET_ATTR_buffer(INTERP, SELF, buffer);
+        return Buffer_buflen(buffer);
+    }
+
+/*
+
+=back
+
+=cut
+
+*/
+
+}
+
+
+/*
+
+=head2 Helper functions.
+
+=over 4
+
+=cut
+
+*/
+
+/*
+
+=item C<static size_t calculate_capacity(PARROT_INTERP, size_t current, size_t
+additional)>
+
+Calculate capacity for string. Usually StringBuilders used for "large"
+strings. So capacity rounded up by next algorithm:
+  - By 128 bytes if total capacity less then 1KB
+  - By 1KB if total less than 4KB
+  - By 4KB if total less than 1MB
+  - By 1MB otherwise.
+
+This function is subject for tuning on real-world usage scenarios.
+
+=back
+
+=cut
+
+*/
+
+static size_t
+calculate_capacity(SHIM_INTERP, size_t current, size_t additional)
+{
+    ASSERT_ARGS(calculate_capacity)
+    size_t total_size = current + additional;
+    size_t chunk_size = 1024*1024;
+
+    if (total_size < 1024)
+        chunk_size = 128;
+    else if (total_size < 4096)
+        chunk_size = 1024;
+    else if (total_size < 1024*1024)
+        chunk_size = 4096;
+
+    total_size = (total_size / chunk_size + 1) * chunk_size;
+
+    return total_size;
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/ops_pct/src/string/api.c
==============================================================================
--- branches/ops_pct/src/string/api.c	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/src/string/api.c	Sat May  8 02:08:40 2010	(r46399)
@@ -294,6 +294,32 @@
     return NULL;
 }
 
+/*
+
+=item C<const CHARSET * Parrot_str_rep_compatible(PARROT_INTERP, const STRING
+*a, const STRING *b, const ENCODING **e)>
+
+Find the "lowest" possible charset and encoding for the given string. E.g.
+
+  ascii <op> utf8 => utf8
+                  => ascii, B<if> C<STRING *b> has ascii chars only.
+
+Returns NULL, if no compatible string representation can be found.
+
+=cut
+
+*/
+
+PARROT_INLINE
+PARROT_IGNORABLE_RESULT
+PARROT_CAN_RETURN_NULL
+const CHARSET *
+Parrot_str_rep_compatible(PARROT_INTERP,
+    ARGIN(const STRING *a), ARGIN(const STRING *b), ARGOUT(const ENCODING **e))
+{
+    ASSERT_ARGS(Parrot_str_rep_compatible)
+    return string_rep_compatible(interp, a, b, e);
+}
 
 /*
 
@@ -374,13 +400,13 @@
 
 /*
 
-=item C<STRING * Parrot_str_concat(PARROT_INTERP, STRING *a, STRING *b)>
+=item C<STRING * Parrot_str_concat(PARROT_INTERP, const STRING *a, const STRING
+*b)>
 
 Concatenates two Parrot strings. If necessary, converts the second
 string's encoding and/or type to match those of the first string. If
 either string is C<NULL>, then a copy of the non-C<NULL> string is
-returned. If both strings are C<NULL>, then a new zero-length string is
-created and returned.
+returned. If both strings are C<NULL>, return C<STRINGNULL>.
 
 =cut
 
@@ -389,37 +415,34 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 STRING *
-Parrot_str_concat(PARROT_INTERP, ARGIN_NULLOK(STRING *a),
-            ARGIN_NULLOK(STRING *b))
+Parrot_str_concat(PARROT_INTERP, ARGIN_NULLOK(const STRING *a),
+            ARGIN_NULLOK(const STRING *b))
 {
     ASSERT_ARGS(Parrot_str_concat)
     const CHARSET   *cs;
-    const ENCODING  *enc;
+    const ENCODING  *enc = NULL;
     STRING          *dest;
     UINTVAL          total_length;
 
     /* XXX should this be a CHARSET method? */
 
     /* If B isn't real, we just bail */
-    const UINTVAL b_len = b ? Parrot_str_byte_length(interp, b) : 0;
+    const UINTVAL b_len = b ? Parrot_str_length(interp, b) : 0;
     if (!b_len)
-        return a;
+        return STRING_IS_NULL(a) ? STRINGNULL : Parrot_str_copy(interp, a);
 
     /* Is A real? */
     if (STRING_IS_NULL(a) || Buffer_bufstart(a) == NULL)
-        return b;
+        return Parrot_str_copy(interp, b);
 
     ASSERT_STRING_SANITY(a);
     ASSERT_STRING_SANITY(b);
 
     cs = string_rep_compatible(interp, a, b, &enc);
 
-    if (cs) {
-        a->charset  = cs;
-        a->encoding = enc;
-    }
-    else {
+    if (!cs) {
         /* upgrade strings for concatenation */
+        cs = Parrot_unicode_charset_ptr;
         enc = (a->encoding == Parrot_utf16_encoding_ptr
            ||  b->encoding == Parrot_utf16_encoding_ptr
            ||  a->encoding == Parrot_ucs2_encoding_ptr
@@ -435,13 +458,14 @@
         if (b->encoding != enc)
             b = enc->to_encoding(interp, b);
     }
-
     /* calc usable and total bytes */
     total_length = a->bufused + b->bufused;
 
     dest = Parrot_str_new_noinit(interp, enum_stringrep_one, total_length);
-    dest->encoding = a->encoding;
-    dest->charset  = a->charset;
+    PARROT_ASSERT(enc);
+    PARROT_ASSERT(cs);
+    dest->encoding = enc;
+    dest->charset  = cs;
 
     /* Copy A first */
     mem_sys_memcopy(dest->strstart, a->strstart, a->bufused);
@@ -773,7 +797,7 @@
 {
     ASSERT_ARGS(Parrot_str_byte_length)
 
-    return STRING_IS_NULL(s) ? 0 : s->strlen;
+    return STRING_IS_NULL(s) ? 0 : s->bufused;
 }
 
 
@@ -828,7 +852,7 @@
     if (start < 0)
         return -1;
 
-    len = Parrot_str_byte_length(interp, s);
+    len = Parrot_str_length(interp, s);
 
     if (!len)
         return -1;
@@ -836,7 +860,7 @@
     if (start >= (INTVAL)len)
         return -1;
 
-    if (!Parrot_str_byte_length(interp, s2))
+    if (!Parrot_str_length(interp, s2))
         return -1;
     else {
         DECL_CONST_CAST;
@@ -872,7 +896,7 @@
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ORD_OUT_OF_STRING,
             "Cannot get character of NULL string");
 
-    len = Parrot_str_byte_length(interp, s);
+    len = Parrot_str_length(interp, s);
     if (len == 0)
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ORD_OUT_OF_STRING,
             "Cannot get character of empty string");
@@ -900,8 +924,6 @@
 
 Returns a single-character Parrot string.
 
-TODO - Allow this to take an array of characters?
-
 =cut
 
 */
@@ -937,7 +959,7 @@
 
 =item C<INTVAL Parrot_str_length(PARROT_INTERP, const STRING *s)>
 
-Calculates and returns the number of characters in the specified Parrot string.
+Returns the number of characters in the specified Parrot string.
 
 =cut
 
@@ -946,11 +968,11 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 INTVAL
-Parrot_str_length(SHIM_INTERP, ARGIN(const STRING *s))
+Parrot_str_length(SHIM_INTERP, ARGIN_NULLOK(const STRING *s))
 {
     ASSERT_ARGS(Parrot_str_length)
 
-    return s->strlen;
+    return STRING_IS_NULL(s) ? 0 : s->strlen;
 }
 
 
@@ -1046,7 +1068,7 @@
     ASSERT_STRING_SANITY(src);
 
     /* Allow regexes to return $' easily for "aaa" =~ /aaa/ */
-    if (offset == (INTVAL)Parrot_str_byte_length(interp, src) || length < 1)
+    if (offset == (INTVAL)Parrot_str_length(interp, src) || length < 1)
         return Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
 
     if (offset < 0)
@@ -2217,7 +2239,7 @@
 Parrot_str_pin(SHIM_INTERP, ARGMOD(STRING *s))
 {
     ASSERT_ARGS(Parrot_str_pin)
-    size_t size   = Buffer_buflen(s);
+    const size_t size = Buffer_buflen(s);
     char  *memory = (char *)mem_internal_allocate(size);
 
     mem_sys_memcopy(memory, Buffer_bufstart(s), size);
@@ -3048,7 +3070,7 @@
 
 /*
 
-=item C<PMC* Parrot_str_split(PARROT_INTERP, STRING *delim, STRING *str)>
+=item C<PMC* Parrot_str_split(PARROT_INTERP, const STRING *delim, STRING *str)>
 
 Splits the string C<str> at the delimiter C<delim>, returning a
 C<ResizableStringArray>, or his mapped type in the current HLL, of results.
@@ -3063,7 +3085,7 @@
 PARROT_CAN_RETURN_NULL
 PMC*
 Parrot_str_split(PARROT_INTERP,
-    ARGIN_NULLOK(STRING *delim), ARGIN_NULLOK(STRING *str))
+    ARGIN_NULLOK(const STRING *delim), ARGIN_NULLOK(STRING *str))
 {
     ASSERT_ARGS(Parrot_str_split)
     PMC    *res;
@@ -3074,12 +3096,12 @@
 
     res  = Parrot_pmc_new(interp,
             Parrot_get_ctx_HLL_type(interp, enum_class_ResizableStringArray));
-    slen = Parrot_str_byte_length(interp, str);
+    slen = Parrot_str_length(interp, str);
 
     if (!slen)
         return res;
 
-    dlen = Parrot_str_byte_length(interp, delim);
+    dlen = Parrot_str_length(interp, delim);
 
     if (dlen == 0) {
         int i;
@@ -3107,7 +3129,7 @@
         STRING * const tstr = Parrot_str_substr(interp, str, ps, pl);
 
         VTABLE_push_string(interp, res, tstr);
-        ps = pe + Parrot_str_byte_length(interp, delim);
+        ps = pe + Parrot_str_length(interp, delim);
 
         if (ps > slen)
             break;

Copied: branches/ops_pct/t/distro/manifest_generated.t (from r46398, trunk/t/distro/manifest_generated.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/t/distro/manifest_generated.t	Sat May  8 02:08:40 2010	(r46399, copy of r46398, trunk/t/distro/manifest_generated.t)
@@ -0,0 +1,61 @@
+#! perl
+# Copyright (C) 2001-2010, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use lib qw( . lib ../lib ../../lib );
+
+use Test::More;
+plan(tests => 5);
+
+=head1 NAME
+
+t/distro/manifest_generated.t - check sanity of MANIFEST.generated file
+
+=head1 SYNOPSIS
+
+    % prove t/distro/manifest_generated.t
+
+=head1 DESCRIPTION
+
+Checks that MANIFEST.generated is in the required format (eg: sorted) and that it
+contains appropriate items (eg: PMC generated files).
+
+=cut
+
+ok( -e 'MANIFEST.generated', 'MANIFEST.generated exists' );
+
+# slurp MANIFEST.generated, ignoring comment lines
+open my $fh, '<', 'MANIFEST.generated'
+    or die "open MANIFEST.generated: $!";
+my @contents = grep {!/^#/} map {chomp; $_} <$fh>;
+close $fh;
+
+is_deeply([sort @contents], \@contents, 'MANIFEST.generated is sorted');
+
+# parse records
+my @records;
+is_deeply(  [grep {
+        my $match = m/^ (\S+) \s+ (\[ \w* \] \w*) $/x;
+        push @records, [$1, $2] if $match;
+        not $match } @contents],
+        [],
+        'MANIFEST.generated contains no irregular records' );
+
+# check for appropriate contents
+my %contained_files = map {$$_[0] => 1} @records;
+is_deeply(  [],
+        [grep {not exists $contained_files{$_}} glob('include/pmc/*.h')],
+        'MANIFEST.generated lists all core PMC headers' );
+
+is_deeply(  [],
+        [grep {not exists $contained_files{$_}} glob('src/pmc/*.dump')],
+        'MANIFEST.generated lists all core PMC dump files' )
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/ops_pct/t/dynpmc/gziphandle.t
==============================================================================
--- branches/ops_pct/t/dynpmc/gziphandle.t	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/t/dynpmc/gziphandle.t	Sat May  8 02:08:40 2010	(r46399)
@@ -22,7 +22,7 @@
     .local pmc config_hash, interp
     .local int num_tests
 
-    num_tests = 3
+    num_tests = 6
     plan(num_tests)
     interp = getinterp
     config_hash = interp[.IGLOBALS_CONFIG_HASH]
@@ -32,6 +32,7 @@
     $P0 = loadlib 'gziphandle'
     test_handle()
     test_version()
+    test_basic()
     .return()
 
   no_zlib:
@@ -56,6 +57,17 @@
     is($I0, 0, 'zlib version')
 .end
 
+.sub 'test_basic'
+    $P0 = new 'GzipHandle'
+    .const string data = "message"
+    $I0 = $P0.'crc32'(0, data)
+    ok($I0, "crc32")
+    $S0 = $P0.'compress'(data)
+    $I0 = length $S0
+    is($I0, 15, "compress")
+    $S0 = $P0.'uncompress'($S0)
+    is($S0, data, "uncompress")
+.end
 
 # Local Variables:
 #   mode: pir

Copied: branches/ops_pct/t/library/archive_zip.t (from r46398, trunk/t/library/archive_zip.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/t/library/archive_zip.t	Sat May  8 02:08:40 2010	(r46399, copy of r46398, trunk/t/library/archive_zip.t)
@@ -0,0 +1,72 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/library/archive_zip.t
+
+=head1 DESCRIPTION
+
+Test the Archive/Zip library
+
+=head1 SYNOPSIS
+
+    % prove t/library/archive_zip.t
+
+=cut
+
+.sub 'main' :main
+    .include 'test_more.pir'
+
+    load_bytecode 'Archive/Zip.pir'
+
+    plan(14)
+    test_new()
+    test_pack()
+.end
+
+.sub 'test_new'
+    $P0 = new ['Archive';'Zip']
+    $I0 = isa $P0, ['Archive';'Zip']
+    ok($I0, "new ['Archive';'Zip']")
+    $I0 = isa $P0, ['Archive';'Zip';'Base']
+    ok($I0, "is a ['Archive';'Zip';'Base']")
+    $P0 = new ['Archive';'Zip';'Member']
+    $I0 = isa $P0, ['Archive';'Zip';'Member']
+    ok($I0, "new ['Archive';'Zip';'Member']")
+    $I0 = isa $P0, ['Archive';'Zip';'Base']
+    ok($I0, "is a ['Archive';'Zip';'Base']")
+    $P0 = new ['Archive';'Zip';'FileMember']
+    $I0 = isa $P0, ['Archive';'Zip';'FileMember']
+    ok($I0, "new ['Archive';'Zip';'FileMember']")
+    $I0 = isa $P0, ['Archive';'Zip';'Member']
+    ok($I0, "is a ['Archive';'Zip';'Member']")
+    $P0 = new ['Archive';'Zip';'NewFileMember']
+    $I0 = isa $P0, ['Archive';'Zip';'NewFileMember']
+    ok($I0, "new ['Archive';'Zip';'NewFileMember']")
+    $I0 = isa $P0, ['Archive';'Zip';'FileMember']
+    ok($I0, "is a ['Archive';'Zip';'FileMember']")
+.end
+
+.sub 'test_pack'
+    $P0 = new ['Archive';'Zip']
+    $S0 = $P0.'pack_C'(0x12)
+    is( $S0, "\x12", "pack C (unsigned char)" )
+    $I0 = length $S0
+    is( $I0, 1 )
+    $S0 = $P0.'pack_v'(0x1234)
+    is( $S0, "\x34\x12", "pack v (16bits litle endian)" )
+    $I0 = length $S0
+    is( $I0, 2 )
+    $S0 = $P0.'pack_V'(0x12345678)
+    is( $S0, "\x78\x56\x34\x12", "pack V (32bits litle endian)" )
+    $I0 = length $S0
+    is( $I0, 4 )
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

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/integer_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.

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_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/ops_pct/t/pmc/string.t
==============================================================================
--- branches/ops_pct/t/pmc/string.t	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/t/pmc/string.t	Sat May  8 02:08:40 2010	(r46399)
@@ -20,7 +20,7 @@
 .sub main :main
     .include 'test_more.pir'
 
-    plan(166)
+    plan(167)
 
     set_or_get_strings()
     setting_integers()
@@ -814,9 +814,10 @@
     is( el, 256, 'elements' )
 
     $P0 = new ['String']
-    $P0.'trans'(s, tr_00)
+    t = $P0.'trans'(s, tr_00)
 
-    is( s, 'TAACGSTAACGS', 'trans' )
+    is( t, 'TAACGSTAACGS', 'trans' )
+    is( s, 'atugcsATUGCS', "trans doesn't touch source string")
 .end
 
 # create tr table at compile-time

Copied: branches/ops_pct/t/pmc/stringbuilder.t (from r46398, trunk/t/pmc/stringbuilder.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/ops_pct/t/pmc/stringbuilder.t	Sat May  8 02:08:40 2010	(r46399, copy of r46398, trunk/t/pmc/stringbuilder.t)
@@ -0,0 +1,168 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/pmc/stringbuilder.t - StringBuilder
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/stringbuilder.t
+
+=head1 DESCRIPTION
+
+Tests the C<StringBuilder> PMC.
+
+=cut
+
+
+.sub 'main' :main
+    .include 'test_more.pir'
+
+    plan(21)
+    test_create()               # 2 tests
+    test_push_string()          # 9 tests
+    test_push_pmc()             # 4 tests
+    test_push_string_unicode()  # 1 test
+    test_i_concatenate()        # 1 test
+    test_set_string_native()    # 3 tests
+
+    # END_OF_TESTS
+.end
+
+.sub 'test_create'
+    .local pmc sb
+    sb = new ['StringBuilder']
+
+    $I0 = isnull sb
+    not $I0
+    ok( $I0, 'StringBuilder created' )
+
+    $S0 = sb
+    is( $S0, '', '... with empty content')
+
+.end
+
+.sub 'test_push_string'
+    .local pmc sb
+    sb = new ["StringBuilder"]
+
+    push sb, "foo"
+    $S0 = sb
+    is( $S0, "foo", "First string pushed")
+
+    push sb, "bar"
+    $S1 = sb
+    is( $S1, "foobar", "Second string pushed")
+
+    is( $S0, "foo", "... without clobbering first string")
+
+    $I0 = sb
+    is( $I0, 128, "... and capacity still 128" )
+
+    # Push large string which will cause reallocate
+    $S99 = repeat "x", 128
+    push sb, $S99
+
+    $S0 = concat "foobar", $S99
+    $S1 = sb
+    is( $S0, $S1, "Push 128 chars string works")
+
+    $I0 = sb
+    is( $I0, 256, "... and capacity increased" )
+
+    $S99 = repeat "x", 1000
+    push sb, $S99
+
+    $S0 = concat $S0, $S99
+    $S1 = sb
+    is( $S0, $S1, "Push 1000 chars string works")
+
+    $I0 = sb
+    is( $I0, 2048, "... and capacity increased" )
+
+    $S99 = repeat "x", 12000
+    push sb, $S99
+
+    $S0 = concat $S0, $S99
+    $S1 = sb
+    is( $S0, $S1, "Push 10000 chars string works")
+
+    $I0 = sb
+    is( $I0, 16384, "... and capacity increased" )
+
+.end
+
+.sub 'test_push_pmc'
+    .local pmc sb
+    sb = new ["StringBuilder"]
+
+    box $P0, "foo"
+    push sb, $P0
+    $S0 = sb
+    is( $S0, "foo", "First string pushed")
+
+    box $P0, "bar"
+    push sb, $P0
+    $S1 = sb
+    is( $S1, "foobar", "Second string pushed")
+
+    is( $S0, "foo", "... without clobbering first string")
+
+    $I0 = sb
+    is( $I0, 128, "... and capacity still 128" )
+.end
+
+.sub 'test_push_string_unicode'
+    .local pmc sb
+    sb = new ["StringBuilder"]
+
+    push sb, "le"
+    push sb, unicode:"o "
+    push sb, iso-8859-1:"tötsch"
+
+    $S0 = sb
+    is( $S0, iso-8859-1:"leo tötsch", "Unicode strings appened")
+.end
+
+.sub 'test_i_concatenate'
+    .local pmc sb
+    sb = new ["StringBuilder"]
+
+    concat sb, "foo"
+
+    $P0 = new ["String"]
+    $P0 = "bar"
+    concat sb, $P0
+
+    sb .= "baz"
+
+    $S0 = sb
+    is( $S0, "foobarbaz", "StringBuilder handles concat properly")
+
+.end
+
+.sub 'test_set_string_native'
+    .local pmc sb
+    sb = new ["StringBuilder"]
+
+    $S99 = "foo"
+    sb   = $S99
+
+    $S0  = sb
+    is( $S0, "foo", "Assignment works")
+
+    sb .= "bar"
+    $S0  = sb
+    is( $S0, "foobar", "... with appending string after")
+    is( $S99, "foo", "... without touching of original string")
+
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+

Modified: branches/ops_pct/t/src/embed.t
==============================================================================
--- branches/ops_pct/t/src/embed.t	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/t/src/embed.t	Sat May  8 02:08:40 2010	(r46399)
@@ -8,7 +8,7 @@
 use Test::More;
 use Parrot::Test;
 
-plan tests => 7;
+plan tests => 9;
 
 =head1 NAME
 
@@ -99,6 +99,84 @@
 The opcode 'copy' (copy<0>) was not found. Check the type and number of the arguments
 OUTPUT
 
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', 'Parrot_compile_string populates the error string when given invalid language string');
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "parrot/embed.h"
+#include "parrot/extend.h"
+
+void fail(const char *msg);
+
+void fail(const char *msg)
+{
+    fprintf(stderr, "failed: %s\n", msg);
+    exit(EXIT_FAILURE);
+}
+
+
+int main(int argc, const char **argv)
+{
+    Parrot_Interp interp;
+    Parrot_String err, lang;
+    Parrot_PMC func_pmc;
+    char *str;
+
+    interp = Parrot_new(NULL);
+    if (! interp)
+        fail("Cannot create parrot interpreter");
+    lang = Parrot_new_string(interp, "Foo", 3, (const char*)NULL, 0);
+
+    func_pmc = Parrot_compile_string(interp, lang, "This doesn't matter", &err);
+    Parrot_printf(interp, "%Ss\n", err);
+    Parrot_destroy(interp);
+    return 0;
+}
+CODE
+Invalid interpreter type
+OUTPUT
+
+
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', 'Parrot_compile_string populates the error string when there is an IMCC syntax error', 'todo' => 'TT #1610 : does not properly catch IMCC errors');
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "parrot/embed.h"
+#include "parrot/extend.h"
+
+void fail(const char *msg);
+
+void fail(const char *msg)
+{
+    fprintf(stderr, "failed: %s\n", msg);
+    exit(EXIT_FAILURE);
+}
+
+
+int main(int argc, const char **argv)
+{
+    Parrot_Interp interp;
+    Parrot_String err, lang;
+    Parrot_PMC func_pmc;
+    char *str;
+
+    interp = Parrot_new(NULL);
+    if (! interp)
+        fail("Cannot create parrot interpreter");
+    lang = Parrot_new_string(interp, "PIR", 3, (const char*)NULL, 0);
+
+    func_pmc = Parrot_compile_string(interp, lang, "The sleeper must awake", &err);
+    Parrot_printf(interp,"Caught exception\n");
+    Parrot_printf(interp, "%Ss\n", err);
+    Parrot_destroy(interp);
+    return 0;
+}
+CODE
+Caught exception
+error:imcc:syntax error, unexpected IDENTIFIER ('The')
+OUTPUT
+
+
 c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Hello world from main" );
 
 #include <stdio.h>

Modified: branches/ops_pct/tools/dev/pbc_to_exe.pir
==============================================================================
--- branches/ops_pct/tools/dev/pbc_to_exe.pir	Sat May  8 01:36:41 2010	(r46398)
+++ branches/ops_pct/tools/dev/pbc_to_exe.pir	Sat May  8 02:08:40 2010	(r46399)
@@ -221,7 +221,7 @@
     .local pmc codestring
     .local int size
 
-    codestring = new [ 'ResizableStringArray' ]
+    codestring = new [ 'StringBuilder' ]
     push codestring, "const Parrot_UInt1 program_code[] = {"
     size = 0
 
@@ -248,10 +248,6 @@
     push codestring, "\n"
     goto code_loop
   code_done:
-    # Join current strings to avoid storing too much
-    $S0 = join '', codestring
-    codestring = 0
-    push codestring, $S0
     goto read_loop
 
   read_done:
@@ -268,7 +264,7 @@
         }
 END_OF_FUNCTION
 
-    $S0 = join '', codestring
+    $S0 = codestring
     .return ($S0)
 
   err_infile:
@@ -317,7 +313,7 @@
     .local pmc codestring
     .local int size
 
-    codestring = new ['ResizableStringArray']
+    codestring = new ['StringBuilder']
 
     push codestring, "const char * program_code =\n"
     push codestring, '"'
@@ -347,10 +343,6 @@
     push codestring, '"'
     goto code_loop
   code_done:
-    # Join current strings to avoid storing too much
-    $S0 = join '', codestring
-    codestring = 0
-    push codestring, $S0
     goto read_loop
 
   read_done:
@@ -370,7 +362,7 @@
         }
 END_OF_FUNCTION
 
-    $S0 = join '', codestring
+    $S0 = codestring
     .return ($S0)
 
   err_infile:
@@ -453,7 +445,7 @@
 
 
     .local pmc codestring
-    codestring  = new [ 'ResizableStringArray' ]
+    codestring  = new [ 'StringBuilder' ]
     push codestring, "#include <windows.h>\n"
     push codestring, rc_constant_defines
     push codestring, "const unsigned int bytecode_size = "
@@ -505,7 +497,7 @@
     die "RC command failed"
 
   rc_ok:
-    $S0 = join '', codestring
+    $S0 = codestring
     .return ($S0)
 
   err_h_open:


More information about the parrot-commits mailing list