[svn:parrot] r48443 - in branches/gsoc_threads: . compilers/data_json compilers/imcc compilers/opsc/src/Ops compilers/opsc/src/Ops/Trans compilers/pct compilers/pge compilers/tge config/auto/sizes config/auto/zlib config/gen/config_h docs/book/draft docs/book/pct docs/dev docs/pdds examples/embed examples/languages/abc examples/languages/squaak examples/pge ext/nqp-rx include/parrot lib/Parrot lib/Parrot/Configure/Step ports/cygwin ports/debian runtime/parrot/languages runtime/parrot/library runtime/parrot/library/HTTP runtime/parrot/library/Math src src/call src/dynpmc src/gc src/interp src/ops src/pmc src/runcore src/string t/codingstd t/compilers/tge t/dynoplibs t/examples t/native_pbc t/oo t/op t/pmc t/src t/steps/init/hints tools/build tools/dev tools/util

Chandon at svn.parrot.org Chandon at svn.parrot.org
Fri Aug 13 00:07:13 UTC 2010


Author: Chandon
Date: Fri Aug 13 00:07:10 2010
New Revision: 48443
URL: https://trac.parrot.org/parrot/changeset/48443

Log:
[gsoc_threads] Merge from trunk.

Modified:
   branches/gsoc_threads/   (props changed)
   branches/gsoc_threads/CREDITS
   branches/gsoc_threads/DEPRECATED.pod
   branches/gsoc_threads/PBC_COMPAT
   branches/gsoc_threads/compilers/data_json/Rules.mak   (props changed)
   branches/gsoc_threads/compilers/imcc/Rules.in   (props changed)
   branches/gsoc_threads/compilers/imcc/cfg.c
   branches/gsoc_threads/compilers/imcc/imc.c
   branches/gsoc_threads/compilers/imcc/imcparser.c
   branches/gsoc_threads/compilers/imcc/imcparser.h
   branches/gsoc_threads/compilers/imcc/instructions.c
   branches/gsoc_threads/compilers/imcc/optimizer.c
   branches/gsoc_threads/compilers/imcc/pbc.c
   branches/gsoc_threads/compilers/imcc/pcc.c
   branches/gsoc_threads/compilers/imcc/symreg.c
   branches/gsoc_threads/compilers/imcc/unit.h
   branches/gsoc_threads/compilers/opsc/src/Ops/Emitter.pm
   branches/gsoc_threads/compilers/opsc/src/Ops/Trans/C.pm
   branches/gsoc_threads/compilers/pct/Rules.mak   (props changed)
   branches/gsoc_threads/compilers/pge/Rules.mak   (props changed)
   branches/gsoc_threads/compilers/tge/Rules.mak   (props changed)
   branches/gsoc_threads/config/auto/sizes/intval_maxmin_c.in   (props changed)
   branches/gsoc_threads/config/auto/zlib/   (props changed)
   branches/gsoc_threads/config/gen/config_h/config_h.in
   branches/gsoc_threads/docs/book/draft/README   (props changed)
   branches/gsoc_threads/docs/book/draft/appa_glossary.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/appb_patch_submission.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/appc_command_line_options.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/appd_build_options.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/appe_source_code.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/ch01_introduction.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/ch02_getting_started.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/ch07_dynpmcs.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/ch08_dynops.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/ch10_opcode_reference.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/ch11_directive_reference.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/ch12_operator_reference.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/chXX_hlls.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/chXX_library.pod   (props changed)
   branches/gsoc_threads/docs/book/draft/chXX_testing_and_debugging.pod   (props changed)
   branches/gsoc_threads/docs/book/pct/ch01_introduction.pod   (props changed)
   branches/gsoc_threads/docs/book/pct/ch02_getting_started.pod   (props changed)
   branches/gsoc_threads/docs/book/pct/ch03_compiler_tools.pod   (props changed)
   branches/gsoc_threads/docs/book/pct/ch04_pge.pod   (props changed)
   branches/gsoc_threads/docs/book/pct/ch05_nqp.pod   (props changed)
   branches/gsoc_threads/docs/dev/c_functions.pod   (props changed)
   branches/gsoc_threads/docs/pdds/pdd30_install.pod   (props changed)
   branches/gsoc_threads/examples/embed/cotorra.c   (props changed)
   branches/gsoc_threads/examples/languages/abc/   (props changed)
   branches/gsoc_threads/examples/languages/squaak/   (props changed)
   branches/gsoc_threads/examples/pge/demo.pir   (props changed)
   branches/gsoc_threads/ext/nqp-rx/Rules.mak   (props changed)
   branches/gsoc_threads/include/parrot/call.h   (contents, props changed)
   branches/gsoc_threads/include/parrot/gc_api.h   (props changed)
   branches/gsoc_threads/include/parrot/hash.h
   branches/gsoc_threads/include/parrot/namespace.h
   branches/gsoc_threads/include/parrot/op.h
   branches/gsoc_threads/include/parrot/packfile.h
   branches/gsoc_threads/include/parrot/runcore_api.h   (contents, props changed)
   branches/gsoc_threads/include/parrot/runcore_profiling.h   (props changed)
   branches/gsoc_threads/include/parrot/runcore_trace.h   (props changed)
   branches/gsoc_threads/lib/Parrot/Configure/Step/Test.pm   (props changed)
   branches/gsoc_threads/lib/Parrot/H2inc.pm   (props changed)
   branches/gsoc_threads/ports/cygwin/parrot-1.0.0-1.cygport   (props changed)
   branches/gsoc_threads/ports/debian/libparrot-dev.install.in   (props changed)
   branches/gsoc_threads/ports/debian/libparrot.install.in   (props changed)
   branches/gsoc_threads/ports/debian/parrot-doc.install.in   (props changed)
   branches/gsoc_threads/ports/debian/parrot.install.in   (props changed)
   branches/gsoc_threads/runtime/parrot/languages/   (props changed)
   branches/gsoc_threads/runtime/parrot/library/HTTP/Message.pir
   branches/gsoc_threads/runtime/parrot/library/Math/Rand.pir   (props changed)
   branches/gsoc_threads/runtime/parrot/library/Rules.mak   (props changed)
   branches/gsoc_threads/runtime/parrot/library/distutils.pir
   branches/gsoc_threads/src/call/args.c
   branches/gsoc_threads/src/call/ops.c   (props changed)
   branches/gsoc_threads/src/call/pcc.c   (props changed)
   branches/gsoc_threads/src/debug.c
   branches/gsoc_threads/src/dynpmc/dynlexpad.pmc
   branches/gsoc_threads/src/dynpmc/rational.pmc
   branches/gsoc_threads/src/embed.c
   branches/gsoc_threads/src/gc/alloc_memory.c   (props changed)
   branches/gsoc_threads/src/gc/alloc_resources.c   (props changed)
   branches/gsoc_threads/src/gc/api.c   (props changed)
   branches/gsoc_threads/src/gc/gc_ms.c
   branches/gsoc_threads/src/gc/gc_private.h
   branches/gsoc_threads/src/gc/malloc.c   (props changed)
   branches/gsoc_threads/src/gc/malloc_trace.c   (props changed)
   branches/gsoc_threads/src/gc/mark_sweep.c   (contents, props changed)
   branches/gsoc_threads/src/gc/system.c   (props changed)
   branches/gsoc_threads/src/hash.c
   branches/gsoc_threads/src/interp/inter_cb.c   (props changed)
   branches/gsoc_threads/src/interp/inter_create.c   (props changed)
   branches/gsoc_threads/src/interp/inter_misc.c   (props changed)
   branches/gsoc_threads/src/namespace.c
   branches/gsoc_threads/src/ops/core_ops.c
   branches/gsoc_threads/src/packfile.c
   branches/gsoc_threads/src/pbc_dump.c
   branches/gsoc_threads/src/pbc_merge.c
   branches/gsoc_threads/src/pmc/bigint.pmc
   branches/gsoc_threads/src/pmc/callcontext.pmc
   branches/gsoc_threads/src/pmc/complex.pmc
   branches/gsoc_threads/src/pmc/coroutine.pmc
   branches/gsoc_threads/src/pmc/fixedintegerarray.pmc
   branches/gsoc_threads/src/pmc/hash.pmc
   branches/gsoc_threads/src/pmc/hashiterator.pmc
   branches/gsoc_threads/src/pmc/imageiosize.pmc
   branches/gsoc_threads/src/pmc/opcode.pmc
   branches/gsoc_threads/src/pmc/oplib.pmc
   branches/gsoc_threads/src/pmc/role.pmc
   branches/gsoc_threads/src/pmc/sub.pmc
   branches/gsoc_threads/src/pmc/threadinterpreter.pmc
   branches/gsoc_threads/src/runcore/cores.c   (props changed)
   branches/gsoc_threads/src/runcore/main.c   (contents, props changed)
   branches/gsoc_threads/src/runcore/profiling.c   (contents, props changed)
   branches/gsoc_threads/src/runcore/trace.c   (contents, props changed)
   branches/gsoc_threads/src/string/api.c
   branches/gsoc_threads/src/sub.c
   branches/gsoc_threads/t/codingstd/pmc_docs.t   (contents, props changed)
   branches/gsoc_threads/t/compilers/tge/NoneGrammar.tg   (props changed)
   branches/gsoc_threads/t/dynoplibs/deprecated.t
   branches/gsoc_threads/t/examples/pir.t
   branches/gsoc_threads/t/native_pbc/annotations.pbc
   branches/gsoc_threads/t/native_pbc/integer.pbc
   branches/gsoc_threads/t/native_pbc/integer_1.pbc
   branches/gsoc_threads/t/native_pbc/integer_2.pbc
   branches/gsoc_threads/t/native_pbc/number.pbc
   branches/gsoc_threads/t/native_pbc/number_1.pbc
   branches/gsoc_threads/t/native_pbc/number_2.pbc
   branches/gsoc_threads/t/native_pbc/string.pbc
   branches/gsoc_threads/t/native_pbc/string_1.pbc
   branches/gsoc_threads/t/native_pbc/string_2.pbc
   branches/gsoc_threads/t/oo/objects.t   (props changed)
   branches/gsoc_threads/t/oo/root_new.t   (props changed)
   branches/gsoc_threads/t/op/cmp-nonbranch.t
   branches/gsoc_threads/t/pmc/namespace-old.t   (props changed)
   branches/gsoc_threads/t/pmc/oplib.t
   branches/gsoc_threads/t/pmc/pmc.t
   branches/gsoc_threads/t/src/embed.t   (props changed)
   branches/gsoc_threads/t/steps/init/hints/linux-01.t   (props changed)
   branches/gsoc_threads/tools/build/h2inc.pl   (props changed)
   branches/gsoc_threads/tools/dev/fetch_languages.pl   (props changed)
   branches/gsoc_threads/tools/dev/mk_gitignore.pl   (props changed)
   branches/gsoc_threads/tools/util/perlcritic-cage.conf   (props changed)

Modified: branches/gsoc_threads/CREDITS
==============================================================================
--- branches/gsoc_threads/CREDITS	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/CREDITS	Fri Aug 13 00:07:10 2010	(r48443)
@@ -642,6 +642,10 @@
 E: lt at toetsch.at
 S: Herrnbaumgarten, Austria
 
+N: Luben Karavelov
+U: luben
+E: luben at unixsol.org
+
 N: Luca Barbato
 D: fix to make installable
 E: lu_zero at gentoo.org

Modified: branches/gsoc_threads/DEPRECATED.pod
==============================================================================
--- branches/gsoc_threads/DEPRECATED.pod	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/DEPRECATED.pod	Fri Aug 13 00:07:10 2010	(r48443)
@@ -344,12 +344,6 @@
 
 L<https://trac.parrot.org/parrot/ticket/443>
 
-=item C<Parrot_find_global_s> and C<Parrot_store_global_s>
-
-This function is not used or tested anywhere.
-
-http://trac.parrot.org/parrot/ticket/1660
-
 =item PMC Attributes Allocation Functions [experimental]
 
  Parrot_gc_allocate_pmc_attributes

Modified: branches/gsoc_threads/PBC_COMPAT
==============================================================================
--- branches/gsoc_threads/PBC_COMPAT	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/PBC_COMPAT	Fri Aug 13 00:07:10 2010	(r48443)
@@ -28,6 +28,7 @@
 
 # please insert tab separated entries at the top of the list
 
+8.1	2010.08.10	plobsing	merge dynop_mapping branch
 8.0	2010.07.20	coke	released 2.6.0
 7.0	2010.04.20	gerd	released 2.3.0 (version # added ex post facto, as all previous version #s were published)
 6.6	2010.04.17	bacek	add replace op

Modified: branches/gsoc_threads/compilers/imcc/cfg.c
==============================================================================
--- branches/gsoc_threads/compilers/imcc/cfg.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/imcc/cfg.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -463,7 +463,7 @@
     if (r && (r->type & VTADDRESS) && r->first_ins)
         bb_add_edge(interp, unit, from, unit->bb_list[r->first_ins->bbindex]);
     else {
-        IMCC_debug(interp, DEBUG_CFG, "register branch %I ", from->end);
+        IMCC_debug(interp, DEBUG_CFG, "register branch %d ", from->end);
         for (ins = from->end; ins; ins = ins->prev) {
             if ((ins->type & ITBRANCH)
             &&   STREQ(ins->opname, "set_addr")

Modified: branches/gsoc_threads/compilers/imcc/imc.c
==============================================================================
--- branches/gsoc_threads/compilers/imcc/imc.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/imcc/imc.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -97,6 +97,7 @@
     }
 
     IMCC_INFO(interp)->imc_units = NULL;
+    IMCC_INFO(interp)->cur_unit  = NULL;
     IMCC_INFO(interp)->last_unit = NULL;
 }
 

Modified: branches/gsoc_threads/compilers/imcc/imcparser.c
==============================================================================
--- branches/gsoc_threads/compilers/imcc/imcparser.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/imcc/imcparser.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -9,12 +9,13 @@
  */
 /* HEADERIZER HFILE: none */
 /* HEADERIZER STOP */
-/* A Bison parser, made by GNU Bison 2.4.2.  */
+
+/* A Bison parser, made by GNU Bison 2.4.1.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
-   Foundation, Inc.
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -56,7 +57,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.2"
+#define YYBISON_VERSION "2.4.1"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -1150,7 +1151,7 @@
 
 
 /* Line 189 of yacc.c  */
-#line 1143 "compilers/imcc/imcparser.c"
+#line 1144 "compilers/imcc/imcparser.c"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -1434,7 +1435,7 @@
 
 
 /* Line 214 of yacc.c  */
-#line 1427 "compilers/imcc/imcparser.c"
+#line 1428 "compilers/imcc/imcparser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -1446,7 +1447,7 @@
 
 
 /* Line 264 of yacc.c  */
-#line 1439 "compilers/imcc/imcparser.c"
+#line 1440 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1496,7 +1497,7 @@
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
+# if YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -2443,18 +2444,9 @@
 
 /* Like YYERROR except do call yyerror.  This remains here temporarily
    to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  However,
-   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
-   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
-   discussed.  */
+   Once GCC version 2 has supplanted version 1, this can go.  */
 
 #define YYFAIL		goto yyerrlab
-#if defined YYFAIL
-  /* This is here to suppress warnings from the GCC cpp's
-     -Wunused-macros.  Normally we don't worry about that warning, but
-     some users do, and we want to make it easy for users to remove
-     YYFAIL uses, which will produce warnings from Bison 2.5.  */
-#endif
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -2511,7 +2503,7 @@
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+# if YYLTYPE_IS_TRIVIAL
 #  define YY_LOCATION_PRINT(File, Loc)			\
      fprintf (File, "%d.%d-%d.%d",			\
 	      (Loc).first_line, (Loc).first_column,	\
@@ -3262,28 +3254,28 @@
     {
         case 2:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1166 "compilers/imcc/imcc.y"
     { if (yynerrs) YYABORT; (yyval.i) = 0; }
     break;
 
   case 5:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1175 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 6:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1176 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 7:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1178 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
@@ -3294,7 +3286,7 @@
 
   case 8:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1184 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
@@ -3305,42 +3297,42 @@
 
   case 9:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1189 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 10:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1190 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 11:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1191 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 12:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1192 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 13:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1196 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 14:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1198 "compilers/imcc/imcc.y"
     {
            (yyval.i) = 0;
@@ -3351,7 +3343,7 @@
 
   case 15:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1207 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
@@ -3362,7 +3354,7 @@
 
   case 16:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1213 "compilers/imcc/imcc.y"
     {
            /* set_filename() frees the STRINGC */
@@ -3372,7 +3364,7 @@
 
   case 17:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1221 "compilers/imcc/imcc.y"
     {
           /* We'll want to store an entry while emitting instructions, so just
@@ -3385,7 +3377,7 @@
 
   case 18:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1233 "compilers/imcc/imcc.y"
     {
             STRING * const hll_name = Parrot_str_unescape(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
@@ -3400,14 +3392,14 @@
 
   case 19:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1245 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 20:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1246 "compilers/imcc/imcc.y"
     {
              mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
@@ -3418,14 +3410,14 @@
 
   case 21:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1254 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 22:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1255 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
@@ -3436,14 +3428,14 @@
 
   case 23:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1261 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 24:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1262 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
@@ -3455,49 +3447,49 @@
 
   case 29:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1280 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 30:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1281 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 31:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1282 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 32:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1283 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 33:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1284 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 36:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1289 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 37:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1291 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
@@ -3509,7 +3501,7 @@
 
   case 38:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1298 "compilers/imcc/imcc.y"
     {
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3519,7 +3511,7 @@
 
   case 39:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1303 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iSUBROUTINE(interp,
@@ -3532,7 +3524,7 @@
 
   case 40:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1311 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
@@ -3541,7 +3533,7 @@
 
   case 41:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1315 "compilers/imcc/imcc.y"
     {
            char   *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1);
@@ -3559,21 +3551,21 @@
 
   case 42:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1327 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 44:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1335 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
     break;
 
   case 45:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1338 "compilers/imcc/imcc.y"
     {
            /* if (optimizer_level & OPT_PASM)
@@ -3586,7 +3578,7 @@
 
   case 48:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1354 "compilers/imcc/imcc.y"
     {
            int re_open = 0;
@@ -3603,21 +3595,21 @@
 
   case 49:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1368 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 50:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1369 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 51:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1373 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
@@ -3626,7 +3618,7 @@
 
   case 52:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1377 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
@@ -3637,14 +3629,14 @@
 
   case 53:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1385 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 54:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1387 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
@@ -3654,7 +3646,7 @@
 
   case 55:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1395 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
@@ -3663,7 +3655,7 @@
 
   case 56:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1399 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
@@ -3672,7 +3664,7 @@
 
   case 57:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1403 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t);
@@ -3685,28 +3677,28 @@
 
   case 58:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1411 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 59:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1415 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 60:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1416 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 61:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1418 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -3721,21 +3713,21 @@
 
   case 62:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1430 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 63:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1430 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(3) - (3)].sr); IMCC_INFO(interp)->is_def = 0; }
     break;
 
   case 64:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1435 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(3) - (3)].t) & VT_OPT_FLAG && (yyvsp[(1) - (3)].t) != 'I') {
@@ -3760,14 +3752,14 @@
 
   case 65:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1459 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 66:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1464 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3778,7 +3770,7 @@
 
   case 67:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1470 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3789,7 +3781,7 @@
 
   case 68:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1479 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
@@ -3800,7 +3792,7 @@
 
   case 69:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1485 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
@@ -3811,7 +3803,7 @@
 
   case 70:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1494 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
@@ -3822,7 +3814,7 @@
 
   case 71:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1500 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
@@ -3833,7 +3825,7 @@
 
   case 72:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1509 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_NSENTRY;
@@ -3844,7 +3836,7 @@
 
   case 73:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1515 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_NSENTRY;
@@ -3855,7 +3847,7 @@
 
   case 74:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1524 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3865,7 +3857,7 @@
 
   case 75:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1532 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3875,7 +3867,7 @@
 
   case 76:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1537 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3887,7 +3879,7 @@
 
   case 77:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1547 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, NULL);
@@ -3896,7 +3888,7 @@
 
   case 78:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1551 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3906,7 +3898,7 @@
 
   case 79:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1556 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3916,35 +3908,35 @@
 
   case 80:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1563 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
     break;
 
   case 81:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1564 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
     break;
 
   case 82:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1565 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
     break;
 
   case 83:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1566 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
     break;
 
   case 84:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1568 "compilers/imcc/imcc.y"
     {
            SymReg *r;
@@ -3960,7 +3952,7 @@
 
   case 85:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1579 "compilers/imcc/imcc.y"
     {
            SymReg *r;
@@ -3976,14 +3968,14 @@
 
   case 86:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1589 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 89:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1599 "compilers/imcc/imcc.y"
     {
            char name[128];
@@ -4010,112 +4002,112 @@
 
   case 90:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1625 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 91:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1629 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
   case 92:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1630 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
   case 93:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1634 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 94:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1635 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 95:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1639 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 97:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1644 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
   case 98:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1645 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 99:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1649 "compilers/imcc/imcc.y"
     { (yyval.t) = P_LOAD; }
     break;
 
   case 100:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1650 "compilers/imcc/imcc.y"
     { (yyval.t) = P_INIT; }
     break;
 
   case 101:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1651 "compilers/imcc/imcc.y"
     { (yyval.t) = P_MAIN; }
     break;
 
   case 102:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1652 "compilers/imcc/imcc.y"
     { (yyval.t) = P_IMMEDIATE; }
     break;
 
   case 103:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1653 "compilers/imcc/imcc.y"
     { (yyval.t) = P_POSTCOMP; }
     break;
 
   case 104:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1654 "compilers/imcc/imcc.y"
     { (yyval.t) = P_ANON; }
     break;
 
   case 105:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1655 "compilers/imcc/imcc.y"
     { (yyval.t) = P_NEED_LEX; }
     break;
 
   case 113:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1667 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
@@ -4125,7 +4117,7 @@
 
   case 114:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1672 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -4134,7 +4126,7 @@
 
   case 115:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1676 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -4143,7 +4135,7 @@
 
   case 116:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1680 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -4152,7 +4144,7 @@
 
   case 117:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1684 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
@@ -4161,7 +4153,7 @@
 
   case 118:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1688 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
@@ -4171,7 +4163,7 @@
 
   case 119:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1693 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
@@ -4181,14 +4173,14 @@
 
   case 120:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1701 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 121:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1702 "compilers/imcc/imcc.y"
     {
                                  if (IMCC_INFO(interp)->adv_named_id) {
@@ -4203,21 +4195,21 @@
 
   case 122:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1714 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
   case 123:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1719 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 124:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1721 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -4227,21 +4219,21 @@
 
   case 125:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1728 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 126:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1729 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 127:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1730 "compilers/imcc/imcc.y"
     {
            IdList * const l = (yyvsp[(4) - (4)].idlist);
@@ -4255,91 +4247,91 @@
 
   case 128:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1741 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 129:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1742 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 130:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1746 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;   }
     break;
 
   case 131:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1747 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPTIONAL; }
     break;
 
   case 132:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1748 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPT_FLAG; }
     break;
 
   case 133:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1749 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
   case 134:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1750 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = VT_NAMED; mem_sys_free((yyvsp[(3) - (4)].s)); }
     break;
 
   case 135:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1751 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = VT_NAMED; mem_sys_free((yyvsp[(3) - (4)].s)); }
     break;
 
   case 136:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1752 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 137:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1753 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_CALL_SIG; }
     break;
 
   case 138:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1758 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 0); }
     break;
 
   case 139:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1760 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 140:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1762 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
@@ -4349,28 +4341,28 @@
 
   case 141:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1769 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); }
     break;
 
   case 142:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1771 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 143:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1775 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 144:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1777 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
@@ -4380,7 +4372,7 @@
 
   case 145:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1782 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -4390,14 +4382,14 @@
 
   case 146:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1789 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 147:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1791 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
@@ -4407,7 +4399,7 @@
 
   case 148:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1796 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -4417,21 +4409,21 @@
 
   case 149:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1803 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 150:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1807 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 151:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1812 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
@@ -4441,7 +4433,7 @@
 
   case 152:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1817 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
@@ -4451,28 +4443,28 @@
 
   case 153:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1824 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 154:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1825 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 155:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1829 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 156:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1831 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4487,7 +4479,7 @@
 
   case 157:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1841 "compilers/imcc/imcc.y"
     {
             SymReg * const name = mk_const(interp, (yyvsp[(1) - (3)].s), 'S');
@@ -4497,7 +4489,7 @@
 
   case 158:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1846 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4512,7 +4504,7 @@
 
   case 159:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1856 "compilers/imcc/imcc.y"
     {
            SymReg * const name = mk_const(interp, (yyvsp[(3) - (5)].s), 'S');
@@ -4522,63 +4514,63 @@
 
   case 162:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1877 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 163:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1882 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
   case 164:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1883 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 165:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1884 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 166:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1885 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 167:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1886 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 168:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1887 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 169:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1891 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 173:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1902 "compilers/imcc/imcc.y"
     {
              Instruction * const i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
@@ -4589,14 +4581,14 @@
 
   case 174:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1912 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
   case 175:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1914 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
@@ -4609,7 +4601,7 @@
 
   case 176:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1925 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(1) - (1)].idlist);
@@ -4620,7 +4612,7 @@
 
   case 177:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1932 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(3) - (3)].idlist);
@@ -4631,7 +4623,7 @@
 
   case 178:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1941 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_gc_allocate_n_zeroed_typed(interp, 1, IdList);
@@ -4642,14 +4634,14 @@
 
   case 183:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1957 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 184:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1958 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
@@ -4667,7 +4659,7 @@
 
   case 185:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1971 "compilers/imcc/imcc.y"
     {
             if ((yyvsp[(4) - (4)].sr)->set != 'P') {
@@ -4689,7 +4681,7 @@
 
   case 186:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 1988 "compilers/imcc/imcc.y"
     {
             if ((yyvsp[(4) - (4)].sr)->set != 'P') {
@@ -4707,14 +4699,14 @@
 
   case 187:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2000 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 188:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2001 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
@@ -4725,14 +4717,14 @@
 
   case 190:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2008 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 191:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2009 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
@@ -4743,7 +4735,7 @@
 
   case 192:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2015 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
@@ -4754,7 +4746,7 @@
 
   case 193:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2021 "compilers/imcc/imcc.y"
     {
             (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
@@ -4763,7 +4755,7 @@
 
   case 194:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2025 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
@@ -4780,98 +4772,98 @@
 
   case 195:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2036 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
   case 196:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2037 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 197:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2038 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 200:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2041 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 201:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2045 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; }
     break;
 
   case 202:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2046 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; }
     break;
 
   case 203:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2047 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; }
     break;
 
   case 204:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2048 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; }
     break;
 
   case 205:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2053 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  }
     break;
 
   case 206:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2055 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  }
     break;
 
   case 207:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2057 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); }
     break;
 
   case 208:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2059 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); }
     break;
 
   case 209:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2061 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
   case 210:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2064 "compilers/imcc/imcc.y"
     {
            add_pcc_result(interp, (yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
@@ -4882,7 +4874,7 @@
 
   case 211:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2070 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
@@ -4891,7 +4883,7 @@
 
   case 212:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2074 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
@@ -4901,7 +4893,7 @@
 
   case 216:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2082 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
@@ -4910,189 +4902,189 @@
 
   case 217:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2089 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
   case 218:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2090 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
   case 219:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2091 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
   case 220:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2095 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 221:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2096 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 222:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2097 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 223:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2098 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 224:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2099 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 225:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2100 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 226:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2101 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
   case 227:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2102 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 228:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2103 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
   case 229:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2104 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
   case 230:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2105 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
   case 231:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2106 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
   case 232:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2107 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
   case 233:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2108 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
   case 234:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2109 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 235:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2110 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 236:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2111 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 237:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2112 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
   case 238:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2113 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
   case 239:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2114 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
   case 240:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2115 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 241:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2116 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 242:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2117 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 243:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2123 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
@@ -5103,112 +5095,112 @@
 
   case 244:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2128 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
   case 245:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2135 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); }
     break;
 
   case 246:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2139 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 247:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2140 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 248:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2141 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 249:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2142 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 250:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2143 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 251:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2144 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 252:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2145 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 253:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2146 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 254:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2147 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 255:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2148 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 256:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2149 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 257:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2150 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 258:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2151 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 259:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2157 "compilers/imcc/imcc.y"
     {
         (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
@@ -5221,28 +5213,28 @@
 
   case 260:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2167 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));       mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 261:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2168 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 262:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2169 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));     mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 263:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2171 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
@@ -5253,7 +5245,7 @@
 
   case 264:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2177 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
@@ -5272,7 +5264,7 @@
 
   case 265:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2191 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
@@ -5283,7 +5275,7 @@
 
   case 266:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2197 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
@@ -5294,14 +5286,14 @@
 
   case 267:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2202 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
   case 268:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2208 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
@@ -5311,21 +5303,21 @@
 
   case 269:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2212 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
   case 270:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2216 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 271:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2218 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5340,7 +5332,7 @@
 
   case 272:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2228 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5355,7 +5347,7 @@
 
   case 273:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2238 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5367,7 +5359,7 @@
 
   case 274:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2245 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5377,7 +5369,7 @@
 
   case 275:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2250 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5389,70 +5381,70 @@
 
   case 276:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2259 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 277:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2263 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 278:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2264 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 279:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2268 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;     }
     break;
 
   case 280:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2269 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED;    }
     break;
 
   case 281:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2270 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_CALL_SIG; }
     break;
 
   case 282:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2273 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 283:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2274 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; }
     break;
 
   case 284:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2278 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 285:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2283 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5467,7 +5459,7 @@
 
   case 286:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2293 "compilers/imcc/imcc.y"
     {
             add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call,
@@ -5478,7 +5470,7 @@
 
   case 287:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2299 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5493,7 +5485,7 @@
 
   case 288:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2309 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr));
@@ -5503,28 +5495,28 @@
 
   case 289:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2313 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 290:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2317 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 291:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2318 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 292:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2323 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
@@ -5533,7 +5525,7 @@
 
   case 293:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2327 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
@@ -5542,7 +5534,7 @@
 
   case 294:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2331 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
@@ -5551,7 +5543,7 @@
 
   case 295:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2338 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
@@ -5560,7 +5552,7 @@
 
   case 296:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2342 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
@@ -5569,7 +5561,7 @@
 
   case 297:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2346 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
@@ -5578,91 +5570,91 @@
 
   case 298:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2352 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 299:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2353 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 300:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2357 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
   case 301:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2358 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
   case 302:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2359 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
   case 303:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2360 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
   case 304:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2361 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
   case 305:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2362 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
   case 308:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2371 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 309:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2372 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 310:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2376 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
   case 312:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2381 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 313:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2383 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
@@ -5674,7 +5666,7 @@
 
   case 314:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2390 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
@@ -5684,49 +5676,49 @@
 
   case 316:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2397 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 317:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2398 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 318:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2402 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 319:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2403 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 320:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2407 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 321:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2408 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 326:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2422 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
@@ -5735,7 +5727,7 @@
 
   case 327:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2426 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
@@ -5746,7 +5738,7 @@
 
   case 328:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2434 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
@@ -5755,7 +5747,7 @@
 
   case 329:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2438 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
@@ -5766,14 +5758,14 @@
 
   case 330:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2446 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 331:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2448 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
@@ -5783,7 +5775,7 @@
 
   case 332:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2456 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
@@ -5792,78 +5784,78 @@
 
   case 333:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2462 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
   case 334:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2463 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
   case 335:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2464 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
   case 336:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2465 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
   case 337:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2466 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 338:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2470 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 339:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2471 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 340:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2475 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 341:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2476 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 342:
 
-/* Line 1464 of yacc.c  */
+/* Line 1455 of yacc.c  */
 #line 2477 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
 
 
-/* Line 1464 of yacc.c  */
-#line 5856 "compilers/imcc/imcparser.c"
+/* Line 1455 of yacc.c  */
+#line 5848 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -6074,7 +6066,7 @@
 
 
 
-/* Line 1684 of yacc.c  */
+/* Line 1675 of yacc.c  */
 #line 2483 "compilers/imcc/imcc.y"
 
 

Modified: branches/gsoc_threads/compilers/imcc/imcparser.h
==============================================================================
--- branches/gsoc_threads/compilers/imcc/imcparser.h	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/imcc/imcparser.h	Fri Aug 13 00:07:10 2010	(r48443)
@@ -9,12 +9,13 @@
  */
 /* HEADERIZER HFILE: none */
 /* HEADERIZER STOP */
-/* A Bison parser, made by GNU Bison 2.4.2.  */
+
+/* A Bison parser, made by GNU Bison 2.4.1.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
-   Foundation, Inc.
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -294,7 +295,7 @@
 typedef union YYSTYPE
 {
 
-/* Line 1685 of yacc.c  */
+/* Line 1676 of yacc.c  */
 #line 1071 "compilers/imcc/imcc.y"
 
     IdList * idlist;
@@ -305,8 +306,8 @@
 
 
 
-/* Line 1685 of yacc.c  */
-#line 299 "compilers/imcc/imcparser.h"
+/* Line 1676 of yacc.c  */
+#line 300 "compilers/imcc/imcparser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */

Modified: branches/gsoc_threads/compilers/imcc/instructions.c
==============================================================================
--- branches/gsoc_threads/compilers/imcc/instructions.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/imcc/instructions.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -826,7 +826,7 @@
         (emitters[emitter]).new_sub(interp, param, unit);
 
     for (ins = unit->instructions; ins; ins = ins->next) {
-        IMCC_debug(interp, DEBUG_IMC, "emit %I\n", ins);
+        IMCC_debug(interp, DEBUG_IMC, "emit %d\n", ins);
         (emitters[emitter]).emit(interp, param, unit, ins);
     }
 

Modified: branches/gsoc_threads/compilers/imcc/optimizer.c
==============================================================================
--- branches/gsoc_threads/compilers/imcc/optimizer.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/imcc/optimizer.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -461,12 +461,12 @@
                 ins->opnum == PARROT_OP_mul_n_nc_n) &&
              (ins->symregs[0] == ins->symregs[1] ||
               ins->symregs[0] == ins->symregs[2]))) {
-            IMCC_debug(interp, DEBUG_OPT1, "opt1 %I => ", ins);
+            IMCC_debug(interp, DEBUG_OPT1, "opt1 %d => ", ins);
             if (ins->symregs[0] == ins->symregs[1]) {
                 ins->symregs[1] = ins->symregs[2];
             }
             tmp = INS(interp, unit, ins->opname, "", ins->symregs, 2, 0, 0);
-            IMCC_debug(interp, DEBUG_OPT1, "%I\n", tmp);
+            IMCC_debug(interp, DEBUG_OPT1, "%d\n", tmp);
             subst_ins(unit, ins, tmp, 1);
             ins = tmp;
             changes = 1;
@@ -497,7 +497,7 @@
                 ins->opnum == PARROT_OP_div_n_nc ||
                 ins->opnum == PARROT_OP_fdiv_n_nc) &&
                       atof(ins->symregs[1]->name) == 1.0)) {
-            IMCC_debug(interp, DEBUG_OPT1, "opt1 %I => ", ins);
+            IMCC_debug(interp, DEBUG_OPT1, "opt1 %d => ", ins);
             ins = delete_ins(unit, ins);
             if (ins)
                 ins = ins->prev ? ins->prev : unit->instructions;
@@ -519,7 +519,7 @@
           || ((ins->opnum == PARROT_OP_add_n_nc ||
                 ins->opnum == PARROT_OP_sub_n_nc) &&
                       atof(ins->symregs[1]->name) == 1.0)) {
-            IMCC_debug(interp, DEBUG_OPT1, "opt1 %I => ", ins);
+            IMCC_debug(interp, DEBUG_OPT1, "opt1 %d => ", ins);
             --ins->symregs[1]->use_count;
             if (ins->opnum == PARROT_OP_add_i_ic ||
                 ins->opnum == PARROT_OP_add_n_nc)
@@ -527,7 +527,7 @@
             else
                 tmp = INS(interp, unit, "dec", "", ins->symregs, 1, 0, 0);
             subst_ins(unit, ins, tmp, 1);
-            IMCC_debug(interp, DEBUG_OPT1, "%I\n", tmp);
+            IMCC_debug(interp, DEBUG_OPT1, "%d\n", tmp);
             ins = tmp;
             changes = 1;
             continue;
@@ -570,7 +570,7 @@
                       atof(ins->symregs[2]->name) == 1.0)
           || (ins->opnum == PARROT_OP_mul_n_nc_n &&
                       atof(ins->symregs[1]->name) == 1.0)) {
-            IMCC_debug(interp, DEBUG_OPT1, "opt1 %I => ", ins);
+            IMCC_debug(interp, DEBUG_OPT1, "opt1 %d => ", ins);
             if (ins->symregs[1]->type == VTCONST) {
                 --ins->symregs[1]->use_count;
                 ins->symregs[1] = ins->symregs[2];
@@ -579,7 +579,7 @@
                 --ins->symregs[2]->use_count;
             }
             tmp = INS(interp, unit, "set", "", ins->symregs, 2, 0, 0);
-            IMCC_debug(interp, DEBUG_OPT1, "%I\n", tmp);
+            IMCC_debug(interp, DEBUG_OPT1, "%d\n", tmp);
             subst_ins(unit, ins, tmp, 1);
             ins = tmp;
             changes = 1;
@@ -600,14 +600,14 @@
           || ((ins->opnum == PARROT_OP_mul_n_nc_n ||
                 ins->opnum == PARROT_OP_mul_n_nc) &&
                 (f = atof(ins->symregs[1]->name), FLOAT_IS_ZERO(f)))) {
-            IMCC_debug(interp, DEBUG_OPT1, "opt1 %I => ", ins);
+            IMCC_debug(interp, DEBUG_OPT1, "opt1 %d => ", ins);
             r = mk_const(interp, "0", ins->symregs[0]->set);
             --ins->symregs[1]->use_count;
             if (ins->opsize == 4)
                 --ins->symregs[2]->use_count;
             ins->symregs[1] = r;
             tmp = INS(interp, unit, "set", "", ins->symregs, 2, 0, 0);
-            IMCC_debug(interp, DEBUG_OPT1, "%I\n", tmp);
+            IMCC_debug(interp, DEBUG_OPT1, "%d\n", tmp);
             subst_ins(unit, ins, tmp, 1);
             ins = tmp;
             changes = 1;
@@ -621,11 +621,11 @@
           || (ins->opnum == PARROT_OP_set_n_nc &&
              (f = atof(ins->symregs[1]->name), FLOAT_IS_ZERO(f)) &&
               ins->symregs[1]->name[0] != '-')) {
-            IMCC_debug(interp, DEBUG_OPT1, "opt1 %I => ", ins);
+            IMCC_debug(interp, DEBUG_OPT1, "opt1 %d => ", ins);
             --ins->symregs[1]->use_count;
             tmp = INS(interp, unit, "null", "", ins->symregs, 1, 0, 0);
             subst_ins(unit, ins, tmp, 1);
-            IMCC_debug(interp, DEBUG_OPT1, "%I\n", tmp);
+            IMCC_debug(interp, DEBUG_OPT1, "%d\n", tmp);
             ins = tmp;
             changes = 1;
             continue;
@@ -677,7 +677,7 @@
             Instruction *ins2;
 
             IMCC_debug(interp, DEBUG_OPT2,
-                    "propagating constant %I => \n", ins);
+                    "propagating constant %d => \n", ins);
             for (ins2 = ins->next; ins2; ins2 = ins2->next) {
                 int i;
                 if (ins2->bbindex != ins->bbindex)
@@ -694,7 +694,7 @@
                             SymReg *old;
 
                             IMCC_debug(interp, DEBUG_OPT2,
-                                    "\tpropagating into %I register %i",
+                                    "\tpropagating into %d register %i",
                                     ins2, i);
                             old = ins2->symregs[i];
                             ins2->symregs[i] = c;
@@ -708,7 +708,7 @@
                                     subst_ins(unit, ins2, tmp, 1);
                                     any = 1;
                                     IMCC_debug(interp, DEBUG_OPT2,
-                                            " reduced to %I\n", tmp);
+                                            " reduced to %d\n", tmp);
                                     ins2 = prev->next;
                                 }
                             }
@@ -726,7 +726,7 @@
                                     ins2->opnum = op;
                                     any = 1;
                                     IMCC_debug(interp, DEBUG_OPT2,
-                                            " -> %I\n", ins2);
+                                            " -> %d\n", ins2);
                                 }
                             }
                         }
@@ -777,7 +777,7 @@
             strcpy(b, r[1]->name);
             r[1] = mk_const(interp, b, 'N');
             tmp = INS(interp, unit, name, "", r, 2, 0, 0);
-            IMCC_debug(interp, DEBUG_OPT1, "%I\n", tmp);
+            IMCC_debug(interp, DEBUG_OPT1, "%d\n", tmp);
         }
     }
     return tmp;
@@ -1067,7 +1067,7 @@
         tmp = INS(interp, unit, "set", "", r, 2, 0, 0);
     }
     if (tmp) {
-        IMCC_debug(interp, DEBUG_OPT1, "%I\n", tmp);
+        IMCC_debug(interp, DEBUG_OPT1, "%d\n", tmp);
     }
     *ok = 1;
     return tmp;
@@ -1116,7 +1116,7 @@
                         !STREQ(next->symregs[0]->name, get_branch_reg(ins)->name)) {
                     const int regno = get_branch_regno(ins);
                     IMCC_debug(interp, DEBUG_OPT1,
-                            "found branch to branch '%s' %I\n",
+                            "found branch to branch '%s' %d\n",
                             r->first_ins->symregs[0]->name, next);
                     unit->ostat.branch_branch++;
                     if (regno < 0)
@@ -1209,7 +1209,7 @@
                         start->prev = ins;
 
                         IMCC_debug(interp, DEBUG_OPT1,
-                                "found branch to reorganize '%s' %I\n",
+                                "found branch to reorganize '%s' %d\n",
                                 r->first_ins->symregs[0]->name, ins);
 
                         /* unconditional jump can be eliminated */
@@ -1507,7 +1507,7 @@
 
             for (ins = bb->start; ins && ins->bbindex == bbi;) {
                 IMCC_debug(interp, DEBUG_OPT1,
-                        "\tins deleted (dead block) %I\n", ins);
+                        "\tins deleted (dead block) %d\n", ins);
                 ins = delete_ins(unit, ins);
                 unit->ostat.deleted_ins++;
                 changed++;
@@ -1525,7 +1525,7 @@
         if ((last->type & IF_goto) && !(ins->type & ITLABEL) &&
             STREQ(last->opname, "branch")) {
             IMCC_debug(interp, DEBUG_OPT1,
-                    "unreachable ins deleted (after branch) %I\n", ins);
+                    "unreachable ins deleted (after branch) %d\n", ins);
             ins = delete_ins(unit, ins);
             unit->ostat.deleted_ins++;
             changed++;
@@ -1538,7 +1538,7 @@
         if (ins && last && (last->type & IF_goto) && (ins->type & ITLABEL) &&
                 STREQ(last->opname, "branch") &&
                 STREQ(last->symregs[0]->name, ins->symregs[0]->name)) {
-            IMCC_debug(interp, DEBUG_OPT1, "dead branch deleted %I\n", ins);
+            IMCC_debug(interp, DEBUG_OPT1, "dead branch deleted %d\n", ins);
             ins = delete_ins(unit, last);
             unit->ostat.deleted_ins++;
             changed++;
@@ -1572,7 +1572,7 @@
         if (ins->symregs) {
             SymReg * const r = ins->symregs[0];
             if (r && (r->use_count == 1 && r->lhs_use_count == 1)) {
-                IMCC_debug(interp, DEBUG_OPT2, "used once '%I' deleted\n", ins);
+                IMCC_debug(interp, DEBUG_OPT2, "used once '%d' deleted\n", ins);
                 ins = delete_ins(unit, ins);
 
                 /* find previous instruction or first instruction of this CU

Modified: branches/gsoc_threads/compilers/imcc/pbc.c
==============================================================================
--- branches/gsoc_threads/compilers/imcc/pbc.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/imcc/pbc.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -666,7 +666,7 @@
             (*src_lines)++;
             if (ins->opnum < 0)
                 IMCC_fatal(interp, 1, "get_code_size: "
-                        "no opnum ins#%d %I\n",
+                        "no opnum ins#%d %d\n",
                         ins->index, ins);
 
             if (ins->opnum == PARROT_OP_set_p_pc) {
@@ -691,6 +691,85 @@
 
 /*
 
+=item C<opcode_t bytecode_map_op(PARROT_INTERP, opcode_t op)>
+
+Lookup the mapping of an op for the current bytecode segment or make one if
+none exists.
+
+=cut
+
+*/
+
+static
+opcode_t
+bytecode_map_op(PARROT_INTERP, opcode_t op) {
+    int i;
+    op_info_t         *info    = &interp->op_info_table[op];
+    op_lib_t          *lib     = info->lib;
+    op_func_t         op_func  = interp->op_func_table[op];
+    PackFile_ByteCode *bc      = interp->code;
+    PackFile_ByteCode_OpMappingEntry *om;
+
+    for (i = 0; i < bc->op_mapping.n_libs; i++) {
+        if (lib == bc->op_mapping.libs[i].lib) {
+            om = &bc->op_mapping.libs[i];
+            goto found_lib;
+        }
+    }
+
+    /* library not yet mapped */
+    bc->op_mapping.n_libs++;
+    bc->op_mapping.libs = mem_gc_realloc_n_typed_zeroed(interp, bc->op_mapping.libs,
+                            bc->op_mapping.n_libs, bc->op_mapping.n_libs - 1,
+                            PackFile_ByteCode_OpMappingEntry);
+
+    /* initialize a new lib entry */
+    om            = &bc->op_mapping.libs[bc->op_mapping.n_libs - 1];
+    om->lib       = lib;
+    om->n_ops     = 0;
+    om->lib_ops   = mem_gc_allocate_n_zeroed_typed(interp, 0, opcode_t);
+    om->table_ops = mem_gc_allocate_n_zeroed_typed(interp, 0, opcode_t);
+
+  found_lib:
+    for (i = 0; i < om->n_ops; i++) {
+        if (bc->op_func_table[om->table_ops[i]] == op_func)
+            return om->table_ops[i];
+    }
+
+    /* op not yet mapped */
+    bc->op_count++;
+    bc->op_func_table =
+        mem_gc_realloc_n_typed_zeroed(interp, bc->op_func_table, bc->op_count, bc->op_count,
+                                        op_func_t);
+    bc->op_func_table[bc->op_count - 1] = op_func;
+    bc->op_info_table =
+        mem_gc_realloc_n_typed_zeroed(interp, bc->op_info_table, bc->op_count, bc->op_count,
+                                        op_info_t *);
+    bc->op_info_table[bc->op_count - 1] = info;
+
+    /* initialize new op mapping */
+    om->n_ops++;
+
+    om->lib_ops =
+        mem_gc_realloc_n_typed_zeroed(interp, om->lib_ops, om->n_ops, om->n_ops - 1, opcode_t);
+    for (i = 0; i < lib->op_count; i++) {
+        if (lib->op_func_table[i] == op_func) {
+            om->lib_ops[om->n_ops - 1] = i;
+            break;
+        }
+    }
+    PARROT_ASSERT(om->lib_ops[om->n_ops - 1] || !i);
+
+    om->table_ops =
+        mem_gc_realloc_n_typed_zeroed(interp, om->table_ops, om->n_ops, om->n_ops - 1, opcode_t);
+    om->table_ops[om->n_ops - 1] = bc->op_count - 1;
+
+    return bc->op_count - 1;
+}
+
+
+/*
+
 =item C<static subs_t * find_global_label(PARROT_INTERP, const char *name, const
 subs_t *sym, int *pc)>
 
@@ -836,7 +915,7 @@
                     const int op = interp->op_lib->op_code(interp, "find_sub_not_null_p_sc", 1);
                     PARROT_ASSERT(op);
 
-                    interp->code->base.data[addr] = op;
+                    interp->code->base.data[addr] = bytecode_map_op(interp, op);
 
                     if (nam->color < 0)
                         nam->color = add_const_str(interp, IMCC_string_from_reg(interp, nam));
@@ -1437,7 +1516,7 @@
     sub->namespace_name = ns_pmc;
     sub->start_offs     = offs;
     sub->end_offs       = end;
-    sub->HLL_id         = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp));
+    sub->HLL_id         = unit->hll_id;
 
     for (i = 0; i < 4; ++i)
         sub->n_regs_used[i] = unit->n_regs_used[i];
@@ -1643,22 +1722,20 @@
 
     for (key_length = 0; reg ; reg = reg->nextkey, key_length++) {
         SymReg *r = reg;
-        int     type;
 
         if (key_length >= MAX_KEY_LEN)
             IMCC_fatal(interp, 1, "build_key:"
                     "Key too long, increase MAX_KEY_LEN.\n");
 
-        /* if key is a register, the original sym is in r->reg */
-        type = r->type;
-
-        if (r->reg)
-            r = r->reg;
-
-        switch (type) {
+        switch (r->type) {
           case VTIDENTIFIER:       /* P[S0] */
           case VTPASM:             /* P[S0] */
           case VTREG:              /* P[S0] */
+
+            /* if key is a register, the original sym is in r->reg */
+            if (r->reg)
+                r = r->reg;
+
             if (r->set == 'I')
                 *pc++ = PARROT_ARG_I;    /* register type */
             else if (r->set == 'S')
@@ -1678,7 +1755,9 @@
                     " keypart reg %s %c%d\n",
                     r->name, r->set, (int)r->color);
             break;
+
           case VT_CONSTP:
+            r = r->reg;
           case VTCONST:
           case VTCONST|VT_ENCODED:
             switch (r->set) {
@@ -1711,7 +1790,7 @@
             break;
           default:
             IMCC_fatal(interp, 1, "build_key: "
-                    "unknown type 0x%x on %s\n", type, r->name);
+                    "unknown type 0x%x on %s\n", r->type, r->name);
         }
     }
 
@@ -1969,7 +2048,7 @@
             SymReg *key = r;
 
             for (r = r->nextkey; r; r = r->nextkey)
-                if (r->type & VTCONST)
+                if (r->type & (VTCONST|VT_CONSTP))
                     add_1_const(interp, r);
                 build_key(interp, key);
         }
@@ -2351,15 +2430,15 @@
 
         op = (opcode_t)ins->opnum;
 
-        /* Start generating the bytecode */
-        *(IMCC_INFO(interp)->pc)++   = op;
-
         /* Get the info for that opcode */
         op_info = &interp->op_info_table[op];
 
         IMCC_debug(interp, DEBUG_PBC, "%d %s", IMCC_INFO(interp)->npc,
             op_info->full_name);
 
+        /* Start generating the bytecode */
+        *(IMCC_INFO(interp)->pc)++ = bytecode_map_op(interp, op);
+
         for (i = 0; i < op_info->op_count-1; i++) {
             switch (op_info->types[i]) {
               case PARROT_ARG_IC:
@@ -2429,7 +2508,7 @@
             }
         }
 
-        IMCC_debug(interp, DEBUG_PBC, "\t%I\n", ins);
+        IMCC_debug(interp, DEBUG_PBC, "\t%d\n", ins);
         IMCC_INFO(interp)->npc += ins->opsize;
     }
 

Modified: branches/gsoc_threads/compilers/imcc/pcc.c
==============================================================================
--- branches/gsoc_threads/compilers/imcc/pcc.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/imcc/pcc.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -471,7 +471,7 @@
             tmp = INS(interp, unit, "returncc", NULL, regs, 0, 0, 0);
         }
 
-        IMCC_debug(interp, DEBUG_IMC, "add sub ret - %I\n", tmp);
+        IMCC_debug(interp, DEBUG_IMC, "add sub ret - %d\n", tmp);
         insert_ins(unit, unit->last_ins, tmp);
     }
 }

Modified: branches/gsoc_threads/compilers/imcc/symreg.c
==============================================================================
--- branches/gsoc_threads/compilers/imcc/symreg.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/imcc/symreg.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -298,7 +298,7 @@
 mk_symreg(PARROT_INTERP, ARGIN(const char *name), int t)
 {
     ASSERT_ARGS(mk_symreg)
-    IMC_Unit * const unit = IMCC_INFO(interp)->last_unit;
+    IMC_Unit * const unit = IMCC_INFO(interp)->cur_unit;
 
     /* Check for the condition that fires up a segfault in TT #162 */
     PARROT_ASSERT(unit != NULL);
@@ -393,7 +393,7 @@
 mk_pcc_sub(PARROT_INTERP, ARGIN(const char *name), int proto)
 {
     ASSERT_ARGS(mk_pcc_sub)
-    IMC_Unit * const unit = IMCC_INFO(interp)->last_unit;
+    IMC_Unit * const unit = IMCC_INFO(interp)->cur_unit;
     SymReg   * const r    = _mk_symreg(interp, &unit->hash, name, proto);
 
     r->type    = VT_PCC_SUB;
@@ -407,7 +407,7 @@
 
 =item C<void add_namespace(PARROT_INTERP, IMC_Unit *unit)>
 
-Add the current namespace to a sub declaration.
+Add the current namespace (and HLL id) to a sub declaration.
 
 =cut
 
@@ -419,6 +419,8 @@
     ASSERT_ARGS(add_namespace)
     SymReg * const ns = IMCC_INFO(interp)->cur_namespace;
 
+    unit->hll_id = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp));
+
     if (!ns)
         return;
 
@@ -647,7 +649,7 @@
 {
     ASSERT_ARGS(mk_ident)
     char   * const fullname = _mk_fullname(interp, IMCC_INFO(interp)->namespace_stack, name);
-    SymReg *r = get_sym_by_name(&(IMCC_INFO(interp)->last_unit->hash), name);
+    SymReg *r = get_sym_by_name(&(IMCC_INFO(interp)->cur_unit->hash), name);
     if (r && r->set != t)
         IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
                 "syntax error, duplicated IDENTIFIER '%s'\n", fullname);
@@ -1075,7 +1077,7 @@
 mk_local_label(PARROT_INTERP, ARGIN(const char *name))
 {
     ASSERT_ARGS(mk_local_label)
-    IMC_Unit * const unit = IMCC_INFO(interp)->last_unit;
+    IMC_Unit * const unit = IMCC_INFO(interp)->cur_unit;
     return _mk_address(interp, &unit->hash, name, U_add_uniq_label);
 }
 
@@ -1096,7 +1098,7 @@
 mk_label_address(PARROT_INTERP, ARGIN(const char *name))
 {
     ASSERT_ARGS(mk_label_address)
-    IMC_Unit * const unit = IMCC_INFO(interp)->last_unit;
+    IMC_Unit * const unit = IMCC_INFO(interp)->cur_unit;
     return _mk_address(interp, &unit->hash, name, U_add_once);
 }
 

Modified: branches/gsoc_threads/compilers/imcc/unit.h
==============================================================================
--- branches/gsoc_threads/compilers/imcc/unit.h	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/imcc/unit.h	Fri Aug 13 00:07:10 2010	(r48443)
@@ -69,8 +69,8 @@
     char             *vtable_name;      /* vtable name, if any */
     char             *method_name;      /* method name, if any */
     char             *ns_entry_name;    /* ns entry name, if any */
-    char             *instance_of;      /* PMC or class this is an instance of
-                                         * if any */
+    char             *instance_of;      /* PMC or class this is an instance of if any */
+    INTVAL            hll_id;           /* HLL ID for this sub */
     SymReg           *subid;            /* Unique subroutine id */
 
     struct            imcc_ostat ostat;

Modified: branches/gsoc_threads/compilers/opsc/src/Ops/Emitter.pm
==============================================================================
--- branches/gsoc_threads/compilers/opsc/src/Ops/Emitter.pm	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/opsc/src/Ops/Emitter.pm	Fri Aug 13 00:07:10 2010	(r48443)
@@ -217,6 +217,9 @@
 
 {self.trans.defines(self)}
 
+/* XXX should be static, but C++ doesn't want to play ball */
+extern op_lib_t {self.bs}op_lib;
+
 |);
 
     $fh.print(self.ops_file.preamble);
@@ -230,9 +233,10 @@
 ** op lib descriptor:
 */
 
-static op_lib_t | ~ self.bs ~ q|op_lib = {| ~ qq|
-  "{self.base}",               /* name */
-  "{self.suffix}",             /* suffix */
+/* XXX should be static, but C++ doesn't want to play ball */
+op_lib_t | ~ self.bs ~ q|op_lib = {| ~ qq|
+  "{self.base}_ops",                /* name */
+  "{self.suffix}",                  /* suffix */
   $core_type,                       /* core_type = PARROT_XX_CORE */
   0,                                /* flags */
   {self.ops_file.version_major},    /* major_version */

Modified: branches/gsoc_threads/compilers/opsc/src/Ops/Trans/C.pm
==============================================================================
--- branches/gsoc_threads/compilers/opsc/src/Ops/Trans/C.pm	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/compilers/opsc/src/Ops/Trans/C.pm	Fri Aug 13 00:07:10 2010	(r48443)
@@ -180,6 +180,7 @@
 |);
 
     my $index := 0;
+    my $op_lib_ref := '&' ~ $emitter.bs() ~ 'op_lib';
 
     for $emitter.ops_file.ops -> $op {
         my $type := sprintf( "PARROT_%s_OP", uc($op.type ?? 'INLINE' !! 'FUNCTION') );
@@ -218,7 +219,8 @@
     $arg_count,
     $arg_types,
     $arg_dirs,
-    $labels
+    $labels,
+    $op_lib_ref
   | ~ '},
 ',
             );
@@ -278,11 +280,13 @@
     op_info_t * info;
     struct hop *next;
 } HOP;
+
+static HOP *hop_buckets;
 static HOP **hop;
 
 static void hop_init(PARROT_INTERP);
 static size_t hash_str(const char *str);
-static void store_op(PARROT_INTERP, op_info_t *info, int full);
+static void store_op(PARROT_INTERP, op_info_t *info, HOP *p, const char *name);
 
 /* XXX on changing interpreters, this should be called,
    through a hook */
@@ -314,60 +318,65 @@
     return key;
 }
 
-static void store_op(PARROT_INTERP, op_info_t *info, int full)
+
+static void store_op(PARROT_INTERP, op_info_t *info, HOP *p, const char *name)
 {
-    HOP * const p     = mem_gc_allocate_zeroed_typed(interp, HOP);
-    const size_t hidx =
-        hash_str(full ? info->full_name : info->name) % OP_HASH_SIZE;
+    const size_t hidx = hash_str(name) % OP_HASH_SIZE;
 
-    p->info   = info;
-    p->next   = hop[hidx];
-    hop[hidx] = p;
+    p->info           = info;
+    p->next           = hop[hidx];
+    hop[hidx]         = p;
 }
 
-static int get_op(PARROT_INTERP, const char * name, int full)
+static int get_op(PARROT_INTERP, const char *name, int full)
 {
-    const HOP * p;
+    const HOP   *p;
     const size_t hidx = hash_str(name) % OP_HASH_SIZE;
+
     if (!hop) {
         hop = mem_gc_allocate_n_zeroed_typed(interp, OP_HASH_SIZE,HOP *);
         hop_init(interp);
     }
+
     for (p = hop[hidx]; p; p = p->next) {
-        if(STREQ(name, full ? p->info->full_name : p->info->name))
+        if (STREQ(name, full ? p->info->full_name : p->info->name))
             return p->info - [[BS]]op_lib.op_info_table;
     }
+
     return -1;
 }
 
+
 static void hop_init(PARROT_INTERP)
 {
-    size_t i;
     op_info_t * const info = [[BS]]op_lib.op_info_table;
+
+    /* allocate the storage all in one chunk
+     * yes, this is profligate, but we can tighten it later */
+    HOP *hops = hop_buckets =
+        mem_gc_allocate_n_zeroed_typed(interp, [[BS]]op_lib.op_count * 2, HOP );
+
+    size_t i;
+
     /* store full names */
-    for (i = 0; i < [[BS]]op_lib.op_count; i++)
-        store_op(interp, info + i, 1);
-    /* plus one short name */
-    for (i = 0; i < [[BS]]op_lib.op_count; i++)
-        if (get_op(interp, info[i].name, 0) == -1)
-            store_op(interp, info + i, 0);
+    for (i = 0; i < [[BS]]op_lib.op_count; i++) {
+        store_op(interp, info + i, hops++, info[i].full_name);
+
+        /* plus one short name */
+        if (i && info[i - 1].name != info[i].name)
+            store_op(interp, info + i, hops++, info[i].name);
+    }
 }
 
 static void hop_deinit(PARROT_INTERP)
 {
-    if (hop) {
-        size_t i;
-        for (i = 0; i < OP_HASH_SIZE; i++) {
-            HOP *p = hop[i];
-            while (p) {
-                HOP * const next = p->next;
-                mem_gc_free(interp, p);
-                p = next;
-            }
-        }
+    if (hop)
         mem_sys_free(hop);
-        hop = NULL;
-    }
+    if (hop_buckets)
+        mem_gc_free(interp, hop_buckets);
+
+    hop         = NULL;
+    hop_buckets = NULL;
 }|;
 
     $fh.print(subst($res, /'[[' BS ']]'/, $emitter.bs, :global));

Modified: branches/gsoc_threads/config/gen/config_h/config_h.in
==============================================================================
--- branches/gsoc_threads/config/gen/config_h/config_h.in	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/config/gen/config_h/config_h.in	Fri Aug 13 00:07:10 2010	(r48443)
@@ -150,7 +150,7 @@
 #define PARROT_ at jitcpu@ 1
 
 /* Oplib and dynamic ops related. */
-#define PARROT_CORE_OPLIB_NAME "core"
+#define PARROT_CORE_OPLIB_NAME "core_ops"
 #define PARROT_CORE_OPLIB_INIT Parrot_DynOp_core_ at MAJOR@_ at MINOR@_ at PATCH@
 
 /* ICU. */

Modified: branches/gsoc_threads/include/parrot/call.h
==============================================================================
--- branches/gsoc_threads/include/parrot/call.h	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/include/parrot/call.h	Fri Aug 13 00:07:10 2010	(r48443)
@@ -302,12 +302,11 @@
     PARROT_ASSERT((sig)->vtable->base_type == enum_class_FixedIntegerArray); \
 } while (0)
 
-/* XXX Remove interp from this */
 #define ADD_OP_VAR_PART(interp, seg, pc, n) do { \
-    if (*(pc) == PARROT_OP_set_args_pc       \
-    ||  *(pc) == PARROT_OP_get_results_pc    \
-    ||  *(pc) == PARROT_OP_get_params_pc     \
-    ||  *(pc) == PARROT_OP_set_returns_pc) { \
+    if (OPCODE_IS((interp), (seg), *(pc), PARROT_OP_set_args_pc)       \
+    ||  OPCODE_IS((interp), (seg), *(pc), PARROT_OP_get_results_pc)    \
+    ||  OPCODE_IS((interp), (seg), *(pc), PARROT_OP_get_params_pc)     \
+    ||  OPCODE_IS((interp), (seg), *(pc), PARROT_OP_set_returns_pc)) { \
         PMC * const sig = (seg)->const_table->constants[(pc)[1]].u.key; \
         (n) += VTABLE_elements((interp), sig); \
     } \

Modified: branches/gsoc_threads/include/parrot/hash.h
==============================================================================
--- branches/gsoc_threads/include/parrot/hash.h	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/include/parrot/hash.h	Fri Aug 13 00:07:10 2010	(r48443)
@@ -62,9 +62,6 @@
     /* alloced - 1 */
     UINTVAL mask;
 
-    /* The owner PMC */
-    PMC *container;
-
     /* The type of key object this hash uses */
     Hash_key_type key_type;
 

Modified: branches/gsoc_threads/include/parrot/namespace.h
==============================================================================
--- branches/gsoc_threads/include/parrot/namespace.h	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/include/parrot/namespace.h	Fri Aug 13 00:07:10 2010	(r48443)
@@ -19,14 +19,6 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
-PMC * Parrot_find_global_s(PARROT_INTERP,
-    ARGIN_NULLOK(STRING *str_key),
-    ARGIN_NULLOK(STRING *globalname))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 PMC * Parrot_ns_find_current_namespace_global(PARROT_INTERP,
     ARGIN_NULLOK(STRING *globalname))
         __attribute__nonnull__(1);
@@ -138,15 +130,6 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-PARROT_EXPORT
-void Parrot_store_global_s(PARROT_INTERP,
-    ARGIN_NULLOK(STRING *str_key),
-    ARGIN_NULLOK(STRING *globalname),
-    ARGIN_NULLOK(PMC *val))
-        __attribute__nonnull__(1);
-
-#define ASSERT_ARGS_Parrot_find_global_s __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_ns_find_current_namespace_global \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
@@ -192,8 +175,6 @@
 #define ASSERT_ARGS_Parrot_ns_store_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(sub_pmc))
-#define ASSERT_ARGS_Parrot_store_global_s __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: src/namespace.c */
 

Modified: branches/gsoc_threads/include/parrot/op.h
==============================================================================
--- branches/gsoc_threads/include/parrot/op.h	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/include/parrot/op.h	Fri Aug 13 00:07:10 2010	(r48443)
@@ -67,16 +67,19 @@
 */
 
 typedef struct op_info_t {
-    const char    *name;
-    const char    *full_name;
-    const char    *func_name;
-    unsigned short jump;
-    short          op_count;                /* Includes opcode as one arg */
-    arg_type_t     types[PARROT_MAX_ARGS];  /* arg_type_t, 0 = 1st arg */
-    arg_dir_t      dirs[PARROT_MAX_ARGS];   /* arg_dir_t   0 = 1st arg */
-    char           labels[PARROT_MAX_ARGS]; /* 0/1         0 = 1st arg */
+    const char      *name;
+    const char      *full_name;
+    const char      *func_name;
+    unsigned short   jump;
+    short            op_count;                /* Includes opcode as one arg */
+    arg_type_t       types[PARROT_MAX_ARGS];  /* arg_type_t, 0 = 1st arg */
+    arg_dir_t        dirs[PARROT_MAX_ARGS];   /* arg_dir_t   0 = 1st arg */
+    char             labels[PARROT_MAX_ARGS]; /* 0/1         0 = 1st arg */
+    struct op_lib_t *lib;
 } op_info_t;
 
+#define OPCODE_IS(interp, seg, opnum, global_opnum) \
+    ((seg)->op_func_table[(opnum)] == (interp)->op_func_table[(global_opnum)])
 
 #endif /* PARROT_OP_H_GUARD */
 

Modified: branches/gsoc_threads/include/parrot/packfile.h
==============================================================================
--- branches/gsoc_threads/include/parrot/packfile.h	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/include/parrot/packfile.h	Fri Aug 13 00:07:10 2010	(r48443)
@@ -263,16 +263,32 @@
     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;
 
+typedef struct PackFile_ByteCode_OpMappingEntry {
+    op_lib_t *lib;       /* library for this entry */
+    opcode_t  n_ops;     /* number of ops used */
+    opcode_t *lib_ops;   /* indices of ops within the library */
+    opcode_t *table_ops; /* indices of ops within the op table */
+} PackFile_ByteCode_OpMappingEntry;
+
+typedef struct PackFile_ByteCode_OpMapping {
+    opcode_t                          n_libs; /* number of library entries */
+    PackFile_ByteCode_OpMappingEntry *libs;   /* opcode libraries used by this segment */
+} PackFile_ByteCode_OpMapping;
+
 struct PackFile_ByteCode {
-    PackFile_Segment       base;
-    struct PackFile_Debug *debugs;
-    PackFile_ConstTable   *const_table;
-    PackFile_FixupTable   *fixups;
-    struct PackFile_Annotations *annotations;
+    PackFile_Segment              base;
+    struct PackFile_Debug        *debugs;
+    PackFile_ConstTable          *const_table;
+    PackFile_FixupTable          *fixups;
+    struct PackFile_Annotations  *annotations;
+    PackFile_ByteCode_OpMapping   op_mapping;      /* opcode mapping information */
+    size_t                        op_count;        /* number of ops in the func table */
+    op_func_t                    *op_func_table;   /* opcode dispatch table */
+    op_func_t                    *save_func_table; /* for when we hijack op_func_table */
+    op_info_t                   **op_info_table;
 };
 
 typedef struct PackFile_DebugFilenameMapping {

Modified: branches/gsoc_threads/include/parrot/runcore_api.h
==============================================================================
--- branches/gsoc_threads/include/parrot/runcore_api.h	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/include/parrot/runcore_api.h	Fri Aug 13 00:07:10 2010	(r48443)
@@ -15,7 +15,7 @@
 #include "parrot/parrot.h"
 #include "parrot/op.h"
 
-#  define DO_OP(PC, INTERP) ((PC) = (((INTERP)->op_func_table)[*(PC)])((PC), (INTERP)))
+#  define DO_OP(PC, INTERP) ((PC) = (((INTERP)->code->op_func_table)[*(PC)])((PC), (INTERP)))
 
 typedef opcode_t * (*runcore_runops_fn_type) (PARROT_INTERP, ARGIN(Parrot_runcore_t *), ARGIN(opcode_t *pc));
 typedef       void (*runcore_destroy_fn_type)(PARROT_INTERP, ARGIN(Parrot_runcore_t *));

Modified: branches/gsoc_threads/runtime/parrot/library/HTTP/Message.pir
==============================================================================
--- branches/gsoc_threads/runtime/parrot/library/HTTP/Message.pir	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/runtime/parrot/library/HTTP/Message.pir	Fri Aug 13 00:07:10 2010	(r48443)
@@ -20,7 +20,6 @@
 
 .namespace ['HTTP';'Date']
 
-.loadlib 'io_ops' # XXX avoids segfaults for some reason (see TT #1663)
 .loadlib 'sys_ops'
 .include 'tm.pasm'
 

Modified: branches/gsoc_threads/runtime/parrot/library/distutils.pir
==============================================================================
--- branches/gsoc_threads/runtime/parrot/library/distutils.pir	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/runtime/parrot/library/distutils.pir	Fri Aug 13 00:07:10 2010	(r48443)
@@ -201,7 +201,6 @@
 
 =cut
 
-.loadlib 'io_ops' # workaround TT #1663
 .loadlib 'sys_ops'
 
 .sub '__onload' :load :init :anon

Modified: branches/gsoc_threads/src/call/args.c
==============================================================================
--- branches/gsoc_threads/src/call/args.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/call/args.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -563,9 +563,9 @@
         ARGMOD(va_list *args))
 {
     ASSERT_ARGS(Parrot_pcc_build_call_from_varargs)
-    PMC         * arg_flags         = PMCNULL;
-    PMC         * call_object;
-    INTVAL       i                  = 0;
+    PMC         *call_object;
+    PMC         *arg_flags    = PMCNULL;
+    INTVAL       i            = 0;
 
     if (PMC_IS_NULL(signature))
         call_object = Parrot_pmc_new(interp, enum_class_CallContext);
@@ -1364,14 +1364,34 @@
         ARGMOD(PMC **arg_flags))
 {
     ASSERT_ARGS(parse_signature_string)
-    PMC *current_array;
+    PMC        *current_array;
     const char *x;
-    INTVAL flags = 0;
-    INTVAL set = 0;
+    INTVAL      flags = 0;
+    INTVAL      set   = 0;
+    INTVAL      count = 0;
+
+    for (x = signature; *x; ++x) {
+        if (*x == '-')
+            break;
+        switch (*x) {
+            case 'I': count++; break;
+            case 'N': count++; break;
+            case 'S': count++; break;
+            case 'P': count++; break;
+            default: break;
+        }
+    }
 
     if (PMC_IS_NULL(*arg_flags))
-        *arg_flags = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
-    current_array = *arg_flags;
+        current_array = *arg_flags
+                      = Parrot_pmc_new_init_int(interp,
+                            enum_class_ResizableIntegerArray, count);
+    else {
+        current_array = *arg_flags;
+        VTABLE_set_integer_native(interp, current_array, count);
+    }
+
+    count = 0;
 
     for (x = signature; *x != '\0'; ++x) {
 
@@ -1384,7 +1404,7 @@
             /* Starting a new argument, so store the previous argument,
              * if there was one. */
             if (set) {
-                VTABLE_push_integer(interp, current_array, flags);
+                VTABLE_set_integer_keyed_int(interp, current_array, count++, flags);
                 set = 0;
             }
 
@@ -1421,7 +1441,7 @@
 
     /* Store the final argument, if there was one. */
     if (set)
-        VTABLE_push_integer(interp, current_array, flags);
+        VTABLE_set_integer_keyed_int(interp, current_array, count, flags);
 }
 
 /*

Modified: branches/gsoc_threads/src/debug.c
==============================================================================
--- branches/gsoc_threads/src/debug.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/debug.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -2452,13 +2452,15 @@
        one fixed parameter (the signature vector), plus a varying number of
        registers/constants.  For each arg/return, we show the register and its
        flags using PIR syntax. */
-    if (*(op) == PARROT_OP_set_args_pc || *(op) == PARROT_OP_set_returns_pc)
+    if (OPCODE_IS(interp, interp->code, *(op), PARROT_OP_set_args_pc)
+    ||  OPCODE_IS(interp, interp->code, *(op), PARROT_OP_set_returns_pc))
         specialop = 1;
 
     /* if it's a retrieving op, specialop = 2, so that later a :flat flag
      * can be changed into a :slurpy flag. See flag handling below.
      */
-    if (*(op) == PARROT_OP_get_results_pc || *(op) == PARROT_OP_get_params_pc)
+    if (OPCODE_IS(interp, interp->code, *(op), PARROT_OP_get_results_pc)
+    ||  OPCODE_IS(interp, interp->code, *(op), PARROT_OP_get_params_pc))
         specialop = 2;
 
     if (specialop > 0) {
@@ -2593,14 +2595,14 @@
         }
 
         size = PDB_disassemble_op(interp, pfile->source + pfile->size,
-                space, &interp->op_info_table[*pc], pc, pfile, NULL, 1);
+                space, interp->code->op_info_table[*pc], pc, pfile, NULL, 1);
         space       -= size;
         pfile->size += size;
         pfile->source[pfile->size - 1] = '\n';
 
         /* Store the opcode of this line */
         pline->opcode = pc;
-        n             = interp->op_info_table[*pc].op_count;
+        n             = interp->code->op_info_table[*pc]->op_count;
 
         ADD_OP_VAR_PART(interp, interp->code, pc, n);
         pc += n;
@@ -2797,7 +2799,8 @@
     pfile->line   = pline;
     pline->number = 1;
 
-    PARROT_ASSERT(interp->op_info_table);
+    PARROT_ASSERT(interp->code);
+    PARROT_ASSERT(interp->code->op_info_table);
     PARROT_ASSERT(pc);
 
     while ((c = fgetc(file)) != EOF) {
@@ -2817,7 +2820,7 @@
             PDB_line_t *newline = mem_gc_allocate_zeroed_typed(interp, PDB_line_t);
 
             if (PDB_hasinstruction(pfile->source + pline->source_offset)) {
-                size_t n      = interp->op_info_table[*pc].op_count;
+                size_t n      = interp->code->op_info_table[*pc]->op_count;
                 pline->opcode = pc;
                 ADD_OP_VAR_PART(interp, interp->code, pc, n);
                 pc           += n;

Modified: branches/gsoc_threads/src/dynpmc/dynlexpad.pmc
==============================================================================
--- branches/gsoc_threads/src/dynpmc/dynlexpad.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/dynpmc/dynlexpad.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2005-2008, Parrot Foundation.
+Copyright (C) 2005-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -52,7 +52,6 @@
 
         hash             = parrot_new_hash(INTERP);
         attrs->hash      = hash;
-        hash->container  = SELF;
         PObj_custom_mark_destroy_SETALL(SELF);
     }
 
@@ -166,6 +165,17 @@
     VTABLE void set_pmc_keyed_str(STRING* name, PMC* value) {
         PMC *std_pad = PARROT_DYNLEXPAD(SELF)->init;
 
+        if (PObj_constant_TEST(SELF)) {
+            if (!PObj_constant_TEST((PObj *)name))
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "Used non-constant STRING key in constant hash.");
+            if (!PObj_constant_TEST((PObj *)value))
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "Used non-constant PMC value in constant hash.");
+        }
+
         if (std_pad && VTABLE_exists_keyed_str(INTERP, std_pad, name))
             VTABLE_set_pmc_keyed_str(INTERP, std_pad, name, value);
 

Modified: branches/gsoc_threads/src/dynpmc/rational.pmc
==============================================================================
--- branches/gsoc_threads/src/dynpmc/rational.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/dynpmc/rational.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -46,7 +46,7 @@
 
 /*
 
-=item * static STRING *rat_get_string_to_base(PARROT_INTERP, PMC *self, int base)
+=item C<static STRING *rat_get_string_to_base(PARROT_INTERP, PMC *self, int base)>
 
 Returns a string representation of a Rational-PMC to a certain base.
 
@@ -66,7 +66,7 @@
 
 /*
 
-=item * static void rat_add_integer(PARROT_INTERP, PMC *self, int value)
+=item C<static void rat_add_integer(PARROT_INTERP, PMC *self, int value)>
 
 Adds an integer "value" to a Rational-PMC inplace.
 
@@ -87,7 +87,7 @@
 
 /*
 
-=item * static void rat_add_float(PARROT_INTERP, PMC *self, double value)
+=item C<static void rat_add_float(PARROT_INTERP, PMC *self, double value)>
 
 Adds a float "value" to a Rational-PMC in-place. "value" is first conveted to a
 rational using GMPs mpq_set_d-function. This is meant to be exact.
@@ -110,7 +110,7 @@
 
 /*
 
-=item * static void rat_multiply_integer(PARROT_INTERP, PMC *self, int value)
+=item C<static void rat_multiply_integer(PARROT_INTERP, PMC *self, int value)>
 
 Multiplys a Rational-PMC with an integer "value" in-place.
 
@@ -127,7 +127,7 @@
 
 /*
 
-=item * static void rat_multiply_float(PARROT_INTERP, PMC *self, double value)
+=item C<static void rat_multiply_float(PARROT_INTERP, PMC *self, double value)>
 
 Multiplies a Rational-PMC with a float "value" in-place.
 
@@ -149,7 +149,7 @@
 
 /*
 
-=item * static void rat_divide_integer(PARROT_INTERP, PMC *self, int value)
+=item C<static void rat_divide_integer(PARROT_INTERP, PMC *self, int value)>
 
 Divides a Rational-PMC through an integer "value" in-place.
 
@@ -171,7 +171,7 @@
 
 /*
 
-=item * static void rat_divide_float(PARROT_INTERP, PMC *self, double value)
+=item C<static void rat_divide_float(PARROT_INTERP, PMC *self, double value)>
 
 Divides a Rational-PMC through a float "value" in-place.
 

Modified: branches/gsoc_threads/src/embed.c
==============================================================================
--- branches/gsoc_threads/src/embed.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/embed.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -1086,16 +1086,23 @@
 {
     ASSERT_ARGS(Parrot_run_native)
     PackFile * const pf = PackFile_new(interp, 0);
-    static opcode_t program_code[2];
+    static opcode_t program_code[2] = {
+        0, /* enternative */
+        1  /* end */
+    };
+
+    static op_func_t op_func_table[2];
+    op_func_table[0] = interp->op_func_table[ interp->op_lib->op_code(interp, "enternative", 0) ];
+    op_func_table[1] = interp->op_func_table[ interp->op_lib->op_code(interp, "end", 0) ];
 
-    program_code[0] = interp->op_lib->op_code(interp, "enternative", 0);
-    program_code[1] = 0; /* end */
 
     pf->cur_cs = (PackFile_ByteCode *)
         (pf->PackFuncs[PF_BYTEC_SEG].new_seg)(interp, pf,
                 Parrot_str_new_constant(interp, "code"), 1);
-    pf->cur_cs->base.data = program_code;
-    pf->cur_cs->base.size = 2;
+    pf->cur_cs->base.data     = program_code;
+    pf->cur_cs->base.size     = 2;
+    pf->cur_cs->op_func_table = op_func_table;
+    /* TODO fill out cur_cs with op_mapping */
 
     Parrot_pbc_load(interp, pf);
 

Modified: branches/gsoc_threads/src/gc/gc_ms.c
==============================================================================
--- branches/gsoc_threads/src/gc/gc_ms.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/gc/gc_ms.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -831,7 +831,6 @@
     ASSERT_ARGS(Parrot_gc_get_attributes_from_pool)
     PMC_Attribute_Free_List *item;
 
-#if GC_USE_LAZY_ALLOCATOR
     if (pool->free_list) {
         item            = pool->free_list;
         pool->free_list = item->next;
@@ -847,12 +846,6 @@
         Parrot_gc_allocate_new_attributes_arena(pool);
         return Parrot_gc_get_attributes_from_pool(interp, pool);
     }
-#else
-    if (pool->free_list == NULL)
-        Parrot_gc_allocate_new_attributes_arena(pool);
-    item            = pool->free_list;
-    pool->free_list = item->next;
-#endif
 
     --pool->num_free_objects;
     return (void *)item;
@@ -878,18 +871,8 @@
     pool->top_arena = new_arena;
     next            = (PMC_Attribute_Free_List *)(new_arena + 1);
 
-#if GC_USE_LAZY_ALLOCATOR
     pool->newfree   = next;
     pool->newlast   = (PMC_Attribute_Free_List *)((char *)next + item_space);
-#else
-    pool->free_list = next;
-    for (i = 0; i < num_items; ++i) {
-        list        = next;
-        list->next  = (PMC_Attribute_Free_List *)((char *)list + item_size);
-        next        = list->next;
-    }
-    list->next      = pool->free_list;
-#endif
 
     pool->num_free_objects += num_items;
     pool->total_objects    += num_items;
@@ -987,18 +970,12 @@
 {
     ASSERT_ARGS(gc_ms_allocate_pmc_attributes)
     const size_t attr_size = pmc->vtable->attr_size;
-#if GC_USE_FIXED_SIZE_ALLOCATOR
     PMC_Attribute_Pool * const pool = Parrot_gc_get_attribute_pool(interp,
             interp->mem_pools, attr_size);
     void * const attrs = Parrot_gc_get_attributes_from_pool(interp, pool);
     memset(attrs, 0, attr_size);
     PMC_data(pmc) = attrs;
     return attrs;
-#else
-    void * const data =  gc_ms_allocate_memory_chunk(attr_size);
-    PMC_data(pmc) = data;
-    return data;
-#endif
 }
 
 /*
@@ -1017,17 +994,11 @@
     void * const data = PMC_data(pmc);
 
     if (data) {
-
-#if GC_USE_FIXED_SIZE_ALLOCATOR
         const size_t attr_size = pmc->vtable->attr_size;
         const size_t item_size = attr_size < sizeof (void *) ? sizeof (void *) : attr_size;
         PMC_Attribute_Pool ** const pools = interp->mem_pools->attrib_pools;
         const size_t idx = item_size - sizeof (void *);
         gc_ms_free_attributes_from_pool(pools[idx], data);
-#else
-        gc_ms_free_memory_chunk(intepr, PMC_data(pmc));
-        PMC_data(pmc) = NULL;
-#endif
     }
 }
 
@@ -1534,14 +1505,9 @@
 
     /* requires that num_free_objects be updated in Parrot_gc_mark_and_sweep.
        If gc is disabled, then we must check the free list directly. */
-#if GC_USE_LAZY_ALLOCATOR
     if ((!pool->free_list || pool->num_free_objects < pool->replenish_level)
         && !pool->newfree)
         (*pool->alloc_objects) (interp, interp->mem_pools, pool);
-#else
-    if (!pool->free_list || pool->num_free_objects < pool->replenish_level)
-    (*pool->alloc_objects) (interp, interp->mem_pools, pool);
-#endif
 }
 
 /*
@@ -1596,8 +1562,6 @@
     PObj *ptr;
     PObj *free_list = (PObj *)pool->free_list;
 
-#if GC_USE_LAZY_ALLOCATOR
-
   HAVE_FREE:
     if (free_list) {
         ptr             = free_list;
@@ -1619,16 +1583,6 @@
         free_list = (PObj *)pool->free_list;
         goto HAVE_FREE;
     }
-#else
-    /* if we don't have any objects */
-    if (!free_list) {
-        (*pool->more_objects)(interp, mem_pools, pool);
-        free_list = (PObj *)pool->free_list;
-    }
-
-    ptr             = free_list;
-    pool->free_list = ((GC_MS_PObj_Wrapper*)ptr)->next_ptr;
-#endif
 
     --pool->num_free_objects;
 

Modified: branches/gsoc_threads/src/gc/gc_private.h
==============================================================================
--- branches/gsoc_threads/src/gc/gc_private.h	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/gc/gc_private.h	Fri Aug 13 00:07:10 2010	(r48443)
@@ -60,12 +60,6 @@
 #define GC_ATTRIB_POOLS_HEADROOM 8
 #define GC_FIXED_SIZE_POOL_SIZE 4096
 
-/* Use the lazy allocator. Since it amortizes arena allocation costs, turn
-   this on at the same time that you increase the size of allocated arenas.
-   increase *_HEADERS_PER_ALLOC and GC_FIXED_SIZE_POOL_SIZE to be large
-   enough to satisfy most startup costs. */
-#define GC_USE_LAZY_ALLOCATOR 1
-
 /* Set to 1 if we want to use the fixed-size allocator. Set to 0 if we want
    to allocate these things using mem_sys_allocate instead */
 #define GC_USE_FIXED_SIZE_ALLOCATOR 1
@@ -209,12 +203,10 @@
     size_t total_objects;
     size_t objects_per_alloc;
     size_t num_free_objects;
-    PMC_Attribute_Free_List * free_list;
-    PMC_Attribute_Arena     * top_arena;
-#if GC_USE_LAZY_ALLOCATOR
-    PMC_Attribute_Free_List * newfree;
-    PMC_Attribute_Free_List * newlast;
-#endif
+    PMC_Attribute_Arena     *top_arena;
+    PMC_Attribute_Free_List *free_list;
+    PMC_Attribute_Free_List *newfree;
+    PMC_Attribute_Free_List *newlast;
 } PMC_Attribute_Pool;
 
 /* Tracked resource pool */
@@ -255,11 +247,8 @@
     } gc_private;
     */
 
-#if GC_USE_LAZY_ALLOCATOR
     void *newfree;
     void *newlast;
-#endif
-
 } Fixed_Size_Pool;
 
 typedef struct Memory_Pools {

Modified: branches/gsoc_threads/src/gc/mark_sweep.c
==============================================================================
--- branches/gsoc_threads/src/gc/mark_sweep.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/gc/mark_sweep.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -426,7 +426,6 @@
 
     pool->total_objects += num_objects;
     object = (void *)arena->start_objects;
-#if GC_USE_LAZY_ALLOCATOR
     /* Don't move anything onto the free list. Set the pointers and do it
        lazily when we allocate. */
     {
@@ -435,14 +434,7 @@
         pool->newlast = (void*)((char*)object + total_size);
         arena->used = 0;
     }
-#else
-    /* Move all the new objects into the free list */
-    arena->used          = num_objects;
-    for (i = 0; i < num_objects; ++i) {
-        pool->add_free_object(interp, pool, object);
-        object = (void *)((char *)object + pool->object_size);
-    }
-#endif
+
     pool->num_free_objects += num_objects;
 }
 
@@ -610,12 +602,10 @@
     pool->last_Arena        = NULL;
     pool->free_list         = NULL;
     pool->mem_pool          = NULL;
-    pool->object_size       = object_size;
-    pool->objects_per_alloc = objects_per_alloc;
-#if GC_USE_LAZY_ALLOCATOR
     pool->newfree           = NULL;
     pool->newlast           = NULL;
-#endif
+    pool->object_size       = object_size;
+    pool->objects_per_alloc = objects_per_alloc;
 
     return pool;
 }

Modified: branches/gsoc_threads/src/hash.c
==============================================================================
--- branches/gsoc_threads/src/hash.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/hash.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -179,9 +179,13 @@
 {
     ASSERT_ARGS(get_hash_val)
     if (hash->hash_val == (hash_hash_key_fn)key_hash_STRING) {
-        const STRING * const s = (const STRING *)key;
+        /* Must be non-const because str_to_hashval caches the result
+         * in the STRING struct */
+        DECL_CONST_CAST;
+        STRING * const s = (STRING *)PARROT_const_cast(void *, key);
         if (s->hashval)
             return s->hashval;
+        return Parrot_str_to_hashval(interp, s);
     }
 
     return (hash->hash_val)(interp, key, hash->seed);
@@ -508,23 +512,20 @@
 parrot_mark_hash_keys(PARROT_INTERP, ARGIN(Hash *hash))
 {
     ASSERT_ARGS(parrot_mark_hash_keys)
-    UINTVAL entries = hash->entries;
-    UINTVAL found   = 0;
-    INTVAL  i;
+    const UINTVAL entries = hash->entries;
+    UINTVAL found = 0;
+    UINTVAL i;
 
-    for (i = hash->mask; i >= 0; --i) {
-        HashBucket *bucket = hash->bucket_indices[i];
+    HashBucket *bucket = hash->buckets;
 
-        while (bucket) {
-            if (++found > entries)
-                Parrot_ex_throw_from_c_args(interp, NULL, 1,
-                    "Detected hash corruption at hash %p entries %d",
-                    hash, (int)entries);
+    for (i= 0; i <= hash->mask; ++i, ++bucket) {
+        if (bucket->key){
 
             PARROT_ASSERT(bucket->key);
             Parrot_gc_mark_PObj_alive(interp, (PObj *)bucket->key);
 
-            bucket = bucket->next;
+            if (++found >= entries)
+                break;
         }
     }
 }
@@ -545,22 +546,19 @@
 {
     ASSERT_ARGS(parrot_mark_hash_values)
     const UINTVAL entries = hash->entries;
-    UINTVAL found   = 0;
-    INTVAL  i;
+    UINTVAL found = 0;
+    UINTVAL i;
 
-    for (i = hash->mask; i >= 0; --i) {
-        HashBucket *bucket = hash->bucket_indices[i];
+    HashBucket *bucket = hash->buckets;
 
-        while (bucket) {
-            if (++found > entries)
-                Parrot_ex_throw_from_c_args(interp, NULL, 1,
-                        "Detected hash corruption at hash %p entries %d",
-                        hash, (int)entries);
+    for (i= 0; i <= hash->mask; ++i, ++bucket) {
+        if (bucket->key){
 
             PARROT_ASSERT(bucket->value);
             Parrot_gc_mark_PObj_alive(interp, (PObj *)bucket->value);
 
-            bucket = bucket->next;
+            if (++found >= entries)
+                break;
         }
     }
 }
@@ -580,30 +578,25 @@
 {
     ASSERT_ARGS(parrot_mark_hash_both)
     const UINTVAL entries = hash->entries;
-    UINTVAL found   = 0;
-    INTVAL  i;
-
-    for (i = hash->mask; i >= 0; --i) {
-        HashBucket *bucket = hash->bucket_indices[i];
+    UINTVAL found = 0;
+    UINTVAL i;
 
-        while (bucket) {
-            if (++found > entries)
-                Parrot_ex_throw_from_c_args(interp, NULL, 1,
-                        "Detected hash corruption at hash %p entries %d",
-                        hash, (int)entries);
+    HashBucket *bucket = hash->buckets;
 
+    for (i= 0; i <= hash->mask; ++i, ++bucket) {
+        if (bucket->key){
             PARROT_ASSERT(bucket->key);
             Parrot_gc_mark_PObj_alive(interp, (PObj *)bucket->key);
 
             PARROT_ASSERT(bucket->value);
             Parrot_gc_mark_PObj_alive(interp, (PObj *)bucket->value);
 
-            bucket = bucket->next;
+            if (++found >= entries)
+                break;
         }
     }
 }
 
-
 /*
 
 =item C<static void hash_thaw(PARROT_INTERP, Hash *hash, PMC *info)>
@@ -1038,8 +1031,6 @@
 Hash_key_type hkey_type, hash_comp_fn compare, hash_hash_key_fn keyhash)>
 
 Creates and initializes a hash.  Function pointers determine its behaviors.
-The container passed in is the address of the hash PMC that is using it.  The
-hash and the PMC point to each other.
 
 Memory from this function must be freed.
 
@@ -1070,7 +1061,6 @@
     hash->seed       = interp->hash_seed;
     hash->mask       = INITIAL_BUCKETS - 1;
     hash->entries    = 0;
-    hash->container  = PMCNULL;
 
     bp = (HashBucket *)((char *)alloc + sizeof (Hash));
     hash->free_list = NULL;
@@ -1378,21 +1368,6 @@
     HashBucket   *bucket  = hash->bucket_indices[hashval & hash->mask];
     const hash_comp_fn compare = hash->compare;
 
-    /* When the hash is constant, check that the key and value are also
-     * constant. */
-    if (!PMC_IS_NULL(hash->container)
-    &&   PObj_constant_TEST(hash->container)) {
-        if (hash->key_type == Hash_key_type_STRING
-        && !PObj_constant_TEST((PObj *)key))
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
-                "Used non-constant key in constant hash.");
-            if (((hash->entry_type == enum_type_PMC)
-            ||   (hash->entry_type == enum_type_STRING))
-            &&   !PObj_constant_TEST((PObj *)value))
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
-                "Used non-constant value in constant hash.");
-    }
-
     /* See if we have an existing value for this key */
     while (bucket) {
         /* store hash_val or not */

Modified: branches/gsoc_threads/src/namespace.c
==============================================================================
--- branches/gsoc_threads/src/namespace.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/namespace.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -607,35 +607,6 @@
 
 /*
 
-=item C<PMC * Parrot_find_global_s(PARROT_INTERP, STRING *str_key, STRING
-*globalname)>
-
-Search the namespace designated by C<str_key>, or the HLL root if
-C<str_key> is NULL, for an object with name C<globalname>.  Return the
-object, or NULL if not found.
-
-TT #1222 - For now this function prefers non-namespaces, it will eventually
-entirely use the untyped interface.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_find_global_s(PARROT_INTERP, ARGIN_NULLOK(STRING *str_key),
-        ARGIN_NULLOK(STRING *globalname))
-{
-    ASSERT_ARGS(Parrot_find_global_s)
-    PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PMC * const ns = Parrot_ns_get_namespace_keyed_str(interp, hll_ns, str_key);
-    return Parrot_ns_find_namespace_global(interp, ns, globalname);
-}
-
-/*
-
 =item C<void Parrot_ns_store_global(PARROT_INTERP, PMC *ns, STRING *globalname,
 PMC *val)>
 
@@ -661,33 +632,6 @@
 
 /*
 
-=item C<void Parrot_store_global_s(PARROT_INTERP, STRING *str_key, STRING
-*globalname, PMC *val)>
-
-Store the PMC C<val> into the namespace designated by C<str_key>, or
-the HLL root if C<str_key> is NULL, with the name C<globalname>.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_store_global_s(PARROT_INTERP, ARGIN_NULLOK(STRING *str_key),
-        ARGIN_NULLOK(STRING *globalname), ARGIN_NULLOK(PMC *val))
-{
-    ASSERT_ARGS(Parrot_store_global_s)
-    PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PMC * const ns = Parrot_ns_make_namespace_keyed_str(interp, hll_ns, str_key);
-    Parrot_ns_store_global(interp, ns, globalname, val);
-
-    /* TT #1225 - method cache invalidation should be a namespace function */
-    Parrot_invalidate_method_cache(interp, str_key);
-}
-
-
-/*
-
 =item C<PMC * Parrot_ns_find_global_from_op(PARROT_INTERP, PMC *ns, STRING
 *globalname, void *next)>
 

Modified: branches/gsoc_threads/src/ops/core_ops.c
==============================================================================
--- branches/gsoc_threads/src/ops/core_ops.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/ops/core_ops.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -28,6 +28,9 @@
 static int get_op(PARROT_INTERP, const char * name, int full);
 
 
+/* XXX should be static, but C++ doesn't want to play ball */
+extern op_lib_t core_op_lib;
+
 
 
 #include "parrot/dynext.h"
@@ -1183,7 +1186,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 1 */
     /* type PARROT_INLINE_OP, */
@@ -1195,7 +1199,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 2 */
     /* type PARROT_INLINE_OP, */
@@ -1207,7 +1212,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 3 */
     /* type PARROT_INLINE_OP, */
@@ -1219,7 +1225,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 4 */
     /* type PARROT_INLINE_OP, */
@@ -1231,7 +1238,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 5 */
     /* type PARROT_INLINE_OP, */
@@ -1243,7 +1251,8 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 6 */
     /* type PARROT_INLINE_OP, */
@@ -1255,7 +1264,8 @@
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 7 */
     /* type PARROT_INLINE_OP, */
@@ -1267,7 +1277,8 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 8 */
     /* type PARROT_INLINE_OP, */
@@ -1279,7 +1290,8 @@
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 9 */
     /* type PARROT_INLINE_OP, */
@@ -1291,7 +1303,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 1 }
+    { 1 },
+    &core_op_lib
   },
   { /* 10 */
     /* type PARROT_INLINE_OP, */
@@ -1303,7 +1316,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 1 }
+    { 1 },
+    &core_op_lib
   },
   { /* 11 */
     /* type PARROT_INLINE_OP, */
@@ -1315,7 +1329,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 12 */
     /* type PARROT_INLINE_OP, */
@@ -1327,7 +1342,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 13 */
     /* type PARROT_INLINE_OP, */
@@ -1339,7 +1355,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 14 */
     /* type PARROT_INLINE_OP, */
@@ -1351,7 +1368,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 1 }
+    { 1 },
+    &core_op_lib
   },
   { /* 15 */
     /* type PARROT_INLINE_OP, */
@@ -1363,7 +1381,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 1 }
+    { 1 },
+    &core_op_lib
   },
   { /* 16 */
     /* type PARROT_FUNCTION_OP, */
@@ -1375,7 +1394,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 17 */
     /* type PARROT_INLINE_OP, */
@@ -1387,7 +1407,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 18 */
     /* type PARROT_INLINE_OP, */
@@ -1399,7 +1420,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 19 */
     /* type PARROT_FUNCTION_OP, */
@@ -1411,7 +1433,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 20 */
     /* type PARROT_FUNCTION_OP, */
@@ -1423,7 +1446,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 21 */
     /* type PARROT_INLINE_OP, */
@@ -1435,7 +1459,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 22 */
     /* type PARROT_INLINE_OP, */
@@ -1447,7 +1472,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 23 */
     /* type PARROT_FUNCTION_OP, */
@@ -1459,7 +1485,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 24 */
     /* type PARROT_FUNCTION_OP, */
@@ -1471,7 +1498,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 25 */
     /* type PARROT_INLINE_OP, */
@@ -1483,7 +1511,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 26 */
     /* type PARROT_INLINE_OP, */
@@ -1495,7 +1524,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 27 */
     /* type PARROT_INLINE_OP, */
@@ -1507,7 +1537,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 28 */
     /* type PARROT_INLINE_OP, */
@@ -1519,7 +1550,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 29 */
     /* type PARROT_INLINE_OP, */
@@ -1531,7 +1563,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 30 */
     /* type PARROT_INLINE_OP, */
@@ -1543,7 +1576,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 31 */
     /* type PARROT_INLINE_OP, */
@@ -1555,7 +1589,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 32 */
     /* type PARROT_FUNCTION_OP, */
@@ -1567,7 +1602,8 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 33 */
     /* type PARROT_FUNCTION_OP, */
@@ -1579,7 +1615,8 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 34 */
     /* type PARROT_FUNCTION_OP, */
@@ -1591,7 +1628,8 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 35 */
     /* type PARROT_FUNCTION_OP, */
@@ -1603,7 +1641,8 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 36 */
     /* type PARROT_INLINE_OP, */
@@ -1615,7 +1654,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 37 */
     /* type PARROT_INLINE_OP, */
@@ -1627,7 +1667,8 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 38 */
     /* type PARROT_INLINE_OP, */
@@ -1639,7 +1680,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 39 */
     /* type PARROT_INLINE_OP, */
@@ -1651,7 +1693,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 40 */
     /* type PARROT_INLINE_OP, */
@@ -1663,7 +1706,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 41 */
     /* type PARROT_INLINE_OP, */
@@ -1675,7 +1719,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 42 */
     /* type PARROT_INLINE_OP, */
@@ -1687,7 +1732,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 43 */
     /* type PARROT_INLINE_OP, */
@@ -1699,7 +1745,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 44 */
     /* type PARROT_INLINE_OP, */
@@ -1711,7 +1758,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 45 */
     /* type PARROT_INLINE_OP, */
@@ -1723,7 +1771,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 1 }
+    { 1 },
+    &core_op_lib
   },
   { /* 46 */
     /* type PARROT_INLINE_OP, */
@@ -1735,7 +1784,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 47 */
     /* type PARROT_INLINE_OP, */
@@ -1747,7 +1797,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 48 */
     /* type PARROT_INLINE_OP, */
@@ -1759,7 +1810,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 49 */
     /* type PARROT_INLINE_OP, */
@@ -1771,7 +1823,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 50 */
     /* type PARROT_INLINE_OP, */
@@ -1783,7 +1836,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 51 */
     /* type PARROT_INLINE_OP, */
@@ -1795,7 +1849,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 52 */
     /* type PARROT_INLINE_OP, */
@@ -1807,7 +1862,8 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 53 */
     /* type PARROT_INLINE_OP, */
@@ -1819,7 +1875,8 @@
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 54 */
     /* type PARROT_INLINE_OP, */
@@ -1831,7 +1888,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 55 */
     /* type PARROT_INLINE_OP, */
@@ -1843,7 +1901,8 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 56 */
     /* type PARROT_INLINE_OP, */
@@ -1855,7 +1914,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 57 */
     /* type PARROT_INLINE_OP, */
@@ -1867,7 +1927,8 @@
     3,
     { PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 58 */
     /* type PARROT_INLINE_OP, */
@@ -1879,7 +1940,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 59 */
     /* type PARROT_INLINE_OP, */
@@ -1891,7 +1953,8 @@
     3,
     { PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 60 */
     /* type PARROT_INLINE_OP, */
@@ -1903,7 +1966,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 61 */
     /* type PARROT_INLINE_OP, */
@@ -1915,7 +1979,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 62 */
     /* type PARROT_INLINE_OP, */
@@ -1927,7 +1992,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 63 */
     /* type PARROT_INLINE_OP, */
@@ -1939,7 +2005,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 64 */
     /* type PARROT_INLINE_OP, */
@@ -1951,7 +2018,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 65 */
     /* type PARROT_INLINE_OP, */
@@ -1963,7 +2031,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 66 */
     /* type PARROT_INLINE_OP, */
@@ -1975,7 +2044,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 67 */
     /* type PARROT_INLINE_OP, */
@@ -1987,7 +2057,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 68 */
     /* type PARROT_INLINE_OP, */
@@ -1999,7 +2070,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 69 */
     /* type PARROT_INLINE_OP, */
@@ -2011,7 +2083,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 70 */
     /* type PARROT_INLINE_OP, */
@@ -2023,7 +2096,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 71 */
     /* type PARROT_INLINE_OP, */
@@ -2035,7 +2109,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 72 */
     /* type PARROT_FUNCTION_OP, */
@@ -2047,7 +2122,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 73 */
     /* type PARROT_FUNCTION_OP, */
@@ -2059,7 +2135,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 74 */
     /* type PARROT_FUNCTION_OP, */
@@ -2071,7 +2148,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 75 */
     /* type PARROT_FUNCTION_OP, */
@@ -2083,7 +2161,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 76 */
     /* type PARROT_FUNCTION_OP, */
@@ -2095,7 +2174,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 77 */
     /* type PARROT_FUNCTION_OP, */
@@ -2107,7 +2187,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 78 */
     /* type PARROT_INLINE_OP, */
@@ -2119,7 +2200,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 79 */
     /* type PARROT_INLINE_OP, */
@@ -2131,7 +2213,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 80 */
     /* type PARROT_INLINE_OP, */
@@ -2143,7 +2226,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 81 */
     /* type PARROT_INLINE_OP, */
@@ -2155,7 +2239,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 82 */
     /* type PARROT_INLINE_OP, */
@@ -2167,7 +2252,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 83 */
     /* type PARROT_INLINE_OP, */
@@ -2179,7 +2265,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 84 */
     /* type PARROT_INLINE_OP, */
@@ -2191,7 +2278,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 85 */
     /* type PARROT_INLINE_OP, */
@@ -2203,7 +2291,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 86 */
     /* type PARROT_FUNCTION_OP, */
@@ -2215,7 +2304,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 87 */
     /* type PARROT_FUNCTION_OP, */
@@ -2227,7 +2317,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 88 */
     /* type PARROT_FUNCTION_OP, */
@@ -2239,7 +2330,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 89 */
     /* type PARROT_FUNCTION_OP, */
@@ -2251,7 +2343,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 90 */
     /* type PARROT_FUNCTION_OP, */
@@ -2263,7 +2356,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 91 */
     /* type PARROT_FUNCTION_OP, */
@@ -2275,7 +2369,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 92 */
     /* type PARROT_FUNCTION_OP, */
@@ -2287,7 +2382,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 93 */
     /* type PARROT_FUNCTION_OP, */
@@ -2299,7 +2395,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 94 */
     /* type PARROT_FUNCTION_OP, */
@@ -2311,7 +2408,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 95 */
     /* type PARROT_FUNCTION_OP, */
@@ -2323,7 +2421,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 96 */
     /* type PARROT_INLINE_OP, */
@@ -2335,7 +2434,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 97 */
     /* type PARROT_INLINE_OP, */
@@ -2347,7 +2447,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 98 */
     /* type PARROT_INLINE_OP, */
@@ -2359,7 +2460,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 99 */
     /* type PARROT_INLINE_OP, */
@@ -2371,7 +2473,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 100 */
     /* type PARROT_INLINE_OP, */
@@ -2383,7 +2486,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 101 */
     /* type PARROT_INLINE_OP, */
@@ -2395,7 +2499,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 102 */
     /* type PARROT_FUNCTION_OP, */
@@ -2407,7 +2512,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 103 */
     /* type PARROT_FUNCTION_OP, */
@@ -2419,7 +2525,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 104 */
     /* type PARROT_FUNCTION_OP, */
@@ -2431,7 +2538,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 105 */
     /* type PARROT_FUNCTION_OP, */
@@ -2443,7 +2551,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 106 */
     /* type PARROT_FUNCTION_OP, */
@@ -2455,7 +2564,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 107 */
     /* type PARROT_FUNCTION_OP, */
@@ -2467,7 +2577,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 108 */
     /* type PARROT_INLINE_OP, */
@@ -2479,7 +2590,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 109 */
     /* type PARROT_INLINE_OP, */
@@ -2491,7 +2603,8 @@
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 110 */
     /* type PARROT_INLINE_OP, */
@@ -2503,7 +2616,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 111 */
     /* type PARROT_INLINE_OP, */
@@ -2515,7 +2629,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 112 */
     /* type PARROT_FUNCTION_OP, */
@@ -2527,7 +2642,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 113 */
     /* type PARROT_FUNCTION_OP, */
@@ -2539,7 +2655,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 114 */
     /* type PARROT_INLINE_OP, */
@@ -2551,7 +2668,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 115 */
     /* type PARROT_INLINE_OP, */
@@ -2563,7 +2681,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 116 */
     /* type PARROT_INLINE_OP, */
@@ -2575,7 +2694,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 117 */
     /* type PARROT_INLINE_OP, */
@@ -2587,7 +2707,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 118 */
     /* type PARROT_INLINE_OP, */
@@ -2599,7 +2720,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 119 */
     /* type PARROT_INLINE_OP, */
@@ -2611,7 +2733,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 120 */
     /* type PARROT_INLINE_OP, */
@@ -2623,7 +2746,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 121 */
     /* type PARROT_INLINE_OP, */
@@ -2635,7 +2759,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 122 */
     /* type PARROT_INLINE_OP, */
@@ -2647,7 +2772,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 123 */
     /* type PARROT_INLINE_OP, */
@@ -2659,7 +2785,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 124 */
     /* type PARROT_INLINE_OP, */
@@ -2671,7 +2798,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 125 */
     /* type PARROT_INLINE_OP, */
@@ -2683,7 +2811,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 126 */
     /* type PARROT_INLINE_OP, */
@@ -2695,7 +2824,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 127 */
     /* type PARROT_INLINE_OP, */
@@ -2707,7 +2837,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 128 */
     /* type PARROT_INLINE_OP, */
@@ -2719,7 +2850,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 129 */
     /* type PARROT_INLINE_OP, */
@@ -2731,7 +2863,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 130 */
     /* type PARROT_INLINE_OP, */
@@ -2743,7 +2876,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 131 */
     /* type PARROT_INLINE_OP, */
@@ -2755,7 +2889,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 132 */
     /* type PARROT_INLINE_OP, */
@@ -2767,7 +2902,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 133 */
     /* type PARROT_INLINE_OP, */
@@ -2779,7 +2915,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 134 */
     /* type PARROT_INLINE_OP, */
@@ -2791,7 +2928,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 135 */
     /* type PARROT_INLINE_OP, */
@@ -2803,7 +2941,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 136 */
     /* type PARROT_INLINE_OP, */
@@ -2815,7 +2954,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 137 */
     /* type PARROT_INLINE_OP, */
@@ -2827,7 +2967,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 138 */
     /* type PARROT_INLINE_OP, */
@@ -2839,7 +2980,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 139 */
     /* type PARROT_INLINE_OP, */
@@ -2851,7 +2993,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 140 */
     /* type PARROT_INLINE_OP, */
@@ -2863,7 +3006,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 141 */
     /* type PARROT_INLINE_OP, */
@@ -2875,7 +3019,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 142 */
     /* type PARROT_INLINE_OP, */
@@ -2887,7 +3032,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 143 */
     /* type PARROT_INLINE_OP, */
@@ -2899,7 +3045,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 144 */
     /* type PARROT_INLINE_OP, */
@@ -2911,7 +3058,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 145 */
     /* type PARROT_INLINE_OP, */
@@ -2923,7 +3071,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 146 */
     /* type PARROT_INLINE_OP, */
@@ -2935,7 +3084,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 147 */
     /* type PARROT_INLINE_OP, */
@@ -2947,7 +3097,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 148 */
     /* type PARROT_INLINE_OP, */
@@ -2959,7 +3110,8 @@
     4,
     { PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 149 */
     /* type PARROT_INLINE_OP, */
@@ -2971,7 +3123,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 150 */
     /* type PARROT_INLINE_OP, */
@@ -2983,7 +3136,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 151 */
     /* type PARROT_INLINE_OP, */
@@ -2995,7 +3149,8 @@
     4,
     { PARROT_ARG_NC, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 152 */
     /* type PARROT_INLINE_OP, */
@@ -3007,7 +3162,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 153 */
     /* type PARROT_FUNCTION_OP, */
@@ -3019,7 +3175,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 154 */
     /* type PARROT_FUNCTION_OP, */
@@ -3031,7 +3188,8 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 155 */
     /* type PARROT_FUNCTION_OP, */
@@ -3043,7 +3201,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 156 */
     /* type PARROT_FUNCTION_OP, */
@@ -3055,7 +3214,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 157 */
     /* type PARROT_FUNCTION_OP, */
@@ -3067,7 +3227,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 158 */
     /* type PARROT_FUNCTION_OP, */
@@ -3079,7 +3240,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 159 */
     /* type PARROT_FUNCTION_OP, */
@@ -3091,7 +3253,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 160 */
     /* type PARROT_FUNCTION_OP, */
@@ -3103,7 +3266,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 161 */
     /* type PARROT_FUNCTION_OP, */
@@ -3115,7 +3279,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 162 */
     /* type PARROT_FUNCTION_OP, */
@@ -3127,7 +3292,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 163 */
     /* type PARROT_FUNCTION_OP, */
@@ -3139,7 +3305,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 164 */
     /* type PARROT_FUNCTION_OP, */
@@ -3151,7 +3318,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 165 */
     /* type PARROT_FUNCTION_OP, */
@@ -3163,7 +3331,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 166 */
     /* type PARROT_FUNCTION_OP, */
@@ -3175,7 +3344,8 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 167 */
     /* type PARROT_FUNCTION_OP, */
@@ -3187,7 +3357,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 168 */
     /* type PARROT_FUNCTION_OP, */
@@ -3199,7 +3370,8 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 169 */
     /* type PARROT_FUNCTION_OP, */
@@ -3211,7 +3383,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 170 */
     /* type PARROT_INLINE_OP, */
@@ -3223,7 +3396,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 171 */
     /* type PARROT_INLINE_OP, */
@@ -3235,7 +3409,8 @@
     4,
     { PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 172 */
     /* type PARROT_INLINE_OP, */
@@ -3247,7 +3422,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 173 */
     /* type PARROT_INLINE_OP, */
@@ -3259,7 +3435,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 174 */
     /* type PARROT_INLINE_OP, */
@@ -3271,7 +3448,8 @@
     4,
     { PARROT_ARG_NC, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 175 */
     /* type PARROT_INLINE_OP, */
@@ -3283,7 +3461,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 176 */
     /* type PARROT_FUNCTION_OP, */
@@ -3295,7 +3474,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 177 */
     /* type PARROT_FUNCTION_OP, */
@@ -3307,7 +3487,8 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 178 */
     /* type PARROT_FUNCTION_OP, */
@@ -3319,7 +3500,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 179 */
     /* type PARROT_FUNCTION_OP, */
@@ -3331,7 +3513,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 180 */
     /* type PARROT_FUNCTION_OP, */
@@ -3343,7 +3526,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 181 */
     /* type PARROT_FUNCTION_OP, */
@@ -3355,7 +3539,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 182 */
     /* type PARROT_FUNCTION_OP, */
@@ -3367,7 +3552,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 183 */
     /* type PARROT_FUNCTION_OP, */
@@ -3379,7 +3565,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 184 */
     /* type PARROT_FUNCTION_OP, */
@@ -3391,7 +3578,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 185 */
     /* type PARROT_FUNCTION_OP, */
@@ -3403,7 +3591,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 186 */
     /* type PARROT_FUNCTION_OP, */
@@ -3415,7 +3604,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 187 */
     /* type PARROT_FUNCTION_OP, */
@@ -3427,7 +3617,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 188 */
     /* type PARROT_FUNCTION_OP, */
@@ -3439,7 +3630,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 189 */
     /* type PARROT_FUNCTION_OP, */
@@ -3451,7 +3643,8 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 190 */
     /* type PARROT_FUNCTION_OP, */
@@ -3463,7 +3656,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 191 */
     /* type PARROT_FUNCTION_OP, */
@@ -3475,7 +3669,8 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 192 */
     /* type PARROT_FUNCTION_OP, */
@@ -3487,7 +3682,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 193 */
     /* type PARROT_INLINE_OP, */
@@ -3499,7 +3695,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 194 */
     /* type PARROT_INLINE_OP, */
@@ -3511,7 +3708,8 @@
     4,
     { PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 195 */
     /* type PARROT_INLINE_OP, */
@@ -3523,7 +3721,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 196 */
     /* type PARROT_INLINE_OP, */
@@ -3535,7 +3734,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 197 */
     /* type PARROT_INLINE_OP, */
@@ -3547,7 +3747,8 @@
     4,
     { PARROT_ARG_NC, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 198 */
     /* type PARROT_INLINE_OP, */
@@ -3559,7 +3760,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 199 */
     /* type PARROT_FUNCTION_OP, */
@@ -3571,7 +3773,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 200 */
     /* type PARROT_FUNCTION_OP, */
@@ -3583,7 +3786,8 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 201 */
     /* type PARROT_FUNCTION_OP, */
@@ -3595,7 +3799,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 202 */
     /* type PARROT_FUNCTION_OP, */
@@ -3607,7 +3812,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 203 */
     /* type PARROT_FUNCTION_OP, */
@@ -3619,7 +3825,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 204 */
     /* type PARROT_FUNCTION_OP, */
@@ -3631,7 +3838,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 205 */
     /* type PARROT_FUNCTION_OP, */
@@ -3643,7 +3851,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 206 */
     /* type PARROT_FUNCTION_OP, */
@@ -3655,7 +3864,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 207 */
     /* type PARROT_FUNCTION_OP, */
@@ -3667,7 +3877,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 208 */
     /* type PARROT_FUNCTION_OP, */
@@ -3679,7 +3890,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 209 */
     /* type PARROT_FUNCTION_OP, */
@@ -3691,7 +3903,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 210 */
     /* type PARROT_FUNCTION_OP, */
@@ -3703,7 +3916,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 211 */
     /* type PARROT_INLINE_OP, */
@@ -3715,7 +3929,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 212 */
     /* type PARROT_INLINE_OP, */
@@ -3727,7 +3942,8 @@
     4,
     { PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 213 */
     /* type PARROT_INLINE_OP, */
@@ -3739,7 +3955,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 214 */
     /* type PARROT_INLINE_OP, */
@@ -3751,7 +3968,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 215 */
     /* type PARROT_INLINE_OP, */
@@ -3763,7 +3981,8 @@
     4,
     { PARROT_ARG_NC, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 216 */
     /* type PARROT_INLINE_OP, */
@@ -3775,7 +3994,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 217 */
     /* type PARROT_FUNCTION_OP, */
@@ -3787,7 +4007,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 218 */
     /* type PARROT_FUNCTION_OP, */
@@ -3799,7 +4020,8 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 219 */
     /* type PARROT_FUNCTION_OP, */
@@ -3811,7 +4033,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 220 */
     /* type PARROT_FUNCTION_OP, */
@@ -3823,7 +4046,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 221 */
     /* type PARROT_FUNCTION_OP, */
@@ -3835,7 +4059,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 222 */
     /* type PARROT_FUNCTION_OP, */
@@ -3847,7 +4072,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 223 */
     /* type PARROT_FUNCTION_OP, */
@@ -3859,7 +4085,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 224 */
     /* type PARROT_FUNCTION_OP, */
@@ -3871,7 +4098,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 225 */
     /* type PARROT_FUNCTION_OP, */
@@ -3883,7 +4111,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 226 */
     /* type PARROT_FUNCTION_OP, */
@@ -3895,7 +4124,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 227 */
     /* type PARROT_FUNCTION_OP, */
@@ -3907,7 +4137,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 228 */
     /* type PARROT_FUNCTION_OP, */
@@ -3919,7 +4150,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 229 */
     /* type PARROT_FUNCTION_OP, */
@@ -3931,7 +4163,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 230 */
     /* type PARROT_FUNCTION_OP, */
@@ -3943,7 +4176,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 231 */
     /* type PARROT_FUNCTION_OP, */
@@ -3955,7 +4189,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 232 */
     /* type PARROT_FUNCTION_OP, */
@@ -3967,7 +4202,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 233 */
     /* type PARROT_FUNCTION_OP, */
@@ -3979,7 +4215,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 234 */
     /* type PARROT_FUNCTION_OP, */
@@ -3991,7 +4228,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 235 */
     /* type PARROT_FUNCTION_OP, */
@@ -4003,7 +4241,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 236 */
     /* type PARROT_FUNCTION_OP, */
@@ -4015,7 +4254,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 237 */
     /* type PARROT_FUNCTION_OP, */
@@ -4027,7 +4267,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 238 */
     /* type PARROT_FUNCTION_OP, */
@@ -4039,7 +4280,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 239 */
     /* type PARROT_FUNCTION_OP, */
@@ -4051,7 +4293,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 240 */
     /* type PARROT_FUNCTION_OP, */
@@ -4063,7 +4306,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 241 */
     /* type PARROT_FUNCTION_OP, */
@@ -4075,7 +4319,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 242 */
     /* type PARROT_FUNCTION_OP, */
@@ -4087,7 +4332,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_NC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 243 */
     /* type PARROT_FUNCTION_OP, */
@@ -4099,7 +4345,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 244 */
     /* type PARROT_FUNCTION_OP, */
@@ -4111,7 +4358,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 245 */
     /* type PARROT_FUNCTION_OP, */
@@ -4123,7 +4371,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 246 */
     /* type PARROT_FUNCTION_OP, */
@@ -4135,7 +4384,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 1 }
+    { 0, 0, 1 },
+    &core_op_lib
   },
   { /* 247 */
     /* type PARROT_FUNCTION_OP, */
@@ -4147,7 +4397,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 248 */
     /* type PARROT_FUNCTION_OP, */
@@ -4159,7 +4410,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 249 */
     /* type PARROT_FUNCTION_OP, */
@@ -4171,7 +4423,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 250 */
     /* type PARROT_FUNCTION_OP, */
@@ -4183,7 +4436,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 251 */
     /* type PARROT_INLINE_OP, */
@@ -4195,7 +4449,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 252 */
     /* type PARROT_INLINE_OP, */
@@ -4207,7 +4462,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 253 */
     /* type PARROT_INLINE_OP, */
@@ -4219,7 +4475,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 254 */
     /* type PARROT_INLINE_OP, */
@@ -4231,7 +4488,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 255 */
     /* type PARROT_INLINE_OP, */
@@ -4243,7 +4501,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 256 */
     /* type PARROT_INLINE_OP, */
@@ -4255,7 +4514,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 257 */
     /* type PARROT_INLINE_OP, */
@@ -4267,7 +4527,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 258 */
     /* type PARROT_INLINE_OP, */
@@ -4279,7 +4540,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 259 */
     /* type PARROT_INLINE_OP, */
@@ -4291,7 +4553,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 260 */
     /* type PARROT_INLINE_OP, */
@@ -4303,7 +4566,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 261 */
     /* type PARROT_INLINE_OP, */
@@ -4315,7 +4579,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 262 */
     /* type PARROT_INLINE_OP, */
@@ -4327,7 +4592,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 263 */
     /* type PARROT_INLINE_OP, */
@@ -4339,7 +4605,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 264 */
     /* type PARROT_INLINE_OP, */
@@ -4351,7 +4618,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 265 */
     /* type PARROT_INLINE_OP, */
@@ -4363,7 +4631,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 266 */
     /* type PARROT_INLINE_OP, */
@@ -4375,7 +4644,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 267 */
     /* type PARROT_INLINE_OP, */
@@ -4387,7 +4657,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 268 */
     /* type PARROT_INLINE_OP, */
@@ -4399,7 +4670,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 269 */
     /* type PARROT_INLINE_OP, */
@@ -4411,7 +4683,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 270 */
     /* type PARROT_INLINE_OP, */
@@ -4423,7 +4696,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 271 */
     /* type PARROT_INLINE_OP, */
@@ -4435,7 +4709,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 272 */
     /* type PARROT_INLINE_OP, */
@@ -4447,7 +4722,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 273 */
     /* type PARROT_INLINE_OP, */
@@ -4459,7 +4735,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 274 */
     /* type PARROT_INLINE_OP, */
@@ -4471,7 +4748,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 275 */
     /* type PARROT_INLINE_OP, */
@@ -4483,7 +4761,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 276 */
     /* type PARROT_INLINE_OP, */
@@ -4495,7 +4774,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 277 */
     /* type PARROT_INLINE_OP, */
@@ -4507,7 +4787,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 278 */
     /* type PARROT_INLINE_OP, */
@@ -4519,7 +4800,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 279 */
     /* type PARROT_INLINE_OP, */
@@ -4531,7 +4813,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 280 */
     /* type PARROT_INLINE_OP, */
@@ -4543,7 +4826,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 281 */
     /* type PARROT_INLINE_OP, */
@@ -4555,7 +4839,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 282 */
     /* type PARROT_INLINE_OP, */
@@ -4567,7 +4852,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 283 */
     /* type PARROT_INLINE_OP, */
@@ -4579,7 +4865,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 284 */
     /* type PARROT_INLINE_OP, */
@@ -4591,7 +4878,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 285 */
     /* type PARROT_INLINE_OP, */
@@ -4603,7 +4891,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 286 */
     /* type PARROT_INLINE_OP, */
@@ -4615,7 +4904,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 287 */
     /* type PARROT_INLINE_OP, */
@@ -4627,7 +4917,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 288 */
     /* type PARROT_INLINE_OP, */
@@ -4639,7 +4930,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 289 */
     /* type PARROT_INLINE_OP, */
@@ -4651,7 +4943,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 290 */
     /* type PARROT_INLINE_OP, */
@@ -4663,7 +4956,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 291 */
     /* type PARROT_INLINE_OP, */
@@ -4675,7 +4969,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 292 */
     /* type PARROT_INLINE_OP, */
@@ -4687,7 +4982,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 293 */
     /* type PARROT_INLINE_OP, */
@@ -4699,7 +4995,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 294 */
     /* type PARROT_INLINE_OP, */
@@ -4711,7 +5008,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 295 */
     /* type PARROT_INLINE_OP, */
@@ -4723,7 +5021,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 296 */
     /* type PARROT_INLINE_OP, */
@@ -4735,7 +5034,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 297 */
     /* type PARROT_INLINE_OP, */
@@ -4747,7 +5047,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 298 */
     /* type PARROT_INLINE_OP, */
@@ -4759,7 +5060,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 299 */
     /* type PARROT_INLINE_OP, */
@@ -4771,7 +5073,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 300 */
     /* type PARROT_INLINE_OP, */
@@ -4783,7 +5086,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 301 */
     /* type PARROT_INLINE_OP, */
@@ -4795,7 +5099,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 302 */
     /* type PARROT_INLINE_OP, */
@@ -4807,7 +5112,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 303 */
     /* type PARROT_INLINE_OP, */
@@ -4819,7 +5125,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 304 */
     /* type PARROT_INLINE_OP, */
@@ -4831,7 +5138,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 305 */
     /* type PARROT_INLINE_OP, */
@@ -4843,7 +5151,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 306 */
     /* type PARROT_INLINE_OP, */
@@ -4855,7 +5164,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 307 */
     /* type PARROT_INLINE_OP, */
@@ -4867,7 +5177,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 308 */
     /* type PARROT_INLINE_OP, */
@@ -4879,7 +5190,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 309 */
     /* type PARROT_INLINE_OP, */
@@ -4891,7 +5203,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 310 */
     /* type PARROT_INLINE_OP, */
@@ -4903,7 +5216,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 311 */
     /* type PARROT_INLINE_OP, */
@@ -4915,7 +5229,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 312 */
     /* type PARROT_INLINE_OP, */
@@ -4927,7 +5242,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 313 */
     /* type PARROT_INLINE_OP, */
@@ -4939,7 +5255,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 314 */
     /* type PARROT_INLINE_OP, */
@@ -4951,7 +5268,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 315 */
     /* type PARROT_INLINE_OP, */
@@ -4963,7 +5281,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 316 */
     /* type PARROT_INLINE_OP, */
@@ -4975,7 +5294,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 317 */
     /* type PARROT_INLINE_OP, */
@@ -4987,7 +5307,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 318 */
     /* type PARROT_INLINE_OP, */
@@ -4999,7 +5320,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 319 */
     /* type PARROT_INLINE_OP, */
@@ -5011,7 +5333,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 320 */
     /* type PARROT_INLINE_OP, */
@@ -5023,7 +5346,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 321 */
     /* type PARROT_INLINE_OP, */
@@ -5035,7 +5359,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 322 */
     /* type PARROT_INLINE_OP, */
@@ -5047,7 +5372,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 323 */
     /* type PARROT_INLINE_OP, */
@@ -5059,7 +5385,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 324 */
     /* type PARROT_INLINE_OP, */
@@ -5071,7 +5398,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 325 */
     /* type PARROT_INLINE_OP, */
@@ -5083,7 +5411,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 326 */
     /* type PARROT_INLINE_OP, */
@@ -5095,7 +5424,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 327 */
     /* type PARROT_INLINE_OP, */
@@ -5107,7 +5437,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 328 */
     /* type PARROT_INLINE_OP, */
@@ -5119,7 +5450,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 329 */
     /* type PARROT_INLINE_OP, */
@@ -5131,7 +5463,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 330 */
     /* type PARROT_INLINE_OP, */
@@ -5143,7 +5476,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 331 */
     /* type PARROT_INLINE_OP, */
@@ -5155,7 +5489,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 332 */
     /* type PARROT_INLINE_OP, */
@@ -5167,7 +5502,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 333 */
     /* type PARROT_INLINE_OP, */
@@ -5179,7 +5515,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 334 */
     /* type PARROT_INLINE_OP, */
@@ -5191,7 +5528,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 335 */
     /* type PARROT_INLINE_OP, */
@@ -5203,7 +5541,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 336 */
     /* type PARROT_INLINE_OP, */
@@ -5215,7 +5554,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 337 */
     /* type PARROT_INLINE_OP, */
@@ -5227,7 +5567,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 338 */
     /* type PARROT_INLINE_OP, */
@@ -5239,7 +5580,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 339 */
     /* type PARROT_INLINE_OP, */
@@ -5251,7 +5593,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 340 */
     /* type PARROT_INLINE_OP, */
@@ -5263,7 +5606,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 341 */
     /* type PARROT_INLINE_OP, */
@@ -5275,7 +5619,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 342 */
     /* type PARROT_INLINE_OP, */
@@ -5287,7 +5632,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 343 */
     /* type PARROT_INLINE_OP, */
@@ -5299,7 +5645,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 344 */
     /* type PARROT_INLINE_OP, */
@@ -5311,7 +5658,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 345 */
     /* type PARROT_INLINE_OP, */
@@ -5323,7 +5671,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 346 */
     /* type PARROT_INLINE_OP, */
@@ -5335,7 +5684,8 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 347 */
     /* type PARROT_INLINE_OP, */
@@ -5347,7 +5697,8 @@
     2,
     { PARROT_ARG_NC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 348 */
     /* type PARROT_FUNCTION_OP, */
@@ -5359,7 +5710,8 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 349 */
     /* type PARROT_FUNCTION_OP, */
@@ -5371,7 +5723,8 @@
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 350 */
     /* type PARROT_FUNCTION_OP, */
@@ -5383,7 +5736,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 351 */
     /* type PARROT_INLINE_OP, */
@@ -5395,7 +5749,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 352 */
     /* type PARROT_INLINE_OP, */
@@ -5407,7 +5762,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 353 */
     /* type PARROT_INLINE_OP, */
@@ -5419,7 +5775,8 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 354 */
     /* type PARROT_INLINE_OP, */
@@ -5431,7 +5788,8 @@
     2,
     { PARROT_ARG_NC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 355 */
     /* type PARROT_FUNCTION_OP, */
@@ -5443,7 +5801,8 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 356 */
     /* type PARROT_FUNCTION_OP, */
@@ -5455,7 +5814,8 @@
     2,
     { PARROT_ARG_SC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 357 */
     /* type PARROT_FUNCTION_OP, */
@@ -5467,7 +5827,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 358 */
     /* type PARROT_FUNCTION_OP, */
@@ -5479,7 +5840,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 359 */
     /* type PARROT_FUNCTION_OP, */
@@ -5491,7 +5853,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 360 */
     /* type PARROT_FUNCTION_OP, */
@@ -5503,7 +5866,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 361 */
     /* type PARROT_FUNCTION_OP, */
@@ -5515,7 +5879,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 362 */
     /* type PARROT_FUNCTION_OP, */
@@ -5527,7 +5892,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 363 */
     /* type PARROT_FUNCTION_OP, */
@@ -5539,7 +5905,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 364 */
     /* type PARROT_FUNCTION_OP, */
@@ -5551,7 +5918,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 365 */
     /* type PARROT_INLINE_OP, */
@@ -5563,7 +5931,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 366 */
     /* type PARROT_INLINE_OP, */
@@ -5575,7 +5944,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 367 */
     /* type PARROT_INLINE_OP, */
@@ -5587,7 +5957,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 368 */
     /* type PARROT_INLINE_OP, */
@@ -5599,7 +5970,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 369 */
     /* type PARROT_INLINE_OP, */
@@ -5611,7 +5983,8 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 370 */
     /* type PARROT_INLINE_OP, */
@@ -5623,7 +5996,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 371 */
     /* type PARROT_INLINE_OP, */
@@ -5635,7 +6009,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 372 */
     /* type PARROT_INLINE_OP, */
@@ -5647,7 +6022,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 373 */
     /* type PARROT_INLINE_OP, */
@@ -5659,7 +6035,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 374 */
     /* type PARROT_INLINE_OP, */
@@ -5671,7 +6048,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 375 */
     /* type PARROT_INLINE_OP, */
@@ -5683,7 +6061,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 376 */
     /* type PARROT_INLINE_OP, */
@@ -5695,7 +6074,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 377 */
     /* type PARROT_INLINE_OP, */
@@ -5707,7 +6087,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 378 */
     /* type PARROT_INLINE_OP, */
@@ -5719,7 +6100,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 379 */
     /* type PARROT_INLINE_OP, */
@@ -5731,7 +6113,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 380 */
     /* type PARROT_INLINE_OP, */
@@ -5743,7 +6126,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 381 */
     /* type PARROT_INLINE_OP, */
@@ -5755,7 +6139,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 382 */
     /* type PARROT_INLINE_OP, */
@@ -5767,7 +6152,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 383 */
     /* type PARROT_INLINE_OP, */
@@ -5779,7 +6165,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 384 */
     /* type PARROT_INLINE_OP, */
@@ -5791,7 +6178,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 385 */
     /* type PARROT_INLINE_OP, */
@@ -5803,7 +6191,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 386 */
     /* type PARROT_INLINE_OP, */
@@ -5815,7 +6204,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 387 */
     /* type PARROT_INLINE_OP, */
@@ -5827,7 +6217,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 388 */
     /* type PARROT_INLINE_OP, */
@@ -5839,7 +6230,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 389 */
     /* type PARROT_INLINE_OP, */
@@ -5851,7 +6243,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 390 */
     /* type PARROT_INLINE_OP, */
@@ -5863,7 +6256,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 391 */
     /* type PARROT_INLINE_OP, */
@@ -5875,7 +6269,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 392 */
     /* type PARROT_INLINE_OP, */
@@ -5887,7 +6282,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 393 */
     /* type PARROT_INLINE_OP, */
@@ -5899,7 +6295,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 394 */
     /* type PARROT_INLINE_OP, */
@@ -5911,7 +6308,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 395 */
     /* type PARROT_INLINE_OP, */
@@ -5923,7 +6321,8 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 396 */
     /* type PARROT_INLINE_OP, */
@@ -5935,7 +6334,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 397 */
     /* type PARROT_INLINE_OP, */
@@ -5947,7 +6347,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 398 */
     /* type PARROT_INLINE_OP, */
@@ -5959,7 +6360,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 399 */
     /* type PARROT_INLINE_OP, */
@@ -5971,7 +6373,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 400 */
     /* type PARROT_INLINE_OP, */
@@ -5983,7 +6386,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 401 */
     /* type PARROT_INLINE_OP, */
@@ -5995,7 +6399,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 402 */
     /* type PARROT_INLINE_OP, */
@@ -6007,7 +6412,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 403 */
     /* type PARROT_INLINE_OP, */
@@ -6019,7 +6425,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 404 */
     /* type PARROT_INLINE_OP, */
@@ -6031,7 +6438,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 405 */
     /* type PARROT_INLINE_OP, */
@@ -6043,7 +6451,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 406 */
     /* type PARROT_INLINE_OP, */
@@ -6055,7 +6464,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 407 */
     /* type PARROT_INLINE_OP, */
@@ -6067,7 +6477,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 408 */
     /* type PARROT_INLINE_OP, */
@@ -6079,7 +6490,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 409 */
     /* type PARROT_INLINE_OP, */
@@ -6091,7 +6503,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 410 */
     /* type PARROT_INLINE_OP, */
@@ -6103,7 +6516,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 411 */
     /* type PARROT_INLINE_OP, */
@@ -6115,7 +6529,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 412 */
     /* type PARROT_INLINE_OP, */
@@ -6127,7 +6542,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 413 */
     /* type PARROT_INLINE_OP, */
@@ -6139,7 +6555,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 414 */
     /* type PARROT_INLINE_OP, */
@@ -6151,7 +6568,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 415 */
     /* type PARROT_INLINE_OP, */
@@ -6163,7 +6581,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 416 */
     /* type PARROT_INLINE_OP, */
@@ -6175,7 +6594,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 417 */
     /* type PARROT_INLINE_OP, */
@@ -6187,7 +6607,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 418 */
     /* type PARROT_INLINE_OP, */
@@ -6199,7 +6620,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 419 */
     /* type PARROT_INLINE_OP, */
@@ -6211,7 +6633,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 420 */
     /* type PARROT_INLINE_OP, */
@@ -6223,7 +6646,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 421 */
     /* type PARROT_INLINE_OP, */
@@ -6235,7 +6659,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 422 */
     /* type PARROT_INLINE_OP, */
@@ -6247,7 +6672,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 423 */
     /* type PARROT_INLINE_OP, */
@@ -6259,7 +6685,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 424 */
     /* type PARROT_INLINE_OP, */
@@ -6271,7 +6698,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 425 */
     /* type PARROT_INLINE_OP, */
@@ -6283,7 +6711,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 426 */
     /* type PARROT_INLINE_OP, */
@@ -6295,7 +6724,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 427 */
     /* type PARROT_INLINE_OP, */
@@ -6307,7 +6737,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 428 */
     /* type PARROT_INLINE_OP, */
@@ -6319,7 +6750,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 429 */
     /* type PARROT_INLINE_OP, */
@@ -6331,7 +6763,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 430 */
     /* type PARROT_INLINE_OP, */
@@ -6343,7 +6776,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 431 */
     /* type PARROT_INLINE_OP, */
@@ -6355,7 +6789,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 432 */
     /* type PARROT_INLINE_OP, */
@@ -6367,7 +6802,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 433 */
     /* type PARROT_INLINE_OP, */
@@ -6379,7 +6815,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 434 */
     /* type PARROT_INLINE_OP, */
@@ -6391,7 +6828,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 435 */
     /* type PARROT_INLINE_OP, */
@@ -6403,7 +6841,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 436 */
     /* type PARROT_INLINE_OP, */
@@ -6415,7 +6854,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 437 */
     /* type PARROT_INLINE_OP, */
@@ -6427,7 +6867,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 438 */
     /* type PARROT_INLINE_OP, */
@@ -6439,7 +6880,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 439 */
     /* type PARROT_INLINE_OP, */
@@ -6451,7 +6893,8 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 440 */
     /* type PARROT_INLINE_OP, */
@@ -6463,7 +6906,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 441 */
     /* type PARROT_INLINE_OP, */
@@ -6475,7 +6919,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 442 */
     /* type PARROT_INLINE_OP, */
@@ -6487,7 +6932,8 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 443 */
     /* type PARROT_INLINE_OP, */
@@ -6499,7 +6945,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 444 */
     /* type PARROT_INLINE_OP, */
@@ -6511,7 +6958,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 445 */
     /* type PARROT_INLINE_OP, */
@@ -6523,7 +6971,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 446 */
     /* type PARROT_INLINE_OP, */
@@ -6535,7 +6984,8 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 447 */
     /* type PARROT_INLINE_OP, */
@@ -6547,7 +6997,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 448 */
     /* type PARROT_FUNCTION_OP, */
@@ -6559,7 +7010,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 449 */
     /* type PARROT_FUNCTION_OP, */
@@ -6571,7 +7023,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 450 */
     /* type PARROT_FUNCTION_OP, */
@@ -6583,7 +7036,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 451 */
     /* type PARROT_FUNCTION_OP, */
@@ -6595,7 +7049,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 452 */
     /* type PARROT_INLINE_OP, */
@@ -6607,7 +7062,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 453 */
     /* type PARROT_INLINE_OP, */
@@ -6619,7 +7075,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 454 */
     /* type PARROT_INLINE_OP, */
@@ -6631,7 +7088,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 455 */
     /* type PARROT_INLINE_OP, */
@@ -6643,7 +7101,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 456 */
     /* type PARROT_INLINE_OP, */
@@ -6655,7 +7114,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 457 */
     /* type PARROT_FUNCTION_OP, */
@@ -6667,7 +7127,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 458 */
     /* type PARROT_FUNCTION_OP, */
@@ -6679,7 +7140,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 459 */
     /* type PARROT_FUNCTION_OP, */
@@ -6691,7 +7153,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 460 */
     /* type PARROT_FUNCTION_OP, */
@@ -6703,7 +7166,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 461 */
     /* type PARROT_FUNCTION_OP, */
@@ -6715,7 +7179,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 462 */
     /* type PARROT_FUNCTION_OP, */
@@ -6727,7 +7192,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 463 */
     /* type PARROT_INLINE_OP, */
@@ -6739,7 +7205,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 464 */
     /* type PARROT_INLINE_OP, */
@@ -6751,7 +7218,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 465 */
     /* type PARROT_INLINE_OP, */
@@ -6763,7 +7231,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 466 */
     /* type PARROT_INLINE_OP, */
@@ -6775,7 +7244,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 467 */
     /* type PARROT_INLINE_OP, */
@@ -6787,7 +7257,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 468 */
     /* type PARROT_INLINE_OP, */
@@ -6799,7 +7270,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 469 */
     /* type PARROT_INLINE_OP, */
@@ -6811,7 +7283,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 470 */
     /* type PARROT_INLINE_OP, */
@@ -6823,7 +7296,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 471 */
     /* type PARROT_INLINE_OP, */
@@ -6835,7 +7309,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 472 */
     /* type PARROT_INLINE_OP, */
@@ -6847,7 +7322,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 473 */
     /* type PARROT_INLINE_OP, */
@@ -6859,7 +7335,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 474 */
     /* type PARROT_INLINE_OP, */
@@ -6871,7 +7348,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 475 */
     /* type PARROT_INLINE_OP, */
@@ -6883,7 +7361,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 476 */
     /* type PARROT_INLINE_OP, */
@@ -6895,7 +7374,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 477 */
     /* type PARROT_INLINE_OP, */
@@ -6907,7 +7387,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 478 */
     /* type PARROT_INLINE_OP, */
@@ -6919,7 +7400,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 479 */
     /* type PARROT_INLINE_OP, */
@@ -6931,7 +7413,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 480 */
     /* type PARROT_INLINE_OP, */
@@ -6943,7 +7426,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 481 */
     /* type PARROT_INLINE_OP, */
@@ -6955,7 +7439,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 482 */
     /* type PARROT_INLINE_OP, */
@@ -6967,7 +7452,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 483 */
     /* type PARROT_INLINE_OP, */
@@ -6979,7 +7465,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 484 */
     /* type PARROT_INLINE_OP, */
@@ -6991,7 +7478,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 485 */
     /* type PARROT_INLINE_OP, */
@@ -7003,7 +7491,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 486 */
     /* type PARROT_INLINE_OP, */
@@ -7015,7 +7504,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 487 */
     /* type PARROT_INLINE_OP, */
@@ -7027,7 +7517,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 488 */
     /* type PARROT_INLINE_OP, */
@@ -7039,7 +7530,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 489 */
     /* type PARROT_INLINE_OP, */
@@ -7051,7 +7543,8 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 490 */
     /* type PARROT_INLINE_OP, */
@@ -7063,7 +7556,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 491 */
     /* type PARROT_INLINE_OP, */
@@ -7075,7 +7569,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 492 */
     /* type PARROT_INLINE_OP, */
@@ -7087,7 +7582,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 493 */
     /* type PARROT_INLINE_OP, */
@@ -7099,7 +7595,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 494 */
     /* type PARROT_INLINE_OP, */
@@ -7111,7 +7608,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 495 */
     /* type PARROT_INLINE_OP, */
@@ -7123,7 +7621,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 496 */
     /* type PARROT_INLINE_OP, */
@@ -7135,7 +7634,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 497 */
     /* type PARROT_INLINE_OP, */
@@ -7147,7 +7647,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 498 */
     /* type PARROT_INLINE_OP, */
@@ -7159,7 +7660,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 499 */
     /* type PARROT_INLINE_OP, */
@@ -7171,7 +7673,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 500 */
     /* type PARROT_INLINE_OP, */
@@ -7183,7 +7686,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 501 */
     /* type PARROT_INLINE_OP, */
@@ -7195,7 +7699,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 502 */
     /* type PARROT_INLINE_OP, */
@@ -7207,7 +7712,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 503 */
     /* type PARROT_INLINE_OP, */
@@ -7219,7 +7725,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 504 */
     /* type PARROT_INLINE_OP, */
@@ -7231,7 +7738,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 505 */
     /* type PARROT_INLINE_OP, */
@@ -7243,7 +7751,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 506 */
     /* type PARROT_INLINE_OP, */
@@ -7255,7 +7764,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 507 */
     /* type PARROT_INLINE_OP, */
@@ -7267,7 +7777,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_NC, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 508 */
     /* type PARROT_INLINE_OP, */
@@ -7279,7 +7790,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 509 */
     /* type PARROT_INLINE_OP, */
@@ -7291,7 +7803,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 510 */
     /* type PARROT_INLINE_OP, */
@@ -7303,7 +7816,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 511 */
     /* type PARROT_INLINE_OP, */
@@ -7315,7 +7829,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 512 */
     /* type PARROT_INLINE_OP, */
@@ -7327,7 +7842,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 513 */
     /* type PARROT_INLINE_OP, */
@@ -7339,7 +7855,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 514 */
     /* type PARROT_INLINE_OP, */
@@ -7351,7 +7868,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 515 */
     /* type PARROT_FUNCTION_OP, */
@@ -7363,7 +7881,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 516 */
     /* type PARROT_FUNCTION_OP, */
@@ -7375,7 +7894,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 517 */
     /* type PARROT_FUNCTION_OP, */
@@ -7387,7 +7907,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 518 */
     /* type PARROT_FUNCTION_OP, */
@@ -7399,7 +7920,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 519 */
     /* type PARROT_FUNCTION_OP, */
@@ -7411,7 +7933,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 520 */
     /* type PARROT_FUNCTION_OP, */
@@ -7423,7 +7946,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 521 */
     /* type PARROT_FUNCTION_OP, */
@@ -7435,7 +7959,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 522 */
     /* type PARROT_FUNCTION_OP, */
@@ -7447,7 +7972,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 523 */
     /* type PARROT_FUNCTION_OP, */
@@ -7459,7 +7985,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 524 */
     /* type PARROT_INLINE_OP, */
@@ -7471,7 +7998,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 525 */
     /* type PARROT_INLINE_OP, */
@@ -7483,7 +8011,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 526 */
     /* type PARROT_INLINE_OP, */
@@ -7495,7 +8024,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 527 */
     /* type PARROT_INLINE_OP, */
@@ -7507,7 +8037,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 528 */
     /* type PARROT_INLINE_OP, */
@@ -7519,7 +8050,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 529 */
     /* type PARROT_INLINE_OP, */
@@ -7531,7 +8063,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 530 */
     /* type PARROT_INLINE_OP, */
@@ -7543,7 +8076,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 531 */
     /* type PARROT_INLINE_OP, */
@@ -7555,7 +8089,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 532 */
     /* type PARROT_INLINE_OP, */
@@ -7567,7 +8102,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 533 */
     /* type PARROT_INLINE_OP, */
@@ -7579,7 +8115,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 534 */
     /* type PARROT_INLINE_OP, */
@@ -7591,7 +8128,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 535 */
     /* type PARROT_INLINE_OP, */
@@ -7603,7 +8141,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 536 */
     /* type PARROT_INLINE_OP, */
@@ -7615,7 +8154,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 537 */
     /* type PARROT_INLINE_OP, */
@@ -7627,7 +8167,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 538 */
     /* type PARROT_INLINE_OP, */
@@ -7639,7 +8180,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 539 */
     /* type PARROT_INLINE_OP, */
@@ -7651,7 +8193,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 540 */
     /* type PARROT_INLINE_OP, */
@@ -7663,7 +8206,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 541 */
     /* type PARROT_INLINE_OP, */
@@ -7675,7 +8219,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 542 */
     /* type PARROT_INLINE_OP, */
@@ -7687,7 +8232,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 543 */
     /* type PARROT_INLINE_OP, */
@@ -7699,7 +8245,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 544 */
     /* type PARROT_INLINE_OP, */
@@ -7711,7 +8258,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 545 */
     /* type PARROT_INLINE_OP, */
@@ -7723,7 +8271,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 546 */
     /* type PARROT_INLINE_OP, */
@@ -7735,7 +8284,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 547 */
     /* type PARROT_INLINE_OP, */
@@ -7747,7 +8297,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 548 */
     /* type PARROT_INLINE_OP, */
@@ -7759,7 +8310,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 549 */
     /* type PARROT_INLINE_OP, */
@@ -7771,7 +8323,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 550 */
     /* type PARROT_FUNCTION_OP, */
@@ -7783,7 +8336,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 551 */
     /* type PARROT_FUNCTION_OP, */
@@ -7795,7 +8349,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 552 */
     /* type PARROT_FUNCTION_OP, */
@@ -7807,7 +8362,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 553 */
     /* type PARROT_FUNCTION_OP, */
@@ -7819,7 +8375,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 554 */
     /* type PARROT_FUNCTION_OP, */
@@ -7831,7 +8388,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 555 */
     /* type PARROT_FUNCTION_OP, */
@@ -7843,7 +8401,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 556 */
     /* type PARROT_FUNCTION_OP, */
@@ -7855,7 +8414,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 557 */
     /* type PARROT_FUNCTION_OP, */
@@ -7867,7 +8427,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 558 */
     /* type PARROT_FUNCTION_OP, */
@@ -7879,7 +8440,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 559 */
     /* type PARROT_FUNCTION_OP, */
@@ -7891,7 +8453,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 560 */
     /* type PARROT_INLINE_OP, */
@@ -7903,7 +8466,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 561 */
     /* type PARROT_INLINE_OP, */
@@ -7915,7 +8479,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 562 */
     /* type PARROT_INLINE_OP, */
@@ -7927,7 +8492,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 563 */
     /* type PARROT_INLINE_OP, */
@@ -7939,7 +8505,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 564 */
     /* type PARROT_INLINE_OP, */
@@ -7951,7 +8518,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 565 */
     /* type PARROT_INLINE_OP, */
@@ -7963,7 +8531,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 566 */
     /* type PARROT_INLINE_OP, */
@@ -7975,7 +8544,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 567 */
     /* type PARROT_INLINE_OP, */
@@ -7987,7 +8557,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 568 */
     /* type PARROT_INLINE_OP, */
@@ -7999,7 +8570,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 569 */
     /* type PARROT_INLINE_OP, */
@@ -8011,7 +8583,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 570 */
     /* type PARROT_FUNCTION_OP, */
@@ -8023,7 +8596,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 571 */
     /* type PARROT_FUNCTION_OP, */
@@ -8035,7 +8609,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 572 */
     /* type PARROT_INLINE_OP, */
@@ -8047,7 +8622,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 573 */
     /* type PARROT_INLINE_OP, */
@@ -8059,7 +8635,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 574 */
     /* type PARROT_INLINE_OP, */
@@ -8071,7 +8648,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 575 */
     /* type PARROT_INLINE_OP, */
@@ -8083,7 +8661,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 576 */
     /* type PARROT_INLINE_OP, */
@@ -8095,7 +8674,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 577 */
     /* type PARROT_INLINE_OP, */
@@ -8107,7 +8687,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 578 */
     /* type PARROT_INLINE_OP, */
@@ -8119,7 +8700,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 579 */
     /* type PARROT_INLINE_OP, */
@@ -8131,7 +8713,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 580 */
     /* type PARROT_INLINE_OP, */
@@ -8143,7 +8726,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 581 */
     /* type PARROT_INLINE_OP, */
@@ -8155,7 +8739,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 582 */
     /* type PARROT_INLINE_OP, */
@@ -8167,7 +8752,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 583 */
     /* type PARROT_INLINE_OP, */
@@ -8179,7 +8765,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 584 */
     /* type PARROT_INLINE_OP, */
@@ -8191,7 +8778,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 585 */
     /* type PARROT_INLINE_OP, */
@@ -8203,7 +8791,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 586 */
     /* type PARROT_INLINE_OP, */
@@ -8215,7 +8804,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 587 */
     /* type PARROT_INLINE_OP, */
@@ -8227,7 +8817,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 588 */
     /* type PARROT_INLINE_OP, */
@@ -8239,7 +8830,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 589 */
     /* type PARROT_INLINE_OP, */
@@ -8251,7 +8843,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 590 */
     /* type PARROT_FUNCTION_OP, */
@@ -8263,7 +8856,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 591 */
     /* type PARROT_FUNCTION_OP, */
@@ -8275,7 +8869,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 592 */
     /* type PARROT_FUNCTION_OP, */
@@ -8287,7 +8882,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 593 */
     /* type PARROT_FUNCTION_OP, */
@@ -8299,7 +8895,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 594 */
     /* type PARROT_FUNCTION_OP, */
@@ -8311,7 +8908,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 595 */
     /* type PARROT_FUNCTION_OP, */
@@ -8323,7 +8921,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 596 */
     /* type PARROT_INLINE_OP, */
@@ -8335,7 +8934,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 597 */
     /* type PARROT_INLINE_OP, */
@@ -8347,7 +8947,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 598 */
     /* type PARROT_FUNCTION_OP, */
@@ -8359,7 +8960,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 599 */
     /* type PARROT_FUNCTION_OP, */
@@ -8371,7 +8973,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 600 */
     /* type PARROT_FUNCTION_OP, */
@@ -8383,7 +8986,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 601 */
     /* type PARROT_FUNCTION_OP, */
@@ -8395,7 +8999,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 602 */
     /* type PARROT_FUNCTION_OP, */
@@ -8407,7 +9012,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 603 */
     /* type PARROT_FUNCTION_OP, */
@@ -8419,7 +9025,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 604 */
     /* type PARROT_FUNCTION_OP, */
@@ -8431,7 +9038,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 605 */
     /* type PARROT_FUNCTION_OP, */
@@ -8443,7 +9051,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 606 */
     /* type PARROT_FUNCTION_OP, */
@@ -8455,7 +9064,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 607 */
     /* type PARROT_FUNCTION_OP, */
@@ -8467,7 +9077,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 608 */
     /* type PARROT_INLINE_OP, */
@@ -8479,7 +9090,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 609 */
     /* type PARROT_INLINE_OP, */
@@ -8491,7 +9103,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 610 */
     /* type PARROT_FUNCTION_OP, */
@@ -8503,7 +9116,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 611 */
     /* type PARROT_FUNCTION_OP, */
@@ -8515,7 +9129,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 612 */
     /* type PARROT_FUNCTION_OP, */
@@ -8527,7 +9142,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 613 */
     /* type PARROT_INLINE_OP, */
@@ -8539,7 +9155,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 614 */
     /* type PARROT_INLINE_OP, */
@@ -8551,7 +9168,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 615 */
     /* type PARROT_INLINE_OP, */
@@ -8563,7 +9181,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 616 */
     /* type PARROT_INLINE_OP, */
@@ -8575,7 +9194,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 617 */
     /* type PARROT_INLINE_OP, */
@@ -8587,7 +9207,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 618 */
     /* type PARROT_INLINE_OP, */
@@ -8599,7 +9220,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 619 */
     /* type PARROT_INLINE_OP, */
@@ -8611,7 +9233,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 620 */
     /* type PARROT_INLINE_OP, */
@@ -8623,7 +9246,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 621 */
     /* type PARROT_INLINE_OP, */
@@ -8635,7 +9259,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 622 */
     /* type PARROT_INLINE_OP, */
@@ -8647,7 +9272,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 623 */
     /* type PARROT_INLINE_OP, */
@@ -8659,7 +9285,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 624 */
     /* type PARROT_INLINE_OP, */
@@ -8671,7 +9298,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 625 */
     /* type PARROT_INLINE_OP, */
@@ -8683,7 +9311,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 626 */
     /* type PARROT_INLINE_OP, */
@@ -8695,7 +9324,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 627 */
     /* type PARROT_INLINE_OP, */
@@ -8707,7 +9337,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 628 */
     /* type PARROT_INLINE_OP, */
@@ -8719,7 +9350,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 629 */
     /* type PARROT_INLINE_OP, */
@@ -8731,7 +9363,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 630 */
     /* type PARROT_INLINE_OP, */
@@ -8743,7 +9376,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 631 */
     /* type PARROT_INLINE_OP, */
@@ -8755,7 +9389,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 632 */
     /* type PARROT_INLINE_OP, */
@@ -8767,7 +9402,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 633 */
     /* type PARROT_INLINE_OP, */
@@ -8779,7 +9415,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 634 */
     /* type PARROT_INLINE_OP, */
@@ -8791,7 +9428,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 635 */
     /* type PARROT_INLINE_OP, */
@@ -8803,7 +9441,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 636 */
     /* type PARROT_INLINE_OP, */
@@ -8815,7 +9454,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 637 */
     /* type PARROT_INLINE_OP, */
@@ -8827,7 +9467,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 638 */
     /* type PARROT_INLINE_OP, */
@@ -8839,7 +9480,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 639 */
     /* type PARROT_INLINE_OP, */
@@ -8851,7 +9493,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 640 */
     /* type PARROT_INLINE_OP, */
@@ -8863,7 +9506,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 641 */
     /* type PARROT_INLINE_OP, */
@@ -8875,7 +9519,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 642 */
     /* type PARROT_INLINE_OP, */
@@ -8887,7 +9532,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 643 */
     /* type PARROT_INLINE_OP, */
@@ -8899,7 +9545,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 644 */
     /* type PARROT_INLINE_OP, */
@@ -8911,7 +9558,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 645 */
     /* type PARROT_INLINE_OP, */
@@ -8923,7 +9571,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 646 */
     /* type PARROT_INLINE_OP, */
@@ -8935,7 +9584,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 647 */
     /* type PARROT_INLINE_OP, */
@@ -8947,7 +9597,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 648 */
     /* type PARROT_INLINE_OP, */
@@ -8959,7 +9610,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 649 */
     /* type PARROT_INLINE_OP, */
@@ -8971,7 +9623,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 650 */
     /* type PARROT_INLINE_OP, */
@@ -8983,7 +9636,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 651 */
     /* type PARROT_INLINE_OP, */
@@ -8995,7 +9649,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 652 */
     /* type PARROT_INLINE_OP, */
@@ -9007,7 +9662,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 653 */
     /* type PARROT_FUNCTION_OP, */
@@ -9019,7 +9675,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 654 */
     /* type PARROT_FUNCTION_OP, */
@@ -9031,7 +9688,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 655 */
     /* type PARROT_FUNCTION_OP, */
@@ -9043,7 +9701,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 656 */
     /* type PARROT_FUNCTION_OP, */
@@ -9055,7 +9714,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 657 */
     /* type PARROT_FUNCTION_OP, */
@@ -9067,7 +9727,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 658 */
     /* type PARROT_FUNCTION_OP, */
@@ -9079,7 +9740,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 659 */
     /* type PARROT_FUNCTION_OP, */
@@ -9091,7 +9753,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 660 */
     /* type PARROT_FUNCTION_OP, */
@@ -9103,7 +9766,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 661 */
     /* type PARROT_FUNCTION_OP, */
@@ -9115,7 +9779,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 662 */
     /* type PARROT_FUNCTION_OP, */
@@ -9127,7 +9792,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 663 */
     /* type PARROT_INLINE_OP, */
@@ -9139,7 +9805,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 664 */
     /* type PARROT_INLINE_OP, */
@@ -9151,7 +9818,8 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 665 */
     /* type PARROT_INLINE_OP, */
@@ -9163,7 +9831,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 666 */
     /* type PARROT_INLINE_OP, */
@@ -9175,7 +9844,8 @@
     4,
     { PARROT_ARG_SC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 667 */
     /* type PARROT_INLINE_OP, */
@@ -9187,7 +9857,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 668 */
     /* type PARROT_INLINE_OP, */
@@ -9199,7 +9870,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 669 */
     /* type PARROT_INLINE_OP, */
@@ -9211,7 +9883,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 670 */
     /* type PARROT_INLINE_OP, */
@@ -9223,7 +9896,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 671 */
     /* type PARROT_FUNCTION_OP, */
@@ -9235,7 +9909,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 672 */
     /* type PARROT_FUNCTION_OP, */
@@ -9247,7 +9922,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 673 */
     /* type PARROT_FUNCTION_OP, */
@@ -9259,7 +9935,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 674 */
     /* type PARROT_FUNCTION_OP, */
@@ -9271,7 +9948,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 675 */
     /* type PARROT_FUNCTION_OP, */
@@ -9283,7 +9961,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 676 */
     /* type PARROT_FUNCTION_OP, */
@@ -9295,7 +9974,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 677 */
     /* type PARROT_FUNCTION_OP, */
@@ -9307,7 +9987,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 678 */
     /* type PARROT_FUNCTION_OP, */
@@ -9319,7 +10000,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 679 */
     /* type PARROT_INLINE_OP, */
@@ -9331,7 +10013,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 680 */
     /* type PARROT_INLINE_OP, */
@@ -9343,7 +10026,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 681 */
     /* type PARROT_INLINE_OP, */
@@ -9355,7 +10039,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 682 */
     /* type PARROT_INLINE_OP, */
@@ -9367,7 +10052,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 683 */
     /* type PARROT_INLINE_OP, */
@@ -9379,7 +10065,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 684 */
     /* type PARROT_INLINE_OP, */
@@ -9391,7 +10078,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 685 */
     /* type PARROT_INLINE_OP, */
@@ -9403,7 +10091,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 686 */
     /* type PARROT_INLINE_OP, */
@@ -9415,7 +10104,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 687 */
     /* type PARROT_INLINE_OP, */
@@ -9427,7 +10117,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 688 */
     /* type PARROT_INLINE_OP, */
@@ -9439,7 +10130,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 689 */
     /* type PARROT_INLINE_OP, */
@@ -9451,7 +10143,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 690 */
     /* type PARROT_INLINE_OP, */
@@ -9463,7 +10156,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 691 */
     /* type PARROT_INLINE_OP, */
@@ -9475,7 +10169,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 692 */
     /* type PARROT_INLINE_OP, */
@@ -9487,7 +10182,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 693 */
     /* type PARROT_INLINE_OP, */
@@ -9499,7 +10195,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 694 */
     /* type PARROT_INLINE_OP, */
@@ -9511,7 +10208,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 695 */
     /* type PARROT_INLINE_OP, */
@@ -9523,7 +10221,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 696 */
     /* type PARROT_INLINE_OP, */
@@ -9535,7 +10234,8 @@
     3,
     { PARROT_ARG_N, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 697 */
     /* type PARROT_INLINE_OP, */
@@ -9547,7 +10247,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 698 */
     /* type PARROT_INLINE_OP, */
@@ -9559,7 +10260,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 699 */
     /* type PARROT_INLINE_OP, */
@@ -9571,7 +10273,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 700 */
     /* type PARROT_INLINE_OP, */
@@ -9583,7 +10286,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 701 */
     /* type PARROT_INLINE_OP, */
@@ -9595,7 +10299,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 702 */
     /* type PARROT_INLINE_OP, */
@@ -9607,7 +10312,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_N },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 703 */
     /* type PARROT_INLINE_OP, */
@@ -9619,7 +10325,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_NC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 704 */
     /* type PARROT_INLINE_OP, */
@@ -9631,7 +10338,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 705 */
     /* type PARROT_INLINE_OP, */
@@ -9643,7 +10351,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 706 */
     /* type PARROT_INLINE_OP, */
@@ -9655,7 +10364,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 707 */
     /* type PARROT_INLINE_OP, */
@@ -9667,7 +10377,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 708 */
     /* type PARROT_INLINE_OP, */
@@ -9679,7 +10390,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 709 */
     /* type PARROT_INLINE_OP, */
@@ -9691,7 +10403,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 710 */
     /* type PARROT_INLINE_OP, */
@@ -9703,7 +10416,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 711 */
     /* type PARROT_INLINE_OP, */
@@ -9715,7 +10429,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 712 */
     /* type PARROT_INLINE_OP, */
@@ -9727,7 +10442,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 713 */
     /* type PARROT_INLINE_OP, */
@@ -9739,7 +10455,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 714 */
     /* type PARROT_INLINE_OP, */
@@ -9751,7 +10468,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 715 */
     /* type PARROT_INLINE_OP, */
@@ -9763,7 +10481,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 716 */
     /* type PARROT_INLINE_OP, */
@@ -9775,7 +10494,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 717 */
     /* type PARROT_INLINE_OP, */
@@ -9787,7 +10507,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 718 */
     /* type PARROT_INLINE_OP, */
@@ -9799,7 +10520,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 719 */
     /* type PARROT_INLINE_OP, */
@@ -9811,7 +10533,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 720 */
     /* type PARROT_INLINE_OP, */
@@ -9823,7 +10546,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 721 */
     /* type PARROT_INLINE_OP, */
@@ -9835,7 +10559,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 722 */
     /* type PARROT_INLINE_OP, */
@@ -9847,7 +10572,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 723 */
     /* type PARROT_INLINE_OP, */
@@ -9859,7 +10585,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 724 */
     /* type PARROT_INLINE_OP, */
@@ -9871,7 +10598,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 725 */
     /* type PARROT_INLINE_OP, */
@@ -9883,7 +10611,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 726 */
     /* type PARROT_INLINE_OP, */
@@ -9895,7 +10624,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 727 */
     /* type PARROT_INLINE_OP, */
@@ -9907,7 +10637,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 728 */
     /* type PARROT_INLINE_OP, */
@@ -9919,7 +10650,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 729 */
     /* type PARROT_INLINE_OP, */
@@ -9931,7 +10663,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 730 */
     /* type PARROT_INLINE_OP, */
@@ -9943,7 +10676,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 731 */
     /* type PARROT_INLINE_OP, */
@@ -9955,7 +10689,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 732 */
     /* type PARROT_INLINE_OP, */
@@ -9967,7 +10702,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 733 */
     /* type PARROT_INLINE_OP, */
@@ -9979,7 +10715,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 734 */
     /* type PARROT_INLINE_OP, */
@@ -9991,7 +10728,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 735 */
     /* type PARROT_INLINE_OP, */
@@ -10003,7 +10741,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 736 */
     /* type PARROT_INLINE_OP, */
@@ -10015,7 +10754,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KI, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 737 */
     /* type PARROT_INLINE_OP, */
@@ -10027,7 +10767,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KIC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 738 */
     /* type PARROT_INLINE_OP, */
@@ -10039,7 +10780,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 739 */
     /* type PARROT_INLINE_OP, */
@@ -10051,7 +10793,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 740 */
     /* type PARROT_INLINE_OP, */
@@ -10063,7 +10806,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 741 */
     /* type PARROT_INLINE_OP, */
@@ -10075,7 +10819,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 742 */
     /* type PARROT_INLINE_OP, */
@@ -10087,7 +10832,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 743 */
     /* type PARROT_INLINE_OP, */
@@ -10099,7 +10845,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 744 */
     /* type PARROT_INLINE_OP, */
@@ -10111,7 +10858,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_KI },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 745 */
     /* type PARROT_INLINE_OP, */
@@ -10123,7 +10871,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_KIC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 746 */
     /* type PARROT_INLINE_OP, */
@@ -10135,7 +10884,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 747 */
     /* type PARROT_INLINE_OP, */
@@ -10147,7 +10897,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 748 */
     /* type PARROT_INLINE_OP, */
@@ -10159,7 +10910,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 749 */
     /* type PARROT_INLINE_OP, */
@@ -10171,7 +10923,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 750 */
     /* type PARROT_INLINE_OP, */
@@ -10183,7 +10936,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 751 */
     /* type PARROT_INLINE_OP, */
@@ -10195,7 +10949,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_N },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 752 */
     /* type PARROT_INLINE_OP, */
@@ -10207,7 +10962,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 753 */
     /* type PARROT_INLINE_OP, */
@@ -10219,7 +10975,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_NC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 754 */
     /* type PARROT_INLINE_OP, */
@@ -10231,7 +10988,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 755 */
     /* type PARROT_INLINE_OP, */
@@ -10243,7 +11001,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 756 */
     /* type PARROT_INLINE_OP, */
@@ -10255,7 +11014,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 757 */
     /* type PARROT_INLINE_OP, */
@@ -10267,7 +11027,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 758 */
     /* type PARROT_INLINE_OP, */
@@ -10279,7 +11040,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_K, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 759 */
     /* type PARROT_INLINE_OP, */
@@ -10291,7 +11053,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_KC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 760 */
     /* type PARROT_INLINE_OP, */
@@ -10303,7 +11066,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 761 */
     /* type PARROT_INLINE_OP, */
@@ -10315,7 +11079,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 762 */
     /* type PARROT_INLINE_OP, */
@@ -10327,7 +11092,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 763 */
     /* type PARROT_INLINE_OP, */
@@ -10339,7 +11105,8 @@
     4,
     { PARROT_ARG_N, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 764 */
     /* type PARROT_INLINE_OP, */
@@ -10351,7 +11118,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 765 */
     /* type PARROT_INLINE_OP, */
@@ -10363,7 +11131,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 766 */
     /* type PARROT_INLINE_OP, */
@@ -10375,7 +11144,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_K },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 767 */
     /* type PARROT_INLINE_OP, */
@@ -10387,7 +11157,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_KC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 768 */
     /* type PARROT_INLINE_OP, */
@@ -10399,7 +11170,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 769 */
     /* type PARROT_INLINE_OP, */
@@ -10411,7 +11183,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 770 */
     /* type PARROT_INLINE_OP, */
@@ -10423,7 +11196,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 771 */
     /* type PARROT_INLINE_OP, */
@@ -10435,7 +11209,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 772 */
     /* type PARROT_INLINE_OP, */
@@ -10447,7 +11222,8 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 773 */
     /* type PARROT_INLINE_OP, */
@@ -10459,7 +11235,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 774 */
     /* type PARROT_INLINE_OP, */
@@ -10471,7 +11248,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 775 */
     /* type PARROT_INLINE_OP, */
@@ -10483,7 +11261,8 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 776 */
     /* type PARROT_INLINE_OP, */
@@ -10495,7 +11274,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 777 */
     /* type PARROT_INLINE_OP, */
@@ -10507,7 +11287,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 778 */
     /* type PARROT_INLINE_OP, */
@@ -10519,7 +11300,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 779 */
     /* type PARROT_INLINE_OP, */
@@ -10531,7 +11313,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 780 */
     /* type PARROT_INLINE_OP, */
@@ -10543,7 +11326,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 781 */
     /* type PARROT_INLINE_OP, */
@@ -10555,7 +11339,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 782 */
     /* type PARROT_INLINE_OP, */
@@ -10567,7 +11352,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 783 */
     /* type PARROT_INLINE_OP, */
@@ -10579,7 +11365,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 784 */
     /* type PARROT_INLINE_OP, */
@@ -10591,7 +11378,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 785 */
     /* type PARROT_INLINE_OP, */
@@ -10603,7 +11391,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 786 */
     /* type PARROT_INLINE_OP, */
@@ -10615,7 +11404,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 787 */
     /* type PARROT_INLINE_OP, */
@@ -10627,7 +11417,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 788 */
     /* type PARROT_INLINE_OP, */
@@ -10639,7 +11430,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 789 */
     /* type PARROT_INLINE_OP, */
@@ -10651,7 +11443,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 790 */
     /* type PARROT_INLINE_OP, */
@@ -10663,7 +11456,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 791 */
     /* type PARROT_INLINE_OP, */
@@ -10675,7 +11469,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 792 */
     /* type PARROT_INLINE_OP, */
@@ -10687,7 +11482,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 793 */
     /* type PARROT_INLINE_OP, */
@@ -10699,7 +11495,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 794 */
     /* type PARROT_INLINE_OP, */
@@ -10711,7 +11508,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 795 */
     /* type PARROT_INLINE_OP, */
@@ -10723,7 +11521,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 796 */
     /* type PARROT_INLINE_OP, */
@@ -10735,7 +11534,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 797 */
     /* type PARROT_INLINE_OP, */
@@ -10747,7 +11547,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 798 */
     /* type PARROT_INLINE_OP, */
@@ -10759,7 +11560,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 799 */
     /* type PARROT_INLINE_OP, */
@@ -10771,7 +11573,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 800 */
     /* type PARROT_INLINE_OP, */
@@ -10783,7 +11586,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 801 */
     /* type PARROT_INLINE_OP, */
@@ -10795,7 +11599,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 802 */
     /* type PARROT_INLINE_OP, */
@@ -10807,7 +11612,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 803 */
     /* type PARROT_INLINE_OP, */
@@ -10819,7 +11625,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 804 */
     /* type PARROT_INLINE_OP, */
@@ -10831,7 +11638,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 805 */
     /* type PARROT_INLINE_OP, */
@@ -10843,7 +11651,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 806 */
     /* type PARROT_INLINE_OP, */
@@ -10855,7 +11664,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 807 */
     /* type PARROT_INLINE_OP, */
@@ -10867,7 +11677,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 808 */
     /* type PARROT_INLINE_OP, */
@@ -10879,7 +11690,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 809 */
     /* type PARROT_INLINE_OP, */
@@ -10891,7 +11703,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 810 */
     /* type PARROT_INLINE_OP, */
@@ -10903,7 +11716,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 811 */
     /* type PARROT_INLINE_OP, */
@@ -10915,7 +11729,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 812 */
     /* type PARROT_INLINE_OP, */
@@ -10927,7 +11742,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 813 */
     /* type PARROT_FUNCTION_OP, */
@@ -10939,7 +11755,8 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 814 */
     /* type PARROT_FUNCTION_OP, */
@@ -10951,7 +11768,8 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_INOUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 815 */
     /* type PARROT_INLINE_OP, */
@@ -10963,7 +11781,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 816 */
     /* type PARROT_INLINE_OP, */
@@ -10975,7 +11794,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 817 */
     /* type PARROT_INLINE_OP, */
@@ -10987,7 +11807,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 818 */
     /* type PARROT_INLINE_OP, */
@@ -10999,7 +11820,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 819 */
     /* type PARROT_INLINE_OP, */
@@ -11011,7 +11833,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 820 */
     /* type PARROT_INLINE_OP, */
@@ -11023,7 +11846,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 821 */
     /* type PARROT_INLINE_OP, */
@@ -11035,7 +11859,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 822 */
     /* type PARROT_INLINE_OP, */
@@ -11047,7 +11872,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 823 */
     /* type PARROT_INLINE_OP, */
@@ -11059,7 +11885,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 824 */
     /* type PARROT_INLINE_OP, */
@@ -11071,7 +11898,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 825 */
     /* type PARROT_INLINE_OP, */
@@ -11083,7 +11911,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 826 */
     /* type PARROT_INLINE_OP, */
@@ -11095,7 +11924,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 827 */
     /* type PARROT_INLINE_OP, */
@@ -11107,7 +11937,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 828 */
     /* type PARROT_INLINE_OP, */
@@ -11119,7 +11950,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 829 */
     /* type PARROT_INLINE_OP, */
@@ -11131,7 +11963,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 830 */
     /* type PARROT_INLINE_OP, */
@@ -11143,7 +11976,8 @@
     5,
     { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 831 */
     /* type PARROT_INLINE_OP, */
@@ -11155,7 +11989,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 832 */
     /* type PARROT_INLINE_OP, */
@@ -11167,7 +12002,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 833 */
     /* type PARROT_INLINE_OP, */
@@ -11179,7 +12015,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 834 */
     /* type PARROT_INLINE_OP, */
@@ -11191,7 +12028,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 835 */
     /* type PARROT_INLINE_OP, */
@@ -11203,7 +12041,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 836 */
     /* type PARROT_INLINE_OP, */
@@ -11215,7 +12054,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 837 */
     /* type PARROT_INLINE_OP, */
@@ -11227,7 +12067,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 838 */
     /* type PARROT_INLINE_OP, */
@@ -11239,7 +12080,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 839 */
     /* type PARROT_INLINE_OP, */
@@ -11251,7 +12093,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 840 */
     /* type PARROT_INLINE_OP, */
@@ -11263,7 +12106,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 841 */
     /* type PARROT_INLINE_OP, */
@@ -11275,7 +12119,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 842 */
     /* type PARROT_INLINE_OP, */
@@ -11287,7 +12132,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 843 */
     /* type PARROT_INLINE_OP, */
@@ -11299,7 +12145,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 844 */
     /* type PARROT_INLINE_OP, */
@@ -11311,7 +12158,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 845 */
     /* type PARROT_INLINE_OP, */
@@ -11323,7 +12171,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 846 */
     /* type PARROT_INLINE_OP, */
@@ -11335,7 +12184,8 @@
     6,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 847 */
     /* type PARROT_INLINE_OP, */
@@ -11347,7 +12197,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 848 */
     /* type PARROT_INLINE_OP, */
@@ -11359,7 +12210,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 849 */
     /* type PARROT_INLINE_OP, */
@@ -11371,7 +12223,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 850 */
     /* type PARROT_INLINE_OP, */
@@ -11383,7 +12236,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 851 */
     /* type PARROT_INLINE_OP, */
@@ -11395,7 +12249,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 852 */
     /* type PARROT_INLINE_OP, */
@@ -11407,7 +12262,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 853 */
     /* type PARROT_INLINE_OP, */
@@ -11419,7 +12275,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 854 */
     /* type PARROT_INLINE_OP, */
@@ -11431,7 +12288,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 855 */
     /* type PARROT_INLINE_OP, */
@@ -11443,7 +12301,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 856 */
     /* type PARROT_INLINE_OP, */
@@ -11455,7 +12314,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 857 */
     /* type PARROT_INLINE_OP, */
@@ -11467,7 +12327,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 858 */
     /* type PARROT_INLINE_OP, */
@@ -11479,7 +12340,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 859 */
     /* type PARROT_INLINE_OP, */
@@ -11491,7 +12353,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 860 */
     /* type PARROT_INLINE_OP, */
@@ -11503,7 +12366,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 861 */
     /* type PARROT_INLINE_OP, */
@@ -11515,7 +12379,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 862 */
     /* type PARROT_INLINE_OP, */
@@ -11527,7 +12392,8 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 863 */
     /* type PARROT_INLINE_OP, */
@@ -11539,7 +12405,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 864 */
     /* type PARROT_INLINE_OP, */
@@ -11551,7 +12418,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 865 */
     /* type PARROT_INLINE_OP, */
@@ -11563,7 +12431,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 866 */
     /* type PARROT_INLINE_OP, */
@@ -11575,7 +12444,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 867 */
     /* type PARROT_INLINE_OP, */
@@ -11587,7 +12457,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 868 */
     /* type PARROT_INLINE_OP, */
@@ -11599,7 +12470,8 @@
     4,
     { PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 869 */
     /* type PARROT_INLINE_OP, */
@@ -11611,7 +12483,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 870 */
     /* type PARROT_INLINE_OP, */
@@ -11623,7 +12496,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 871 */
     /* type PARROT_INLINE_OP, */
@@ -11635,7 +12509,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 872 */
     /* type PARROT_INLINE_OP, */
@@ -11647,7 +12522,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 873 */
     /* type PARROT_INLINE_OP, */
@@ -11659,7 +12535,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 874 */
     /* type PARROT_INLINE_OP, */
@@ -11671,7 +12548,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 875 */
     /* type PARROT_FUNCTION_OP, */
@@ -11683,7 +12561,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 876 */
     /* type PARROT_FUNCTION_OP, */
@@ -11695,7 +12574,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 877 */
     /* type PARROT_FUNCTION_OP, */
@@ -11707,7 +12587,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 878 */
     /* type PARROT_FUNCTION_OP, */
@@ -11719,7 +12600,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 879 */
     /* type PARROT_FUNCTION_OP, */
@@ -11731,7 +12613,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 880 */
     /* type PARROT_FUNCTION_OP, */
@@ -11743,7 +12626,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 881 */
     /* type PARROT_FUNCTION_OP, */
@@ -11755,7 +12639,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 882 */
     /* type PARROT_FUNCTION_OP, */
@@ -11767,7 +12652,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 883 */
     /* type PARROT_FUNCTION_OP, */
@@ -11779,7 +12665,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 884 */
     /* type PARROT_FUNCTION_OP, */
@@ -11791,7 +12678,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 885 */
     /* type PARROT_FUNCTION_OP, */
@@ -11803,7 +12691,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 886 */
     /* type PARROT_FUNCTION_OP, */
@@ -11815,7 +12704,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 887 */
     /* type PARROT_FUNCTION_OP, */
@@ -11827,7 +12717,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 888 */
     /* type PARROT_FUNCTION_OP, */
@@ -11839,7 +12730,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 889 */
     /* type PARROT_FUNCTION_OP, */
@@ -11851,7 +12743,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 890 */
     /* type PARROT_FUNCTION_OP, */
@@ -11863,7 +12756,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 891 */
     /* type PARROT_FUNCTION_OP, */
@@ -11875,7 +12769,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 892 */
     /* type PARROT_FUNCTION_OP, */
@@ -11887,7 +12782,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 893 */
     /* type PARROT_FUNCTION_OP, */
@@ -11899,7 +12795,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 894 */
     /* type PARROT_FUNCTION_OP, */
@@ -11911,7 +12808,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 895 */
     /* type PARROT_FUNCTION_OP, */
@@ -11923,7 +12821,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 896 */
     /* type PARROT_FUNCTION_OP, */
@@ -11935,7 +12834,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 897 */
     /* type PARROT_FUNCTION_OP, */
@@ -11947,7 +12847,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 898 */
     /* type PARROT_FUNCTION_OP, */
@@ -11959,7 +12860,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 899 */
     /* type PARROT_FUNCTION_OP, */
@@ -11971,7 +12873,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 900 */
     /* type PARROT_FUNCTION_OP, */
@@ -11983,7 +12886,8 @@
     4,
     { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 901 */
     /* type PARROT_INLINE_OP, */
@@ -11995,7 +12899,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 902 */
     /* type PARROT_INLINE_OP, */
@@ -12007,7 +12912,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 903 */
     /* type PARROT_INLINE_OP, */
@@ -12019,7 +12925,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 904 */
     /* type PARROT_INLINE_OP, */
@@ -12031,7 +12938,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 905 */
     /* type PARROT_INLINE_OP, */
@@ -12043,7 +12951,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 906 */
     /* type PARROT_INLINE_OP, */
@@ -12055,7 +12964,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 907 */
     /* type PARROT_INLINE_OP, */
@@ -12067,7 +12977,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 908 */
     /* type PARROT_INLINE_OP, */
@@ -12079,7 +12990,8 @@
     5,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 909 */
     /* type PARROT_INLINE_OP, */
@@ -12091,7 +13003,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 910 */
     /* type PARROT_INLINE_OP, */
@@ -12103,7 +13016,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 911 */
     /* type PARROT_INLINE_OP, */
@@ -12115,7 +13029,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 912 */
     /* type PARROT_INLINE_OP, */
@@ -12127,7 +13042,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 913 */
     /* type PARROT_INLINE_OP, */
@@ -12139,7 +13055,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 914 */
     /* type PARROT_INLINE_OP, */
@@ -12151,7 +13068,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 915 */
     /* type PARROT_INLINE_OP, */
@@ -12163,7 +13081,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 916 */
     /* type PARROT_INLINE_OP, */
@@ -12175,7 +13094,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 917 */
     /* type PARROT_INLINE_OP, */
@@ -12187,7 +13107,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 918 */
     /* type PARROT_INLINE_OP, */
@@ -12199,7 +13120,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 919 */
     /* type PARROT_INLINE_OP, */
@@ -12211,7 +13133,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 920 */
     /* type PARROT_INLINE_OP, */
@@ -12223,7 +13146,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 921 */
     /* type PARROT_INLINE_OP, */
@@ -12235,7 +13159,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 922 */
     /* type PARROT_INLINE_OP, */
@@ -12247,7 +13172,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 923 */
     /* type PARROT_INLINE_OP, */
@@ -12259,7 +13185,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 924 */
     /* type PARROT_INLINE_OP, */
@@ -12271,7 +13198,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 925 */
     /* type PARROT_INLINE_OP, */
@@ -12283,7 +13211,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 926 */
     /* type PARROT_INLINE_OP, */
@@ -12295,7 +13224,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 927 */
     /* type PARROT_INLINE_OP, */
@@ -12307,7 +13237,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 928 */
     /* type PARROT_INLINE_OP, */
@@ -12319,7 +13250,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 929 */
     /* type PARROT_INLINE_OP, */
@@ -12331,7 +13263,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 930 */
     /* type PARROT_INLINE_OP, */
@@ -12343,7 +13276,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 931 */
     /* type PARROT_INLINE_OP, */
@@ -12355,7 +13289,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 932 */
     /* type PARROT_INLINE_OP, */
@@ -12367,7 +13302,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 933 */
     /* type PARROT_INLINE_OP, */
@@ -12379,7 +13315,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 934 */
     /* type PARROT_INLINE_OP, */
@@ -12391,7 +13328,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 935 */
     /* type PARROT_INLINE_OP, */
@@ -12403,7 +13341,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 936 */
     /* type PARROT_INLINE_OP, */
@@ -12415,7 +13354,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 937 */
     /* type PARROT_INLINE_OP, */
@@ -12427,7 +13367,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 938 */
     /* type PARROT_INLINE_OP, */
@@ -12439,7 +13380,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 939 */
     /* type PARROT_INLINE_OP, */
@@ -12451,7 +13393,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 940 */
     /* type PARROT_INLINE_OP, */
@@ -12463,7 +13406,8 @@
     6,
     { PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0, 0 }
+    { 0, 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 941 */
     /* type PARROT_FUNCTION_OP, */
@@ -12475,7 +13419,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 942 */
     /* type PARROT_FUNCTION_OP, */
@@ -12487,7 +13432,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 943 */
     /* type PARROT_FUNCTION_OP, */
@@ -12499,7 +13445,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 944 */
     /* type PARROT_INLINE_OP, */
@@ -12511,7 +13458,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 945 */
     /* type PARROT_INLINE_OP, */
@@ -12523,7 +13471,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 946 */
     /* type PARROT_INLINE_OP, */
@@ -12535,7 +13484,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 947 */
     /* type PARROT_INLINE_OP, */
@@ -12547,7 +13497,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 948 */
     /* type PARROT_FUNCTION_OP, */
@@ -12559,7 +13510,8 @@
     2,
     { PARROT_ARG_S },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 949 */
     /* type PARROT_FUNCTION_OP, */
@@ -12571,7 +13523,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 950 */
     /* type PARROT_FUNCTION_OP, */
@@ -12583,7 +13536,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 951 */
     /* type PARROT_INLINE_OP, */
@@ -12595,7 +13549,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 952 */
     /* type PARROT_INLINE_OP, */
@@ -12607,7 +13562,8 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 953 */
     /* type PARROT_INLINE_OP, */
@@ -12619,7 +13575,8 @@
     2,
     { PARROT_ARG_I },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 954 */
     /* type PARROT_INLINE_OP, */
@@ -12631,7 +13588,8 @@
     2,
     { PARROT_ARG_IC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 955 */
     /* type PARROT_INLINE_OP, */
@@ -12643,7 +13601,8 @@
     2,
     { PARROT_ARG_N },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 956 */
     /* type PARROT_INLINE_OP, */
@@ -12655,7 +13614,8 @@
     2,
     { PARROT_ARG_NC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 957 */
     /* type PARROT_FUNCTION_OP, */
@@ -12667,7 +13627,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 958 */
     /* type PARROT_FUNCTION_OP, */
@@ -12679,7 +13640,8 @@
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 959 */
     /* type PARROT_FUNCTION_OP, */
@@ -12691,7 +13653,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 960 */
     /* type PARROT_FUNCTION_OP, */
@@ -12703,7 +13666,8 @@
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 961 */
     /* type PARROT_FUNCTION_OP, */
@@ -12715,7 +13679,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 962 */
     /* type PARROT_FUNCTION_OP, */
@@ -12727,7 +13692,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 963 */
     /* type PARROT_FUNCTION_OP, */
@@ -12739,7 +13705,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 964 */
     /* type PARROT_FUNCTION_OP, */
@@ -12751,7 +13718,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 965 */
     /* type PARROT_FUNCTION_OP, */
@@ -12763,7 +13731,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 966 */
     /* type PARROT_FUNCTION_OP, */
@@ -12775,7 +13744,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 967 */
     /* type PARROT_FUNCTION_OP, */
@@ -12787,7 +13757,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 968 */
     /* type PARROT_FUNCTION_OP, */
@@ -12799,7 +13770,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 969 */
     /* type PARROT_FUNCTION_OP, */
@@ -12811,7 +13783,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 970 */
     /* type PARROT_FUNCTION_OP, */
@@ -12823,7 +13796,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 971 */
     /* type PARROT_FUNCTION_OP, */
@@ -12835,7 +13809,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 972 */
     /* type PARROT_FUNCTION_OP, */
@@ -12847,7 +13822,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 973 */
     /* type PARROT_FUNCTION_OP, */
@@ -12859,7 +13835,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 974 */
     /* type PARROT_FUNCTION_OP, */
@@ -12871,7 +13848,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 975 */
     /* type PARROT_FUNCTION_OP, */
@@ -12883,7 +13861,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 976 */
     /* type PARROT_FUNCTION_OP, */
@@ -12895,7 +13874,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 977 */
     /* type PARROT_FUNCTION_OP, */
@@ -12907,7 +13887,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 978 */
     /* type PARROT_FUNCTION_OP, */
@@ -12919,7 +13900,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 979 */
     /* type PARROT_FUNCTION_OP, */
@@ -12931,7 +13913,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 980 */
     /* type PARROT_FUNCTION_OP, */
@@ -12943,7 +13926,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 981 */
     /* type PARROT_FUNCTION_OP, */
@@ -12955,7 +13939,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 982 */
     /* type PARROT_FUNCTION_OP, */
@@ -12967,7 +13952,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 983 */
     /* type PARROT_FUNCTION_OP, */
@@ -12979,7 +13965,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 984 */
     /* type PARROT_FUNCTION_OP, */
@@ -12991,7 +13978,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 985 */
     /* type PARROT_FUNCTION_OP, */
@@ -13003,7 +13991,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 986 */
     /* type PARROT_FUNCTION_OP, */
@@ -13015,7 +14004,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 987 */
     /* type PARROT_FUNCTION_OP, */
@@ -13027,7 +14017,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 988 */
     /* type PARROT_FUNCTION_OP, */
@@ -13039,7 +14030,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 989 */
     /* type PARROT_FUNCTION_OP, */
@@ -13051,7 +14043,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 990 */
     /* type PARROT_FUNCTION_OP, */
@@ -13063,7 +14056,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 991 */
     /* type PARROT_FUNCTION_OP, */
@@ -13075,7 +14069,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 992 */
     /* type PARROT_FUNCTION_OP, */
@@ -13087,7 +14082,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 993 */
     /* type PARROT_FUNCTION_OP, */
@@ -13099,7 +14095,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 994 */
     /* type PARROT_FUNCTION_OP, */
@@ -13111,7 +14108,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 995 */
     /* type PARROT_FUNCTION_OP, */
@@ -13123,7 +14121,8 @@
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 996 */
     /* type PARROT_FUNCTION_OP, */
@@ -13135,7 +14134,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 997 */
     /* type PARROT_FUNCTION_OP, */
@@ -13147,7 +14147,8 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 998 */
     /* type PARROT_FUNCTION_OP, */
@@ -13159,7 +14160,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 999 */
     /* type PARROT_FUNCTION_OP, */
@@ -13171,7 +14173,8 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1000 */
     /* type PARROT_FUNCTION_OP, */
@@ -13183,7 +14186,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 1001 */
     /* type PARROT_FUNCTION_OP, */
@@ -13195,7 +14199,8 @@
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 1002 */
     /* type PARROT_FUNCTION_OP, */
@@ -13207,7 +14212,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1003 */
     /* type PARROT_FUNCTION_OP, */
@@ -13219,7 +14225,8 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1004 */
     /* type PARROT_FUNCTION_OP, */
@@ -13231,7 +14238,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1005 */
     /* type PARROT_FUNCTION_OP, */
@@ -13243,7 +14251,8 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1006 */
     /* type PARROT_FUNCTION_OP, */
@@ -13255,7 +14264,8 @@
     3,
     { PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 1007 */
     /* type PARROT_FUNCTION_OP, */
@@ -13267,7 +14277,8 @@
     3,
     { PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 1008 */
     /* type PARROT_FUNCTION_OP, */
@@ -13279,7 +14290,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1009 */
     /* type PARROT_FUNCTION_OP, */
@@ -13291,7 +14303,8 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1010 */
     /* type PARROT_FUNCTION_OP, */
@@ -13303,7 +14316,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1011 */
     /* type PARROT_FUNCTION_OP, */
@@ -13315,7 +14329,8 @@
     4,
     { PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1012 */
     /* type PARROT_FUNCTION_OP, */
@@ -13327,7 +14342,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 1013 */
     /* type PARROT_FUNCTION_OP, */
@@ -13339,7 +14355,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 1014 */
     /* type PARROT_INLINE_OP, */
@@ -13351,7 +14368,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 1015 */
     /* type PARROT_INLINE_OP, */
@@ -13363,7 +14381,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 1016 */
     /* type PARROT_FUNCTION_OP, */
@@ -13375,7 +14394,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 1017 */
     /* type PARROT_INLINE_OP, */
@@ -13387,7 +14407,8 @@
     3,
     { PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 1 }
+    { 0, 1 },
+    &core_op_lib
   },
   { /* 1018 */
     /* type PARROT_INLINE_OP, */
@@ -13399,7 +14420,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 1019 */
     /* type PARROT_INLINE_OP, */
@@ -13411,7 +14433,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1020 */
     /* type PARROT_INLINE_OP, */
@@ -13423,7 +14446,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1021 */
     /* type PARROT_INLINE_OP, */
@@ -13435,7 +14459,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1022 */
     /* type PARROT_INLINE_OP, */
@@ -13447,7 +14472,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1023 */
     /* type PARROT_INLINE_OP, */
@@ -13459,7 +14485,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1024 */
     /* type PARROT_INLINE_OP, */
@@ -13471,7 +14498,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1025 */
     /* type PARROT_INLINE_OP, */
@@ -13483,7 +14511,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1026 */
     /* type PARROT_INLINE_OP, */
@@ -13495,7 +14524,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1027 */
     /* type PARROT_INLINE_OP, */
@@ -13507,7 +14537,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1028 */
     /* type PARROT_INLINE_OP, */
@@ -13519,7 +14550,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1029 */
     /* type PARROT_INLINE_OP, */
@@ -13531,7 +14563,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1030 */
     /* type PARROT_INLINE_OP, */
@@ -13543,7 +14576,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_IC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1031 */
     /* type PARROT_INLINE_OP, */
@@ -13555,7 +14589,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1032 */
     /* type PARROT_INLINE_OP, */
@@ -13567,7 +14602,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_I, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1033 */
     /* type PARROT_INLINE_OP, */
@@ -13579,7 +14615,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1034 */
     /* type PARROT_INLINE_OP, */
@@ -13591,7 +14628,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_IC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1035 */
     /* type PARROT_INLINE_OP, */
@@ -13603,7 +14641,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1036 */
     /* type PARROT_INLINE_OP, */
@@ -13615,7 +14654,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1037 */
     /* type PARROT_INLINE_OP, */
@@ -13627,7 +14667,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1038 */
     /* type PARROT_INLINE_OP, */
@@ -13639,7 +14680,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1039 */
     /* type PARROT_INLINE_OP, */
@@ -13651,7 +14693,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1040 */
     /* type PARROT_INLINE_OP, */
@@ -13663,7 +14706,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1041 */
     /* type PARROT_INLINE_OP, */
@@ -13675,7 +14719,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1042 */
     /* type PARROT_INLINE_OP, */
@@ -13687,7 +14732,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1043 */
     /* type PARROT_INLINE_OP, */
@@ -13699,7 +14745,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1044 */
     /* type PARROT_INLINE_OP, */
@@ -13711,7 +14758,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1045 */
     /* type PARROT_INLINE_OP, */
@@ -13723,7 +14771,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1046 */
     /* type PARROT_INLINE_OP, */
@@ -13735,7 +14784,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1047 */
     /* type PARROT_INLINE_OP, */
@@ -13747,7 +14797,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1048 */
     /* type PARROT_INLINE_OP, */
@@ -13759,7 +14810,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_P, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1049 */
     /* type PARROT_INLINE_OP, */
@@ -13771,7 +14823,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1050 */
     /* type PARROT_INLINE_OP, */
@@ -13783,7 +14836,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_PC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1051 */
     /* type PARROT_INLINE_OP, */
@@ -13795,7 +14849,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1052 */
     /* type PARROT_INLINE_OP, */
@@ -13807,7 +14862,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_I, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1053 */
     /* type PARROT_INLINE_OP, */
@@ -13819,7 +14875,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1054 */
     /* type PARROT_INLINE_OP, */
@@ -13831,7 +14888,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_IC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1055 */
     /* type PARROT_INLINE_OP, */
@@ -13843,7 +14901,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1056 */
     /* type PARROT_INLINE_OP, */
@@ -13855,7 +14914,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_I, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1057 */
     /* type PARROT_INLINE_OP, */
@@ -13867,7 +14927,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1058 */
     /* type PARROT_INLINE_OP, */
@@ -13879,7 +14940,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_IC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1059 */
     /* type PARROT_INLINE_OP, */
@@ -13891,7 +14953,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1060 */
     /* type PARROT_INLINE_OP, */
@@ -13903,7 +14966,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1061 */
     /* type PARROT_INLINE_OP, */
@@ -13915,7 +14979,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1062 */
     /* type PARROT_INLINE_OP, */
@@ -13927,7 +14992,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_P },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1063 */
     /* type PARROT_INLINE_OP, */
@@ -13939,7 +15005,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1064 */
     /* type PARROT_INLINE_OP, */
@@ -13951,7 +15018,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_S, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1065 */
     /* type PARROT_INLINE_OP, */
@@ -13963,7 +15031,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1066 */
     /* type PARROT_INLINE_OP, */
@@ -13975,7 +15044,8 @@
     5,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_SC, PARROT_ARG_PC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0, 0 }
+    { 0, 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1067 */
     /* type PARROT_FUNCTION_OP, */
@@ -13987,7 +15057,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1068 */
     /* type PARROT_FUNCTION_OP, */
@@ -13999,7 +15070,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1069 */
     /* type PARROT_FUNCTION_OP, */
@@ -14011,7 +15083,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1070 */
     /* type PARROT_FUNCTION_OP, */
@@ -14023,7 +15096,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1071 */
     /* type PARROT_FUNCTION_OP, */
@@ -14035,7 +15109,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1072 */
     /* type PARROT_FUNCTION_OP, */
@@ -14047,7 +15122,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1073 */
     /* type PARROT_FUNCTION_OP, */
@@ -14059,7 +15135,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1074 */
     /* type PARROT_FUNCTION_OP, */
@@ -14071,7 +15148,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1075 */
     /* type PARROT_FUNCTION_OP, */
@@ -14083,7 +15161,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1076 */
     /* type PARROT_FUNCTION_OP, */
@@ -14095,7 +15174,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_I },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1077 */
     /* type PARROT_FUNCTION_OP, */
@@ -14107,7 +15187,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_P, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1078 */
     /* type PARROT_FUNCTION_OP, */
@@ -14119,7 +15200,8 @@
     4,
     { PARROT_ARG_P, PARROT_ARG_PC, PARROT_ARG_IC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
-    { 0, 0, 0 }
+    { 0, 0, 0 },
+    &core_op_lib
   },
   { /* 1079 */
     /* type PARROT_FUNCTION_OP, */
@@ -14131,7 +15213,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_S },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 1080 */
     /* type PARROT_FUNCTION_OP, */
@@ -14143,7 +15226,8 @@
     3,
     { PARROT_ARG_I, PARROT_ARG_SC },
     { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
-    { 0, 0 }
+    { 0, 0 },
+    &core_op_lib
   },
   { /* 1081 */
     /* type PARROT_FUNCTION_OP, */
@@ -14155,7 +15239,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 1082 */
     /* type PARROT_FUNCTION_OP, */
@@ -14167,7 +15252,8 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 1083 */
     /* type PARROT_FUNCTION_OP, */
@@ -14179,7 +15265,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_OUT },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 1084 */
     /* type PARROT_FUNCTION_OP, */
@@ -14191,7 +15278,8 @@
     2,
     { PARROT_ARG_P },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 1085 */
     /* type PARROT_FUNCTION_OP, */
@@ -14203,7 +15291,8 @@
     2,
     { PARROT_ARG_PC },
     { PARROT_ARGDIR_IN },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
   { /* 1086 */
     /* type PARROT_FUNCTION_OP, */
@@ -14215,7 +15304,8 @@
     1,
     { (arg_type_t) 0 },
     { (arg_dir_t) 0 },
-    { 0 }
+    { 0 },
+    &core_op_lib
   },
 
 };
@@ -25137,9 +26227,10 @@
 ** op lib descriptor:
 */
 
-static op_lib_t core_op_lib = {
-  "core",               /* name */
-  "",             /* suffix */
+/* XXX should be static, but C++ doesn't want to play ball */
+op_lib_t core_op_lib = {
+  "core_ops",                /* name */
+  "",                  /* suffix */
   PARROT_FUNCTION_CORE,                       /* core_type = PARROT_XX_CORE */
   0,                                /* flags */
   2,    /* major_version */
@@ -25171,11 +26262,13 @@
     op_info_t * info;
     struct hop *next;
 } HOP;
+
+static HOP *hop_buckets;
 static HOP **hop;
 
 static void hop_init(PARROT_INTERP);
 static size_t hash_str(const char *str);
-static void store_op(PARROT_INTERP, op_info_t *info, int full);
+static void store_op(PARROT_INTERP, op_info_t *info, HOP *p, const char *name);
 
 /* XXX on changing interpreters, this should be called,
    through a hook */
@@ -25207,60 +26300,65 @@
     return key;
 }
 
-static void store_op(PARROT_INTERP, op_info_t *info, int full)
+
+static void store_op(PARROT_INTERP, op_info_t *info, HOP *p, const char *name)
 {
-    HOP * const p     = mem_gc_allocate_zeroed_typed(interp, HOP);
-    const size_t hidx =
-        hash_str(full ? info->full_name : info->name) % OP_HASH_SIZE;
+    const size_t hidx = hash_str(name) % OP_HASH_SIZE;
 
-    p->info   = info;
-    p->next   = hop[hidx];
-    hop[hidx] = p;
+    p->info           = info;
+    p->next           = hop[hidx];
+    hop[hidx]         = p;
 }
 
-static int get_op(PARROT_INTERP, const char * name, int full)
+static int get_op(PARROT_INTERP, const char *name, int full)
 {
-    const HOP * p;
+    const HOP   *p;
     const size_t hidx = hash_str(name) % OP_HASH_SIZE;
+
     if (!hop) {
         hop = mem_gc_allocate_n_zeroed_typed(interp, OP_HASH_SIZE,HOP *);
         hop_init(interp);
     }
+
     for (p = hop[hidx]; p; p = p->next) {
-        if(STREQ(name, full ? p->info->full_name : p->info->name))
+        if (STREQ(name, full ? p->info->full_name : p->info->name))
             return p->info - core_op_lib.op_info_table;
     }
+
     return -1;
 }
 
+
 static void hop_init(PARROT_INTERP)
 {
-    size_t i;
     op_info_t * const info = core_op_lib.op_info_table;
+
+    /* allocate the storage all in one chunk
+     * yes, this is profligate, but we can tighten it later */
+    HOP *hops = hop_buckets =
+        mem_gc_allocate_n_zeroed_typed(interp, core_op_lib.op_count * 2, HOP );
+
+    size_t i;
+
     /* store full names */
-    for (i = 0; i < core_op_lib.op_count; i++)
-        store_op(interp, info + i, 1);
-    /* plus one short name */
-    for (i = 0; i < core_op_lib.op_count; i++)
-        if (get_op(interp, info[i].name, 0) == -1)
-            store_op(interp, info + i, 0);
+    for (i = 0; i < core_op_lib.op_count; i++) {
+        store_op(interp, info + i, hops++, info[i].full_name);
+
+        /* plus one short name */
+        if (i && info[i - 1].name != info[i].name)
+            store_op(interp, info + i, hops++, info[i].name);
+    }
 }
 
 static void hop_deinit(PARROT_INTERP)
 {
-    if (hop) {
-        size_t i;
-        for (i = 0; i < OP_HASH_SIZE; i++) {
-            HOP *p = hop[i];
-            while (p) {
-                HOP * const next = p->next;
-                mem_gc_free(interp, p);
-                p = next;
-            }
-        }
+    if (hop)
         mem_sys_free(hop);
-        hop = NULL;
-    }
+    if (hop_buckets)
+        mem_gc_free(interp, hop_buckets);
+
+    hop         = NULL;
+    hop_buckets = NULL;
 }
 op_lib_t *
 Parrot_DynOp_core_2_6_0(PARROT_INTERP, long init) {

Modified: branches/gsoc_threads/src/packfile.c
==============================================================================
--- branches/gsoc_threads/src/packfile.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/packfile.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -25,15 +25,18 @@
 */
 
 #include "parrot/parrot.h"
+#include "parrot/packfile.h"
 #include "parrot/embed.h"
 #include "parrot/extend.h"
-#include "parrot/packfile.h"
+#include "parrot/dynext.h"
 #include "parrot/runcore_api.h"
 #include "../compilers/imcc/imc.h"
 #include "packfile.str"
 #include "pmc/pmc_sub.h"
 #include "pmc/pmc_key.h"
 #include "pmc/pmc_callcontext.h"
+#include "pmc/pmc_parrotlibrary.h"
+#include "parrot/oplib/core_ops.h"
 
 /* HEADERIZER HFILE: include/parrot/packfile.h */
 
@@ -53,6 +56,31 @@
     SHIM(int add))
         __attribute__nonnull__(1);
 
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static opcode_t * byte_code_pack(PARROT_INTERP,
+    ARGMOD(PackFile_Segment *self),
+    ARGOUT(opcode_t *cursor))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*self)
+        FUNC_MODIFIES(*cursor);
+
+static size_t byte_code_packed_size(SHIM_INTERP,
+    ARGIN(PackFile_Segment *self))
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static const opcode_t * byte_code_unpack(PARROT_INTERP,
+    ARGMOD(PackFile_Segment *self),
+    ARGIN(const opcode_t *cursor))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*self);
+
 static void clone_constant(PARROT_INTERP,
     ARGIN(PackFile_Constant *old_const),
     ARGMOD(PackFile_Constant *new_const))
@@ -353,6 +381,16 @@
     , PARROT_ASSERT_ARG(self))
 #define ASSERT_ARGS_byte_code_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_byte_code_pack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(self) \
+    , PARROT_ASSERT_ARG(cursor))
+#define ASSERT_ARGS_byte_code_packed_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_byte_code_unpack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(self) \
+    , PARROT_ASSERT_ARG(cursor))
 #define ASSERT_ARGS_clone_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(old_const) \
@@ -1629,7 +1667,8 @@
 pf_register_standard_funcs(PARROT_INTERP, ARGMOD(PackFile *pf))
 {
     ASSERT_ARGS(pf_register_standard_funcs)
-    PackFile_funcs dirf = {
+
+    static const PackFile_funcs dirf = {
         directory_new,
         directory_destroy,
         directory_packed_size,
@@ -1638,7 +1677,7 @@
         directory_dump
     };
 
-    PackFile_funcs defaultf = {
+    static const PackFile_funcs defaultf = {
         PackFile_Segment_new,
         (PackFile_Segment_destroy_func_t)     NULLfunc,
         (PackFile_Segment_packed_size_func_t) NULLfunc,
@@ -1647,7 +1686,7 @@
         default_dump
     };
 
-    PackFile_funcs fixupf = {
+    static const PackFile_funcs fixupf = {
         fixup_new,
         fixup_destroy,
         fixup_packed_size,
@@ -1656,7 +1695,7 @@
         default_dump
     };
 
-    PackFile_funcs constf = {
+    static const PackFile_funcs constf = {
         const_new,
         const_destroy,
         PackFile_ConstTable_pack_size,
@@ -1665,16 +1704,16 @@
         default_dump
     };
 
-    PackFile_funcs bytef = {
+    static const PackFile_funcs bytef = {
         byte_code_new,
         byte_code_destroy,
-        (PackFile_Segment_packed_size_func_t) NULLfunc,
-        (PackFile_Segment_pack_func_t)        NULLfunc,
-        (PackFile_Segment_unpack_func_t)      NULLfunc,
+        byte_code_packed_size,
+        byte_code_pack,
+        byte_code_unpack,
         default_dump
     };
 
-    const PackFile_funcs debugf = {
+    static const PackFile_funcs debugf = {
         pf_debug_new,
         pf_debug_destroy,
         pf_debug_packed_size,
@@ -1683,7 +1722,7 @@
         pf_debug_dump
     };
 
-    const PackFile_funcs annotationf = {
+    static const PackFile_funcs annotationf = {
         PackFile_Annotations_new,
         PackFile_Annotations_destroy,
         PackFile_Annotations_packed_size,
@@ -2592,9 +2631,19 @@
     ASSERT_ARGS(byte_code_destroy)
     PackFile_ByteCode * const byte_code = (PackFile_ByteCode *)self;
 
-    byte_code->fixups      = NULL;
-    byte_code->const_table = NULL;
-    byte_code->debugs      = NULL;
+    if (byte_code->op_func_table)
+        mem_gc_free(interp, byte_code->op_func_table);
+    if (byte_code->op_info_table)
+        mem_gc_free(interp, byte_code->op_info_table);
+    if (byte_code->op_mapping.libs)
+        mem_gc_free(interp, byte_code->op_mapping.libs);
+
+    byte_code->fixups          = NULL;
+    byte_code->const_table     = NULL;
+    byte_code->debugs          = NULL;
+    byte_code->op_mapping.libs = NULL;
+    byte_code->op_func_table   = NULL;
+    byte_code->op_info_table   = NULL;
 }
 
 
@@ -2620,6 +2669,206 @@
     return (PackFile_Segment *) byte_code;
 }
 
+/*
+
+=item C<static size_t byte_code_packed_size(PARROT_INTERP, PackFile_Segment
+*self)>
+
+Computes the size in multiples of C<opcode_t> required to store the passed
+C<PackFile_ByteCode>.
+
+=cut
+
+*/
+
+static size_t
+byte_code_packed_size(SHIM_INTERP, ARGIN(PackFile_Segment *self))
+{
+    ASSERT_ARGS(byte_code_packed_size)
+    PackFile_ByteCode * const byte_code = (PackFile_ByteCode *)self;
+    size_t size;
+    int i;
+
+    size = 2; /* op_count + n_libs */
+
+    for (i = 0; i < byte_code->op_mapping.n_libs; i++) {
+        PackFile_ByteCode_OpMappingEntry * const entry = &byte_code->op_mapping.libs[i];
+
+        /* dynoplib data */
+        size += PF_size_cstring(entry->lib->name);
+        size += 3; /* major + minor + patch */
+
+        /* op entries */
+        size += 1;                /* n_ops */
+        size += entry->n_ops * 2; /* lib_ops and table_ops */
+    }
+
+    return size;
+}
+
+/*
+
+=item C<static opcode_t * byte_code_pack(PARROT_INTERP, PackFile_Segment *self,
+opcode_t *cursor)>
+
+Stores the passed C<PackFile_ByteCode> segment in bytecode.
+
+=cut
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static opcode_t *
+byte_code_pack(PARROT_INTERP, ARGMOD(PackFile_Segment *self), ARGOUT(opcode_t *cursor))
+{
+    ASSERT_ARGS(byte_code_pack)
+    PackFile_ByteCode * const byte_code = (PackFile_ByteCode *)self;
+    int i, j;
+
+    *cursor++ = byte_code->op_count;
+    *cursor++ = byte_code->op_mapping.n_libs;
+
+    for (i = 0; i < byte_code->op_mapping.n_libs; i++) {
+        PackFile_ByteCode_OpMappingEntry * const entry = &byte_code->op_mapping.libs[i];
+
+        /* dynoplib data */
+        cursor    = PF_store_cstring(cursor, entry->lib->name);
+        *cursor++ = entry->lib->major_version;
+        *cursor++ = entry->lib->minor_version;
+        *cursor++ = entry->lib->patch_version;
+
+        /* op entries */
+        *cursor++ = entry->n_ops;
+        for (j = 0; j < entry->n_ops; j++) {
+            *cursor++ = entry->table_ops[j];
+            *cursor++ = entry->lib_ops[j];
+        }
+    }
+
+    return cursor;
+}
+
+/*
+
+=item C<static const opcode_t * byte_code_unpack(PARROT_INTERP, PackFile_Segment
+*self, const opcode_t *cursor)>
+
+Unpacks a bytecode segment into the passed C<PackFile_ByteCode>.
+
+=cut
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static const opcode_t *
+byte_code_unpack(PARROT_INTERP, ARGMOD(PackFile_Segment *self), ARGIN(const opcode_t *cursor))
+{
+    ASSERT_ARGS(byte_code_unpack)
+    PackFile_ByteCode * const byte_code = (PackFile_ByteCode *)self;
+    int i;
+    int total_ops = 0;
+
+    byte_code->op_count          = PF_fetch_opcode(self->pf, &cursor);
+    byte_code->op_func_table     = mem_gc_allocate_n_zeroed_typed(interp,
+                                        byte_code->op_count, op_func_t);
+    byte_code->op_info_table     = mem_gc_allocate_n_zeroed_typed(interp,
+                                        byte_code->op_count, op_info_t *);
+
+
+    byte_code->op_mapping.n_libs = PF_fetch_opcode(self->pf, &cursor);
+    byte_code->op_mapping.libs   = mem_gc_allocate_n_zeroed_typed(interp,
+                                    byte_code->op_mapping.n_libs,
+                                    PackFile_ByteCode_OpMappingEntry);
+
+    for (i = 0; i < byte_code->op_mapping.n_libs; i++) {
+        PackFile_ByteCode_OpMappingEntry * const entry = &byte_code->op_mapping.libs[i];
+
+        /* dynoplib data */
+        {
+            char * const    lib_name = PF_fetch_cstring(interp, self->pf, &cursor);
+            const opcode_t  major    = PF_fetch_opcode(self->pf, &cursor);
+            const opcode_t  minor    = PF_fetch_opcode(self->pf, &cursor);
+            const opcode_t  patch    = PF_fetch_opcode(self->pf, &cursor);
+
+            /* XXX
+             * broken encapsulation => should make this data easier to access somehow
+             */
+            if (STREQ(lib_name, PARROT_CORE_OPLIB_NAME)) {
+                entry->lib = PARROT_CORE_OPLIB_INIT(interp, 1);
+            }
+            else {
+                PMC *lib_pmc = Parrot_load_lib(interp,
+                                                Parrot_str_new(interp, lib_name, 0),
+                                                NULL);
+                typedef op_lib_t *(*oplib_init_t)(PARROT_INTERP, long init);
+                void *oplib_init;
+                oplib_init_t oplib_init_f;
+                if (!VTABLE_get_bool(interp, lib_pmc))
+                    Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
+                        "Could not load oplib `%s'", lib_name);
+                GETATTR_ParrotLibrary_oplib_init(interp, lib_pmc, oplib_init);
+                oplib_init_f = (oplib_init_t)D2FPTR(oplib_init);
+                entry->lib = oplib_init_f(interp, 1);
+            }
+
+
+            mem_gc_free(interp, lib_name);
+
+            if (entry->lib->major_version != major
+            ||  entry->lib->minor_version != minor
+            ||  entry->lib->patch_version != patch)
+                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
+                    "Incompatible versions of `%s' oplib. Found %d.%d.%d but loaded %d.%d.%d",
+                    entry->lib->name, major, minor, patch, entry->lib->major_version,
+                    entry->lib->minor_version, entry->lib->patch_version);
+        }
+
+        /* op entries */
+        {
+            int       j;
+            total_ops += entry->n_ops = PF_fetch_opcode(self->pf, &cursor);
+
+            entry->table_ops = mem_gc_allocate_n_zeroed_typed(interp,
+                                    entry->n_ops, opcode_t);
+            entry->lib_ops   = mem_gc_allocate_n_zeroed_typed(interp,
+                                    entry->n_ops, opcode_t);
+
+            for (j = 0; j < entry->n_ops; j++) {
+                opcode_t idx = PF_fetch_opcode(self->pf, &cursor);
+                opcode_t op  = PF_fetch_opcode(self->pf, &cursor);
+
+                if (0 > op || op >= entry->lib->op_count)
+                    Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_PACKFILE,
+                        "opcode index out of bounds on library `%s'. Found %d, expected 0 to %d.",
+                        entry->lib->name, op, entry->lib->op_count - 1);
+
+                if (0 > idx || idx >= byte_code->op_count)
+                    Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_PACKFILE,
+                        "op table index out of bounds for entry from library `%s'."
+                        " Found %d, expected 0 to %d",
+                        entry->lib->name, idx, byte_code->op_count - 1);
+
+                if (byte_code->op_func_table[idx])
+                    Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_PACKFILE,
+                        "duplicate entries in optable");
+
+                entry->table_ops[j]           = idx;
+                entry->lib_ops[j]             = op;
+                byte_code->op_func_table[idx] = entry->lib->op_func_table[op];
+                byte_code->op_info_table[idx] = &entry->lib->op_info_table[op];
+            }
+        }
+    }
+
+    if (total_ops != byte_code->op_count)
+        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_PACKFILE,
+            "wrong number of ops decoded for optable. Decoded %d, but expected %d",
+            total_ops, byte_code->op_count);
+
+    return cursor;
+}
 
 /*
 

Modified: branches/gsoc_threads/src/pbc_dump.c
==============================================================================
--- branches/gsoc_threads/src/pbc_dump.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pbc_dump.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -118,7 +118,7 @@
 
     while (pc < self->data + self->size) {
         /* n can't be const; the ADD_OP_VAR_PART macro increments it */
-        size_t n = (size_t)interp->op_info_table[*pc].op_count;
+        size_t n = (size_t)interp->code->op_info_table[*pc]->op_count;
         size_t i;
 
         /* trace_op_dump(interp, self->pf->src, pc); */
@@ -131,7 +131,7 @@
                 Parrot_io_printf(interp, "         ");
 
         Parrot_io_printf(interp, "%s\n",
-                interp->op_info_table[*pc].full_name);
+                interp->code->op_info_table[*pc]->full_name);
 
         ADD_OP_VAR_PART(interp, interp->code, pc, n);
         pc += n;
@@ -159,16 +159,16 @@
     const PackFile_Segment *debug      = PackFile_find_segment(interp,
                                             self->dir, debug_name, 1);
 
-    const opcode_t  * pc            = self->data;
-    const opcode_t  * debug_ops     = debug->data;
-    const op_info_t * const op_info = interp->op_info_table;
+    opcode_t   * pc            = self->data;
+    opcode_t   * debug_ops     = debug->data;
+    op_info_t ** const op_info = interp->code->op_info_table;
 
     while (pc < self->data + self->size) {
         /* n can't be const; the ADD_OP_VAR_PART macro increments it */
-        size_t n = (size_t)op_info[*pc].op_count;
+        size_t n = (size_t)op_info[*pc]->op_count;
 
         Parrot_io_printf(interp, " %04x:  %s\n",
-            *(debug_ops++), op_info[*pc].full_name);
+            *(debug_ops++), op_info[*pc]->full_name);
 
         ADD_OP_VAR_PART(interp, interp->code, pc, n);
         pc += n;

Modified: branches/gsoc_threads/src/pbc_merge.c
==============================================================================
--- branches/gsoc_threads/src/pbc_merge.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pbc_merge.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -64,6 +64,16 @@
 static void help(PARROT_INTERP)
         __attribute__nonnull__(1);
 
+static void pbc_fixup_bytecode(PARROT_INTERP,
+    ARGMOD(pbc_merge_input **inputs),
+    int num_inputs,
+    ARGMOD(PackFile_ByteCode *bc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(4)
+        FUNC_MODIFIES(*inputs)
+        FUNC_MODIFIES(*bc);
+
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static PackFile* pbc_merge_begin(PARROT_INTERP,
@@ -100,16 +110,6 @@
         FUNC_MODIFIES(*pf)
         FUNC_MODIFIES(*bc);
 
-static void pbc_merge_ctpointers(PARROT_INTERP,
-    ARGMOD(pbc_merge_input **inputs),
-    int num_inputs,
-    ARGMOD(PackFile_ByteCode *bc))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(4)
-        FUNC_MODIFIES(*inputs)
-        FUNC_MODIFIES(*bc);
-
 static void pbc_merge_debugs(PARROT_INTERP,
     ARGMOD(pbc_merge_input **inputs),
     int num_inputs,
@@ -149,6 +149,10 @@
 
 #define ASSERT_ARGS_help __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_pbc_fixup_bytecode __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(inputs) \
+    , PARROT_ASSERT_ARG(bc))
 #define ASSERT_ARGS_pbc_merge_begin __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(inputs))
@@ -161,10 +165,6 @@
     , PARROT_ASSERT_ARG(inputs) \
     , PARROT_ASSERT_ARG(pf) \
     , PARROT_ASSERT_ARG(bc))
-#define ASSERT_ARGS_pbc_merge_ctpointers __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(inputs) \
-    , PARROT_ASSERT_ARG(bc))
 #define ASSERT_ARGS_pbc_merge_debugs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(inputs) \
@@ -601,7 +601,6 @@
     /* Create merged debug segment. Replace created data and mappings
        with merged ones we have created. */
     debug_seg = Parrot_new_debug_seg(interp, bc, num_lines);
-    PackFile_add_segment(interp, &pf->directory, (PackFile_Segment*)debug_seg);
     mem_gc_free(interp, debug_seg->base.data);
     debug_seg->base.data    = lines;
     mem_gc_free(interp, debug_seg->mappings);
@@ -610,23 +609,90 @@
     debug_seg->num_mappings = num_mappings;
 }
 
+
+static opcode_t
+bytecode_remap_op(PARROT_INTERP, PackFile *pf, opcode_t op) {
+    int i;
+    op_info_t         *info    = pf->cur_cs->op_info_table[op];
+    op_lib_t          *lib     = info->lib;
+    op_func_t         op_func  = pf->cur_cs->op_func_table[op];
+    PackFile_ByteCode *bc      = interp->code;
+    PackFile_ByteCode_OpMappingEntry *om;
+
+    for (i = 0; i < bc->op_mapping.n_libs; i++) {
+        if (lib == bc->op_mapping.libs[i].lib) {
+            om = &bc->op_mapping.libs[i];
+            goto found_lib;
+        }
+    }
+
+    /* library not yet mapped */
+    bc->op_mapping.n_libs++;
+    bc->op_mapping.libs = mem_gc_realloc_n_typed_zeroed(interp, bc->op_mapping.libs,
+                            bc->op_mapping.n_libs, bc->op_mapping.n_libs - 1,
+                            PackFile_ByteCode_OpMappingEntry);
+
+    /* initialize a new lib entry */
+    om            = &bc->op_mapping.libs[bc->op_mapping.n_libs - 1];
+    om->lib       = lib;
+    om->n_ops     = 0;
+    om->lib_ops   = mem_gc_allocate_n_zeroed_typed(interp, 0, opcode_t);
+    om->table_ops = mem_gc_allocate_n_zeroed_typed(interp, 0, opcode_t);
+
+  found_lib:
+    for (i = 0; i < om->n_ops; i++) {
+        if (bc->op_func_table[om->table_ops[i]] == op_func)
+            return om->table_ops[i];
+    }
+
+    /* op not yet mapped */
+    bc->op_count++;
+    bc->op_func_table =
+        mem_gc_realloc_n_typed_zeroed(interp, bc->op_func_table, bc->op_count, bc->op_count,
+                                        op_func_t);
+    bc->op_func_table[bc->op_count - 1] = op_func;
+    bc->op_info_table =
+        mem_gc_realloc_n_typed_zeroed(interp, bc->op_info_table, bc->op_count, bc->op_count,
+                                        op_info_t *);
+    bc->op_info_table[bc->op_count - 1] = info;
+
+    /* initialize new op mapping */
+    om->n_ops++;
+
+    om->lib_ops =
+        mem_gc_realloc_n_typed_zeroed(interp, om->lib_ops, om->n_ops, om->n_ops - 1, opcode_t);
+    for (i = 0; i < lib->op_count; i++) {
+        if (lib->op_func_table[i] == op_func) {
+            om->lib_ops[om->n_ops - 1] = i;
+            break;
+        }
+    }
+    PARROT_ASSERT(om->lib_ops[om->n_ops - 1] || !i);
+
+    om->table_ops =
+        mem_gc_realloc_n_typed_zeroed(interp, om->table_ops, om->n_ops, om->n_ops - 1, opcode_t);
+    om->table_ops[om->n_ops - 1] = bc->op_count - 1;
+
+    return bc->op_count - 1;
+}
+
 /*
 
-=item C<static void pbc_merge_ctpointers(PARROT_INTERP, pbc_merge_input
-**inputs, int num_inputs, PackFile_ByteCode *bc)>
+=item C<static void pbc_fixup_bytecode(PARROT_INTERP, pbc_merge_input **inputs,
+int num_inputs, PackFile_ByteCode *bc)>
 
-This function corrects the pointers into the constants table found in the
-bytecode.
+Fixup bytecode. This includes correcting pointers into the constant table
+and updating the ops mapping.
 
 =cut
 
 */
 
 static void
-pbc_merge_ctpointers(PARROT_INTERP, ARGMOD(pbc_merge_input **inputs),
+pbc_fixup_bytecode(PARROT_INTERP, ARGMOD(pbc_merge_input **inputs),
                      int num_inputs, ARGMOD(PackFile_ByteCode *bc))
 {
-    ASSERT_ARGS(pbc_merge_ctpointers)
+    ASSERT_ARGS(pbc_fixup_bytecode)
     int        cur_arg;
     opcode_t  *op_ptr;
     opcode_t  *ops       = bc->base.data;
@@ -637,15 +703,16 @@
     while (cur_op < (opcode_t)bc->base.size) {
         op_info_t *op;
         opcode_t   op_num;
+        op_func_t  op_func;
 
         /* Keep track of the current input file. */
         if (cur_input + 1 < num_inputs &&
             cur_op >= inputs[cur_input + 1]->code_start)
             ++cur_input;
 
-        /* Get info about this op and jump over it. */
-        op_num = ops[cur_op];
-        op     = &interp->op_info_table[op_num];
+        /* Get info about this op, remap it, and jump over it. */
+        op_num = ops[cur_op] = bytecode_remap_op(interp, inputs[cur_input]->pf, ops[cur_op]);
+        op     = bc->op_info_table[op_num];
         op_ptr = ops + cur_op;
         ++cur_op;
 
@@ -669,10 +736,11 @@
         }
 
         /* Handle special case variable argument opcodes. */
-        if (op_num == PARROT_OP_set_args_pc    ||
-                op_num == PARROT_OP_get_results_pc ||
-                op_num == PARROT_OP_get_params_pc  ||
-                op_num == PARROT_OP_set_returns_pc) {
+        op_func = interp->code->op_func_table[op_num];
+        if (op_func == interp->op_func_table[PARROT_OP_set_args_pc]    ||
+            op_func == interp->op_func_table[PARROT_OP_get_results_pc] ||
+            op_func == interp->op_func_table[PARROT_OP_get_params_pc]  ||
+            op_func == interp->op_func_table[PARROT_OP_set_returns_pc]) {
             /* Get the signature. */
             PMC * const sig = bc->const_table->constants[op_ptr[1]].u.key;
 
@@ -739,7 +807,7 @@
     }
 
     /* Merge the various stuff. */
-    bc = pbc_merge_bytecode(interp, inputs, num_inputs, merged);
+    bc = interp->code = pbc_merge_bytecode(interp, inputs, num_inputs, merged);
     ct = pbc_merge_constants(interp, inputs, num_inputs, merged, bc);
     UNUSED(ct);
 
@@ -747,7 +815,7 @@
     pbc_merge_debugs(interp, inputs, num_inputs, merged, bc);
 
     /* Walk bytecode and fix ops that reference the constants table. */
-    pbc_merge_ctpointers(interp, inputs, num_inputs, bc);
+    pbc_fixup_bytecode(interp, inputs, num_inputs, bc);
 
     for (i = 0; i < num_inputs; ++i) {
         mem_gc_free(interp, inputs[i]->const_map);

Modified: branches/gsoc_threads/src/pmc/bigint.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/bigint.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/bigint.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -384,6 +384,14 @@
 /* HEADERIZER END: static */
 /* HEADERIZER HFILE: none */
 
+/*
+
+=item C<static void bigint_init(PARROT_INTERP, PMC *self)>
+
+=cut
+
+*/
+
 static void
 bigint_init(PARROT_INTERP, ARGIN(PMC *self))
 {
@@ -394,6 +402,14 @@
     mpz_init(bi->b);
 }
 
+/*
+
+=item C<static void bigint_clear(PARROT_INTERP, PMC *self)>
+
+=cut
+
+*/
+
 static void
 bigint_clear(PARROT_INTERP, ARGIN(PMC *self))
 {
@@ -405,6 +421,14 @@
     mem_gc_free(interp, bi);
 }
 
+/*
+
+=item C<static void bigint_set(PARROT_INTERP, PMC *dest, PMC *src)>
+
+=cut
+
+*/
+
 static void
 bigint_set(PARROT_INTERP, ARGMOD(PMC *dest), ARGIN(PMC *src))
 {
@@ -418,6 +442,17 @@
     mpz_set(bi_dest->b, bi_src->b);
 }
 
+/*
+
+=item C<static void bigint_set_long(PARROT_INTERP, PMC *self, long value)>
+
+
+
+
+=cut
+
+*/
+
 static void
 bigint_set_long(PARROT_INTERP, ARGMOD(PMC *self), long value)
 {
@@ -428,6 +463,16 @@
     mpz_set_si(bi->b, value);
 }
 
+/*
+
+=item C<static void bigint_set_double(PARROT_INTERP, PMC *self, double value)>
+
+
+
+=cut
+
+*/
+
 static void
 bigint_set_double(PARROT_INTERP, ARGMOD(PMC *self), double value)
 {
@@ -438,6 +483,15 @@
     mpz_set_d(bi->b, value);
 }
 
+/*
+
+=item C<static void bigint_set_str(PARROT_INTERP, PMC *self, const char *value,
+int base)>
+
+=cut
+
+*/
+
 static void
 bigint_set_str(PARROT_INTERP, ARGMOD(PMC *self), ARGIN(const char *value), int base)
 {
@@ -448,6 +502,14 @@
     mpz_set_str(bi->b, value, base);
 }
 
+/*
+
+=item C<static BIGINT* bigint_get_self(PARROT_INTERP, PMC *self)>
+
+=cut
+
+*/
+
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 static BIGINT*
@@ -460,6 +522,14 @@
     return bi;
 }
 
+/*
+
+=item C<static void bigint_set_self(PARROT_INTERP, PMC *self, BIGINT *value)>
+
+=cut
+
+*/
+
 static void
 bigint_set_self(PARROT_INTERP, ARGMOD(PMC *self), ARGIN(BIGINT *value))
 {
@@ -470,6 +540,14 @@
     mpz_set(bi->b, (mpz_srcptr)((BIGINT*)value)->b);
 }
 
+/*
+
+=item C<static long bigint_get_long(PARROT_INTERP, PMC *self)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 static long
 bigint_get_long(PARROT_INTERP, ARGIN(PMC *self))
@@ -484,6 +562,14 @@
     Parrot_ex_throw_from_c_args(interp, NULL, 1, "bigint_get_long: number too big");
 }
 
+/*
+
+=item C<static int bigint_get_bool(PARROT_INTERP, PMC *self)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 static int
 bigint_get_bool(PARROT_INTERP, ARGIN(PMC *self))
@@ -498,6 +584,14 @@
         return 0;
 }
 
+/*
+
+=item C<static char * bigint_get_string(PARROT_INTERP, PMC *self, int base)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static char *
@@ -515,6 +609,14 @@
     return mpz_get_str(s, base, bi->b);
 }
 
+/*
+
+=item C<static double bigint_get_double(PARROT_INTERP, PMC *self)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 static double
 bigint_get_double(PARROT_INTERP, ARGIN(PMC *self))
@@ -526,6 +628,16 @@
     return mpz_get_d(bi->b);
 }
 
+
+/*
+
+=item C<static void bigint_add_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC
+*dest)>
+
+=cut
+
+*/
+
 static void
 bigint_add_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest))
 {
@@ -538,6 +650,15 @@
     mpz_add(bi_dest->b, bi_self->b, bi_value->b);
 }
 
+/*
+
+=item C<static void bigint_add_bigint_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
+
+=cut
+
+*/
+
 static void
 bigint_add_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
 {
@@ -552,6 +673,15 @@
         mpz_add_ui(bi_dest->b, bi_self->b, (unsigned long int)value);
 }
 
+/*
+
+=item C<static void bigint_sub_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC
+*dest)>
+
+=cut
+
+*/
+
 static void
 bigint_sub_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest))
 {
@@ -564,6 +694,15 @@
     mpz_sub(bi_dest->b, bi_self->b, bi_value->b);
 }
 
+/*
+
+=item C<static void bigint_sub_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest)>
+
+
+=cut
+
+*/
+
 static void
 bigint_sub_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
 {
@@ -578,6 +717,15 @@
         mpz_sub_ui(bi_dest->b, bi_self->b, (unsigned long int)value);
 }
 
+/*
+
+=item C<static void bigint_mul_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC
+*dest)>
+
+=cut
+
+*/
+
 static void
 bigint_mul_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest))
 {
@@ -590,6 +738,15 @@
     mpz_mul(bi_dest->b, bi_self->b, bi_value->b);
 }
 
+/*
+
+=item C<static void bigint_mul_bigint_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
+
+=cut
+
+*/
+
 static void
 bigint_mul_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
 {
@@ -601,6 +758,15 @@
     mpz_mul_si(bi_dest->b, bi_self->b, value);
 }
 
+/*
+
+=item C<static void bigint_pow_bigint_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
+
+=cut
+
+*/
+
 static void
 bigint_pow_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
 {
@@ -612,6 +778,14 @@
     mpz_pow_ui(bi_dest->b, bi_self->b, (unsigned long int)value);
 }
 
+/*
+
+=item C<static void int_check_divide_zero(PARROT_INTERP, INTVAL value)>
+
+=cut
+
+*/
+
 static void
 int_check_divide_zero(PARROT_INTERP, INTVAL value)
 {
@@ -620,6 +794,14 @@
             "Divide by zero");
 }
 
+/*
+
+=item C<static void bigint_check_divide_zero(PARROT_INTERP, PMC *value)>
+
+=cut
+
+*/
+
 static void
 bigint_check_divide_zero(PARROT_INTERP, ARGIN(PMC *value))
 {
@@ -633,6 +815,15 @@
             "Divide by zero");
 }
 
+/*
+
+=item C<static void bigint_div_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC
+*dest)>
+
+=cut
+
+*/
+
 static void
 bigint_div_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest))
 {
@@ -647,6 +838,15 @@
     mpz_div(bi_dest->b, bi_self->b, bi_value->b);
 }
 
+/*
+
+=item C<static void bigint_div_bigint_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
+
+=cut
+
+*/
+
 static void
 bigint_div_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
 {
@@ -666,6 +866,15 @@
         mpz_div_ui(bi_dest->b, bi_self->b, (unsigned long int)value);
 }
 
+/*
+
+=item C<static void bigint_fdiv_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC
+*dest)>
+
+=cut
+
+*/
+
 static void
 bigint_fdiv_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *value), ARGMOD(PMC *dest))
 {
@@ -679,6 +888,15 @@
     mpz_fdiv_q(bi_dest->b, bi_self->b, bi_value->b);
 }
 
+/*
+
+=item C<static void bigint_fdiv_bigint_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
+
+=cut
+
+*/
+
 static void
 bigint_fdiv_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
 {
@@ -697,6 +915,15 @@
         mpz_fdiv_q_ui(bi_dest->b, bi_self->b, (unsigned long int)value);
 }
 
+/*
+
+=item C<static void bigint_mod_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC
+*dest)>
+
+=cut
+
+*/
+
 static void
 bigint_mod_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *value), ARGMOD(PMC *dest))
 {
@@ -710,6 +937,15 @@
     mpz_mod(bi_dest->b, bi_self->b, bi_value->b);
 }
 
+/*
+
+=item C<static void bigint_mod_bigint_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
+
+=cut
+
+*/
+
 static void
 bigint_mod_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
 {
@@ -727,6 +963,14 @@
         mpz_mod_ui(bi_dest->b, bi_self->b, (unsigned long int)value);
 }
 
+/*
+
+=item C<static INTVAL bigint_cmp(PARROT_INTERP, PMC *self, PMC *value)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 static INTVAL
 bigint_cmp(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value))
@@ -739,6 +983,14 @@
     return mpz_cmp(bi_self->b, bi_value->b);
 }
 
+/*
+
+=item C<static INTVAL bigint_cmp_int(PARROT_INTERP, PMC *self, INTVAL value)>
+
+=cut
+
+*/
+
 PARROT_WARN_UNUSED_RESULT
 static INTVAL
 bigint_cmp_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value)
@@ -750,6 +1002,14 @@
     return mpz_cmp_si(bi->b, value);
 }
 
+/*
+
+=item C<static void bigint_abs(PARROT_INTERP, PMC *self, PMC *dest)>
+
+=cut
+
+*/
+
 static void
 bigint_abs(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest))
 {
@@ -761,6 +1021,14 @@
     mpz_abs(bi_dest->b, bi_self->b);
 }
 
+/*
+
+=item C<static void bigint_neg(PARROT_INTERP, PMC *self, PMC *dest)>
+
+=cut
+
+*/
+
 static void
 bigint_neg(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest))
 {

Modified: branches/gsoc_threads/src/pmc/callcontext.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/callcontext.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/callcontext.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -64,7 +64,7 @@
         __attribute__nonnull__(2);
 
 PARROT_CANNOT_RETURN_NULL
-static PMC * autobox_pmc(PARROT_INTERP, ARGIN(Pcc_cell *cell))
+static PMC * autobox_pmc(PARROT_INTERP, ARGIN(Pcc_cell *cell), INTVAL type)
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
@@ -284,12 +284,12 @@
 
 PARROT_CANNOT_RETURN_NULL
 static PMC *
-autobox_pmc(PARROT_INTERP, ARGIN(Pcc_cell *cell))
+autobox_pmc(PARROT_INTERP, ARGIN(Pcc_cell *cell), INTVAL type)
 {
     ASSERT_ARGS(autobox_pmc)
     PMC *result = PMCNULL;
 
-    switch (CELL_TYPE_MASK(cell)) {
+    switch (type) {
       case INTCELL:
         result = Parrot_pmc_new(interp, HLL_TYPE(enum_class_Integer));
         VTABLE_set_integer_native(interp, result, CELL_INT(cell));
@@ -1036,7 +1036,7 @@
         Pcc_cell *cells;
         PMC      *retval;
         const INTVAL size = STATICSELF.elements();
-        INTVAL    i;
+        INTVAL    i, type;
 
         if (size < 1)
             Parrot_ex_throw_from_c_args(INTERP, NULL,
@@ -1044,7 +1044,8 @@
                 "Cannot shift PMC from empty CallContext");
 
         GET_ATTR_positionals(INTERP, SELF, cells);
-        retval = autobox_pmc(INTERP, &cells[0]);
+        type   = CELL_TYPE_MASK(&cells[0]);
+        retval = autobox_pmc(INTERP, &cells[0], type);
 
         for (i = 1; i < size; ++i)
             cells[i - 1] = cells[i];
@@ -1112,14 +1113,17 @@
 
     VTABLE PMC * get_pmc_keyed_int(INTVAL key) {
         Pcc_cell *cells;
-        INTVAL    num_pos;
+        INTVAL    num_pos, type;
 
         GET_ATTR_num_positionals(INTERP, SELF, num_pos);
         if (key >= num_pos || key < 0)
             return PMCNULL;
 
         GET_ATTR_positionals(INTERP, SELF, cells);
-        return autobox_pmc(INTERP, &cells[key]);
+        type = CELL_TYPE_MASK(&cells[key]);
+        if (type == PMCCELL)
+            return CELL_PMC(&cells[key]);
+        return autobox_pmc(INTERP, &cells[key], type);
     }
 
     VTABLE void set_integer_keyed_int(INTVAL key, INTVAL value) {
@@ -1328,8 +1332,12 @@
             void     * const k    = hash_key_from_string(INTERP, hash, key);
             Pcc_cell * const cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
 
-            if (cell)
-                return autobox_pmc(INTERP, cell);
+            if (cell) {
+                INTVAL type = CELL_TYPE_MASK(cell);
+                if (type == PMCCELL)
+                    return CELL_PMC(cell);
+                return autobox_pmc(INTERP, cell, type);
+            }
         }
 
         return PMCNULL;
@@ -1384,8 +1392,12 @@
             void     * const k    = hash_key_from_pmc(INTERP, hash, key);
             Pcc_cell * const cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
 
-            if (cell)
-                return autobox_pmc(INTERP, cell);
+            if (cell) {
+                INTVAL type = CELL_TYPE_MASK(cell);
+                if (type == PMCCELL)
+                    return CELL_PMC(cell);
+                return autobox_pmc(INTERP, cell, type);
+            }
         }
 
         return PMCNULL;

Modified: branches/gsoc_threads/src/pmc/complex.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/complex.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/complex.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -13,14 +13,12 @@
 
 =head2 Functions
 
+Equations used are sometimes listed.  At times, multiple equations are given,
+but those starting with => are the ones used
+
 =over 4
 
 =cut
-    ASSERT_ARGS()
-
-
-Equations used are sometimes listed.  At times, multiple equations are given,
-but those starting with => are the ones used
 
 */
 
@@ -77,6 +75,12 @@
 
 =cut
 
+We have a conflict among our coding standards here.  Our 100-character line
+limit meant that the following function declaration had to be split over two
+lines.  However, that leads to t/codingstd/pmc_docs.t reporting that this
+function lacks documentation -- reporting due to differences in whitespacing
+between '=item' and function declaration.
+
 */
 
 static void
@@ -238,6 +242,14 @@
     Parrot_str_free_cstring(str);
 }
 
+/*
+
+=item C<static void int_check_divide_zero(PARROT_INTERP, INTVAL value)>
+
+=cut
+
+*/
+
 static void
 int_check_divide_zero(PARROT_INTERP, INTVAL value)
 {
@@ -248,6 +260,14 @@
             "Divide by zero");
 }
 
+/*
+
+=item C<static void float_check_divide_zero(PARROT_INTERP, FLOATVAL value)>
+
+=cut
+
+*/
+
 static void
 float_check_divide_zero(PARROT_INTERP, FLOATVAL value)
 {
@@ -258,6 +278,14 @@
             "Divide by zero");
 }
 
+/*
+
+=item C<static void complex_check_divide_zero(PARROT_INTERP, PMC *value)>
+
+=cut
+
+*/
+
 static void
 complex_check_divide_zero(PARROT_INTERP, ARGIN(PMC *value))
 {

Modified: branches/gsoc_threads/src/pmc/coroutine.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/coroutine.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/coroutine.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -46,6 +46,13 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
+/*
+
+=item C<static void print_sub_name(PARROT_INTERP, PMC *sub_pmc)>
+
+=cut
+
+*/
 
 static void
 print_sub_name(PARROT_INTERP, ARGIN(PMC *sub_pmc))

Modified: branches/gsoc_threads/src/pmc/fixedintegerarray.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/fixedintegerarray.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/fixedintegerarray.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -11,10 +11,6 @@
 This class, FixedIntegerArray, implements an array of fixed size which stores
 INTVALs.  It uses Integer PMCs for all of the conversions.
 
-=head2 Functions
-
-=over 4
-
 =cut
 
 */
@@ -34,13 +30,6 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
-PARROT_PURE_FUNCTION
-static int
-auxcmpfunc(ARGIN(const INTVAL *i), ARGIN(const INTVAL *j))
-{
-    ASSERT_ARGS(auxcmpfunc)
-    return *i - *j;
-}
 
 pmclass FixedIntegerArray auto_attrs provides array {
     ATTR INTVAL   size;  /* number of INTVALs stored in this array */
@@ -48,9 +37,7 @@
 
 /*
 
-=back
-
-=head2 Methods
+=head2 Vtable functions
 
 =over 4
 
@@ -511,25 +498,6 @@
         SELF.set_pmc_keyed_int(k, value);
     }
 
-    METHOD sort(PMC *cmp_func :optional) {
-        UINTVAL n;
-        INTVAL  size;
-
-        GET_ATTR_size(INTERP, SELF, size);
-        n = (UINTVAL)size;
-
-        if (n > 1) {
-            INTVAL *int_array;
-            GET_ATTR_int_array(INTERP, SELF, int_array);
-            if (PMC_IS_NULL(cmp_func))
-                qsort(int_array, n, sizeof (INTVAL),
-                        (int (*)(const void *, const void*))auxcmpfunc);
-            else
-                Parrot_quicksort(INTERP, (void**)int_array, n, cmp_func);
-        }
-        RETURN(PMC *SELF);
-    }
-
 /*
 
 =item C<INTVAL is_equal(PMC *value)>
@@ -633,6 +601,66 @@
                 int_array[i] = VTABLE_shift_integer(INTERP, info);
         }
     }
+
+/*
+
+=back
+
+=head2 Methods
+
+=over 4
+
+=item C<PMC *sort()>
+
+Sort the array and return self.
+
+=cut
+
+*/
+
+    METHOD sort(PMC *cmp_func :optional) {
+        UINTVAL n;
+        INTVAL  size;
+
+        GET_ATTR_size(INTERP, SELF, size);
+        n = (UINTVAL)size;
+
+        if (n > 1) {
+            INTVAL *int_array;
+            GET_ATTR_int_array(INTERP, SELF, int_array);
+            if (PMC_IS_NULL(cmp_func))
+                qsort(int_array, n, sizeof (INTVAL),
+                        (int (*)(const void *, const void*))auxcmpfunc);
+            else
+                Parrot_quicksort(INTERP, (void**)int_array, n, cmp_func);
+        }
+        RETURN(PMC *SELF);
+    }
+
+}
+
+/*
+
+=back
+
+=head2 Auxiliar functions
+
+=over 4
+
+=item C<static int auxcmpfunc(const INTVAL *i, const INTVAL *j)>
+
+INTVAL compare function for qsort usage.
+
+=cut
+
+*/
+
+PARROT_PURE_FUNCTION
+static int
+auxcmpfunc(ARGIN(const INTVAL *i), ARGIN(const INTVAL *j))
+{
+    ASSERT_ARGS(auxcmpfunc)
+    return *i - *j;
 }
 
 /*

Modified: branches/gsoc_threads/src/pmc/hash.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/hash.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/hash.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -78,7 +78,6 @@
             (Parrot_Hash_attributes *) PMC_data(SELF);
 
         attr->hash            = parrot_new_hash(INTERP);
-        attr->hash->container = SELF;
         PObj_custom_mark_destroy_SETALL(SELF);
     }
 
@@ -91,7 +90,6 @@
                 Hash_key_type_STRING,
                 STRING_compare,
                 (hash_hash_key_fn)key_hash_STRING);
-        attr->hash->container = SELF;
         PObj_custom_mark_destroy_SETALL(SELF);
     }
 
@@ -150,7 +148,6 @@
         Hash * const new_hash = (Hash *)ptr;
 
         PARROT_HASH(SELF)->hash = new_hash;
-        new_hash->container     = SELF;
 
         if (old_hash)
             parrot_hash_destroy(INTERP, old_hash);
@@ -206,7 +203,6 @@
 
 
         PARROT_HASH(SELF)->hash = new_hash;
-        new_hash->container     = SELF;
 
         if (old_hash)
             parrot_hash_destroy(INTERP, old_hash);
@@ -269,7 +265,6 @@
         }
 
         PARROT_HASH(SELF)->hash = new_hash;
-        new_hash->container     = SELF;
 
         if (old_hash)
             parrot_hash_destroy(INTERP, old_hash);
@@ -456,6 +451,12 @@
         PMC    *box;
         HashBucket *b;
 
+        if (PObj_constant_TEST(SELF)
+        && !PObj_constant_TEST((PObj *)key))
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
+                EXCEPTION_INVALID_OPERATION,
+                "Used non-constant PMC key in constant hash.");
+
         if (!nextkey) {
             parrot_hash_put(INTERP, hash, keystr,
                     hash_value_from_int(INTERP, hash, value));
@@ -491,6 +492,13 @@
 
     VTABLE void set_integer_keyed_str(STRING *key, INTVAL value) {
         Hash * const hash = (Hash *)SELF.get_pointer();
+
+        if (PObj_constant_TEST(SELF)
+        && !PObj_constant_TEST((PObj *)key))
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
+                EXCEPTION_INVALID_OPERATION,
+                "Used non-constant key in constant hash.");
+
         parrot_hash_put(INTERP, hash, hash_key_from_string(INTERP, hash, key),
                 hash_value_from_int(INTERP, hash, value));
     }
@@ -636,6 +644,17 @@
         PMC    *box;
         HashBucket *b;
 
+        if (PObj_constant_TEST(SELF)){
+            if (!PObj_constant_TEST((PObj *)key))
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "Used non-constant PMC key in constant hash.");
+            if (!PObj_constant_TEST((PObj *)value))
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "Used non-constant STRING value in constant hash.");
+        }
+
         if (!nextkey) {
             parrot_hash_put(INTERP, hash, keystr,
                     hash_value_from_string(INTERP, hash, value));
@@ -665,6 +684,18 @@
 
     VTABLE void set_string_keyed_str(STRING *key, STRING *value) {
         Hash * const hash = (Hash *)SELF.get_pointer();
+
+        if (PObj_constant_TEST(SELF)){
+            if (!PObj_constant_TEST((PObj *)key))
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "Used non-constant STRING key in constant hash.");
+            if (!PObj_constant_TEST((PObj *)value))
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "Used non-constant STRING value in constant hash.");
+        }
+
         parrot_hash_put(INTERP, hash,
                 hash_key_from_string(INTERP, hash, key),
                 hash_value_from_string(INTERP, hash, value));
@@ -672,6 +703,13 @@
 
     VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
         Hash * const hash = (Hash *)SELF.get_pointer();
+
+        if ((PObj_constant_TEST(SELF))
+        && (!PObj_constant_TEST((PObj *)value)))
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
+                EXCEPTION_INVALID_OPERATION,
+                "Used non-constant STRING value in constant hash.");
+
         parrot_hash_put(INTERP, hash,
                 hash_key_from_int(INTERP, hash, key),
                 hash_value_from_string(INTERP, hash, value));
@@ -697,12 +735,12 @@
 
         GET_ATTR_hash(INTERP, SELF, hash);
 
-        /* special case the most key type, for speed */
-        if (hash->key_type == Hash_key_type_STRING)
-            b = parrot_hash_get_bucket(INTERP, hash, key);
-        else
-            b = parrot_hash_get_bucket(INTERP, hash,
-                hash_key_from_string(INTERP, hash, key));
+        /* special case the most likely key type, for speed */
+        key = hash->key_type == Hash_key_type_STRING
+            ? key
+            : (STRING *)hash_key_from_string(INTERP, hash, key);
+
+        b = parrot_hash_get_bucket(INTERP, hash, key);
 
         if (!b)
             return PMCNULL;
@@ -762,6 +800,11 @@
         PMC    *box            = PMCNULL;
         HashBucket *b;
 
+        if (PObj_constant_TEST(SELF)
+        && !PObj_constant_TEST((PObj *)key))
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
+                EXCEPTION_INVALID_OPERATION,
+                "Used non-constant PMC key in constant hash.");
 
         if (!nextkey) {
             PMC * const val = get_number_pmc(INTERP, value);
@@ -793,6 +836,12 @@
     VTABLE void set_number_keyed_str(STRING *key, FLOATVAL value) {
         PMC * const val  = get_number_pmc(INTERP, value);
 
+        if (PObj_constant_TEST(SELF)
+        && !PObj_constant_TEST((PObj *)key))
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
+                EXCEPTION_INVALID_OPERATION,
+                "Used non-constant STRING key in constant hash.");
+
         parrot_hash_put(INTERP, (Hash *)SELF.get_pointer(), key, val);
     }
 
@@ -811,6 +860,18 @@
         PMC    *box;
         HashBucket *b;
 
+        if (PObj_constant_TEST(SELF)) {
+            if (!PObj_constant_TEST((PObj *)key))
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "Used non-constant PMC key in constant hash.");
+
+            if (!PObj_constant_TEST((PObj *)value))
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "Used non-constant PMC value in constant hash.");
+        }
+
         if (!nextkey) {
             parrot_hash_put(INTERP, hash, keystr, value);
             return;
@@ -842,6 +903,19 @@
 
     VTABLE void set_pmc_keyed_str(STRING *key, PMC *value) {
         Hash * const hash = (Hash *)SELF.get_pointer();
+
+        if (PObj_constant_TEST(SELF)) {
+            if (!PObj_constant_TEST((PObj *)key))
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "Used non-constant STRING key in constant hash.");
+
+            if (!PObj_constant_TEST((PObj *)value))
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "Used non-constant STRING value in constant hash.");
+        }
+
         parrot_hash_put(INTERP, hash, hash_key_from_string(INTERP, hash, key),
                 hash_value_from_pmc(INTERP, hash, value));
     }
@@ -1163,7 +1237,6 @@
             PARROT_ASSERT((INTVAL)hash->key_type == k_type);
             PARROT_ASSERT(hash->entry_type       == v_type);
 
-            hash->container = SELF;
             hash->entries   = elems;
         }
     }

Modified: branches/gsoc_threads/src/pmc/hashiterator.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/hashiterator.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/hashiterator.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -66,8 +66,12 @@
 
 /*
 
+=item C<static void advance_to_next(PARROT_INTERP, PMC *self)>
+
 Advance to next position. Return found (if any) HashBucket.
 
+=cut
+
 */
 
 static void
@@ -191,6 +195,7 @@
 Returns this Iterator's Hash.
 
 =cut
+
 */
     VTABLE PMC* get_pmc() {
         return PARROT_HASHITERATOR(SELF)->pmc_hash;

Modified: branches/gsoc_threads/src/pmc/imageiosize.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/imageiosize.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/imageiosize.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -35,6 +35,20 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
+/*
+
+=head1 METHODS
+
+=over 4
+
+=item C<static void visit_todo_list_freeze(PARROT_INTERP, PMC* pmc, PMC* info)>
+
+=back
+
+=cut
+
+   */
+
 static void
 visit_todo_list_freeze(PARROT_INTERP, ARGIN(PMC* pmc), ARGMOD(PMC* info))
 {

Modified: branches/gsoc_threads/src/pmc/opcode.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/opcode.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/opcode.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -23,19 +23,12 @@
 pmclass Opcode auto_attrs {
     ATTR op_info_t *info;
     ATTR INTVAL op_number;
-    ATTR STRING *full_name_cache;
 
     VTABLE void init() {
         Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
             "Opcode must be created from OpLib.");
     }
 
-    VTABLE void mark() {
-        Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
-        if (attrs->full_name_cache)
-            Parrot_gc_mark_STRING_alive(INTERP, attrs->full_name_cache);
-    }
-
     VTABLE void set_pointer(void *i) {
         Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
         if (attrs->info)
@@ -44,16 +37,6 @@
         attrs->info = (op_info_t *)i;
     }
 
-    VTABLE void set_string_native(STRING *name) {
-        char * const cstr = Parrot_str_to_cstring(INTERP, name);
-        const INTVAL num = INTERP->op_lib->op_code(INTERP, cstr, 1);
-        Parrot_str_free_cstring(cstr);
-        if (num == -1)
-            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-                "Opcode: Opcode %S not found", name);
-        VTABLE_set_integer_native(INTERP, SELF, num);
-    }
-
     VTABLE INTVAL get_integer() {
         Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
         if (!attrs->info)
@@ -62,27 +45,18 @@
     }
 
     VTABLE void set_integer_native(INTVAL value) {
-        const INTVAL opcount = INTERP->op_lib->op_count;
         Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
         if (attrs->info)
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
                 "Opcode has already been initialized");
-        if (value >= opcount || value < 0)
-            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-                "Opcode: Opcode index %d out of bounds", value);
-        attrs->info = &(INTERP->op_info_table[value]);
         attrs->op_number = value;
     }
 
     VTABLE STRING* get_string() {
         Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
-        if (attrs->full_name_cache == NULL) {
-            const char * const name = attrs->info->full_name;
-            const INTVAL len = strlen(name);
-            STRING * const newstr = Parrot_str_new(INTERP, name, len);
-            attrs->full_name_cache = newstr;
-        }
-        return attrs->full_name_cache;
+        const char * const name                = attrs->info->full_name;
+        const INTVAL len                       = strlen(name);
+        return Parrot_str_new(INTERP, name, len);
     }
 
     VTABLE INTVAL elements() {

Modified: branches/gsoc_threads/src/pmc/oplib.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/oplib.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/oplib.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -15,51 +15,59 @@
 */
 
 #include "parrot/parrot.h"
+#include "parrot/oplib/core_ops.h"
 
 /* HEADERIZER HFILE: none */
 /* HEADERIZER BEGIN: static */
 /* HEADERIZER END: static */
 
-/* TODO: Since Opcode PMCs are essentially read-only after initialization
-         here, we should cache them. A FixedPMCArray would be okay, an
-         INTVAL->PMC HASH might be better, since it's unlikely that we will
-         need to cache even a majority of the ~1300 ops. */
-static PMC *OPLIB_PMC_INSTANCE;
-static PMC *OPLIB_OPCODE_CACHE;
-pmclass OpLib singleton {
-    void class_init() {
-        OPLIB_PMC_INSTANCE = NULL;
-        OPLIB_OPCODE_CACHE = NULL;
-    }
+pmclass OpLib auto_attrs {
+    ATTR op_lib_t *oplib;
 
-    VTABLE void *get_pointer() {
-        return OPLIB_PMC_INSTANCE;
+    VTABLE void init() {
+        Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
+                "OpLib must be initialized with an oplib name");
     }
 
-    VTABLE void set_pointer(void *ptr) {
-        OPLIB_PMC_INSTANCE = (PMC *)ptr;
-    }
+    VTABLE void init_pmc(PMC *name_pmc) {
+        STRING   *name      = VTABLE_get_string(INTERP, name_pmc);
+        char     *name_cstr = Parrot_str_to_cstring(INTERP, name);
+        op_lib_t *oplib     = NULL;
+        int       i;
 
-    VTABLE void init() {
-        if (OPLIB_OPCODE_CACHE == NULL) {
-            OPLIB_OPCODE_CACHE = Parrot_pmc_new(INTERP, enum_class_Hash);
-            Parrot_pmc_gc_register(INTERP, OPLIB_OPCODE_CACHE);
+        if (STREQ(name_cstr, PARROT_CORE_OPLIB_NAME)) {
+            oplib = PARROT_CORE_OPLIB_INIT(INTERP, 1);
         }
-        PObj_custom_mark_SET(SELF);
-    }
+        else {
+            for (i = 0; i < INTERP->n_libs; i++) {
+                if (STREQ(name_cstr, INTERP->all_op_libs[i]->name)) {
+                    oplib = INTERP->all_op_libs[i];
+                    break;
+                }
+            }
+        }
+
+        Parrot_str_free_cstring(name_cstr);
 
-    VTABLE void mark() {
-        if (OPLIB_OPCODE_CACHE != NULL)
-            Parrot_gc_mark_PMC_alive(INTERP, OPLIB_OPCODE_CACHE);
+        if (!oplib)
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_LIBRARY_NOT_LOADED,
+                    "Could not find oplib `%S'", name);
+
+        SET_ATTR_oplib(INTERP, SELF, oplib);
     }
 
     /* Look up an opnumber given the name of the op. First we look for the
        specific name, then the more general short name. */
     VTABLE INTVAL get_integer_keyed_str(STRING *name) {
-        char * const cstr = Parrot_str_to_cstring(INTERP, name);
-        INTVAL num = INTERP->op_lib->op_code(INTERP, cstr, 1);
+        op_lib_t     *oplib;
+        char * const  cstr = Parrot_str_to_cstring(INTERP, name);
+        INTVAL        num;
+
+        GET_ATTR_oplib(INTERP, SELF, oplib);
+        num  = oplib->op_code(INTERP, cstr, 1);
         if (num == -1)
-            num = INTERP->op_lib->op_code(INTERP, cstr, 0);
+            num = oplib->op_code(INTERP, cstr, 0);
+
         Parrot_str_free_cstring(cstr);
         return num;
     }
@@ -70,17 +78,11 @@
     }
 
     VTABLE PMC* get_pmc_keyed_str(STRING *name) {
-        if (VTABLE_defined_keyed_str(INTERP, OPLIB_OPCODE_CACHE, name)) {
-            PMC * const op = VTABLE_get_pmc_keyed_str(INTERP, OPLIB_OPCODE_CACHE, name);
-            return op;
-        }
-        else {
-            PMC * const op = Parrot_pmc_new_noinit(INTERP, enum_class_Opcode);
-            VTABLE_set_string_native(INTERP, op, name);
-            PObj_custom_mark_SET(op);
-            VTABLE_set_pmc_keyed_str(INTERP, OPLIB_OPCODE_CACHE, name, op);
-            return op;
-        }
+        const INTVAL  num = STATICSELF.get_integer_keyed_str(name);
+        if (num == -1)
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
+                "Opcode: Opcode %S not found", name);
+        return STATICSELF.get_pmc_keyed_int(num);
     }
 
     VTABLE PMC* get_pmc_keyed(PMC *key) {
@@ -89,18 +91,29 @@
     }
 
     VTABLE PMC* get_pmc_keyed_int(INTVAL value) {
-        if ((UINTVAL)value >= INTERP->op_lib->op_count)
+        op_lib_t *oplib;
+        GET_ATTR_oplib(INTERP, SELF, oplib);
+        if ((UINTVAL)value >= oplib->op_count ||
+                     value <  0) {
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-                "OpLib: Opcode index %d out of bounds", value);
+                "OpLib `%s': Opcode index %d out of bounds", oplib->name, value);
+        }
         else {
-            const char * const name   = INTERP->op_info_table[value].full_name;
-            STRING     * const newstr = Parrot_str_new(INTERP, name, 0);
-            return VTABLE_get_pmc_keyed_str(INTERP, SELF, newstr);
+            PMC * const op = Parrot_pmc_new_noinit(INTERP, enum_class_Opcode);
+            VTABLE_set_integer_native(INTERP, op, value);
+            VTABLE_set_pointer(INTERP, op, &oplib->op_info_table[value]);
+            return op;
         }
     }
 
     VTABLE INTVAL elements() {
-        return INTERP->op_lib->op_count;
+        op_lib_t *oplib;
+        GET_ATTR_oplib(INTERP, SELF, oplib);
+        return oplib->op_count;
+    }
+
+    VTABLE INTVAL get_integer() {
+        return STATICSELF.elements();
     }
 
     VTABLE INTVAL get_integer() {
@@ -110,11 +123,14 @@
     METHOD op_family(STRING *shortname)
     {
         char * const sname = Parrot_str_to_cstring(INTERP, shortname);
-        const op_lib_t * const op_lib = INTERP->op_lib;
-        const op_info_t * const table = op_lib->op_info_table;
+        op_lib_t  *oplib;
+        op_info_t *table;
         PMC *result = PMCNULL;
         UINTVAL i;
-        for (i = 0; i < op_lib->op_count; ++i) {
+
+        GET_ATTR_oplib(INTERP, SELF, oplib);
+        table = oplib->op_info_table;
+        for (i = 0; i < oplib->op_count; ++i) {
             if (strcmp(table[i].name, sname) == 0) {
                 if (PMC_IS_NULL(result))
                     result = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);

Modified: branches/gsoc_threads/src/pmc/role.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/role.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/role.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -68,7 +68,16 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
-/* Takes a hash and initializes the role based on it. */
+/*
+
+=item C<static void init_role_from_hash(PARROT_INTERP, PMC *self, PMC *info)>
+
+Takes a hash and initializes the role based on it.
+
+=cut
+
+*/
+
 static void
 init_role_from_hash(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *info))
 {

Modified: branches/gsoc_threads/src/pmc/sub.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/sub.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/sub.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -869,7 +869,8 @@
                     Parrot_sub_arginfo);
 
             /* If the first instruction is a get_params... */
-            if (*pc == PARROT_OP_get_params_pc) {
+            if (sub->seg->op_func_table[*pc]
+                == interp->op_func_table[PARROT_OP_get_params_pc]) {
                 /* Get the signature (the next thing in the bytecode). */
                 PMC * const sig = PF_CONST(sub->seg, *(++pc)).u.key;
 
@@ -1152,7 +1153,10 @@
 
 (Experimental) Returns Sub flags.
 
+=back
+
 =cut
+
 */
     METHOD comp_flags() {
         Parrot_Sub_attributes  *sub;

Modified: branches/gsoc_threads/src/pmc/threadinterpreter.pmc
==============================================================================
--- branches/gsoc_threads/src/pmc/threadinterpreter.pmc	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/pmc/threadinterpreter.pmc	Fri Aug 13 00:07:10 2010	(r48443)
@@ -44,6 +44,15 @@
  * can't do multi-threaded GC yet
  * XXX a quick hack to pass the few tests
  */
+
+/*
+
+=item C<static void stop_GC(Interp *parent, Interp *thread)>
+
+=cut
+
+*/
+
 static void
 stop_GC(ARGMOD(Interp *parent), ARGMOD(Interp *thread))
 {

Modified: branches/gsoc_threads/src/runcore/main.c
==============================================================================
--- branches/gsoc_threads/src/runcore/main.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/runcore/main.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -520,9 +520,11 @@
 disable_event_checking(PARROT_INTERP)
 {
     ASSERT_ARGS(disable_event_checking)
+    PackFile_ByteCode *cs = interp->code;
     /* restore func table */
-    PARROT_ASSERT(interp->save_func_table);
-    notify_func_table(interp, interp->save_func_table, 0);
+    PARROT_ASSERT(cs->save_func_table);
+    cs->op_func_table   = cs->save_func_table;
+    cs->save_func_table = NULL;
 }
 
 
@@ -546,8 +548,12 @@
 enable_event_checking(PARROT_INTERP)
 {
     ASSERT_ARGS(enable_event_checking)
-    /* put table in place */
-    notify_func_table(interp, interp->evc_func_table, 1);
+    PackFile_ByteCode *cs = interp->code;
+    /* only save if we're not already event checking */
+    if (cs->save_func_table == NULL)
+        cs->save_func_table = cs->op_func_table;
+    /* put evc table in place */
+    cs->op_func_table   = interp->evc_func_table;
 }
 
 

Modified: branches/gsoc_threads/src/runcore/profiling.c
==============================================================================
--- branches/gsoc_threads/src/runcore/profiling.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/runcore/profiling.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -459,7 +459,7 @@
             pprof_data[PPROF_DATA_TIME] = op_time;
         }
         pprof_data[PPROF_DATA_LINE]   = preop_line;
-        pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA)(interp->op_info_table)[*preop_pc].name;
+        pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA)(interp->code->op_info_table)[*preop_pc]->name;
         runcore->output_fn(runcore, pprof_data, PPROF_LINE_OP);
     }
 

Modified: branches/gsoc_threads/src/runcore/trace.c
==============================================================================
--- branches/gsoc_threads/src/runcore/trace.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/runcore/trace.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -297,7 +297,7 @@
 {
     ASSERT_ARGS(trace_op_dump)
     Interp    * const debugger = debugger_or_interp(interp);
-    op_info_t * const info     = &interp->op_info_table[*pc];
+    op_info_t * const info     = interp->code->op_info_table[*pc];
     PMC *sig                   = PMCNULL;
     INTVAL n                   = info->op_count;
     INTVAL s                   = 1;

Modified: branches/gsoc_threads/src/string/api.c
==============================================================================
--- branches/gsoc_threads/src/string/api.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/string/api.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -2329,22 +2329,20 @@
 Parrot_str_to_hashval(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
 {
     ASSERT_ARGS(Parrot_str_to_hashval)
-    String_iter iter;
-    UINTVAL     offs;
-    size_t      hashval = interp->hash_seed;
 
-    if (STRING_IS_NULL(s) || !s->strlen)
-        return hashval;
+    size_t hashval = interp->hash_seed;
 
-    if (s->encoding->hash)
-        hashval = ENCODING_HASH(interp, s, hashval);
-    else if (s->charset->compute_hash)
-        hashval = CHARSET_COMPUTE_HASH(interp, s, hashval);
-    else {
-        exit_fatal(1, "String subsystem not properly initialized");
-    }
+    if ((!STRING_IS_NULL(s)) && s->strlen) {
+        if (s->encoding->hash)
+            hashval = ENCODING_HASH(interp, s, hashval);
+        else if (s->charset->compute_hash)
+            hashval = CHARSET_COMPUTE_HASH(interp, s, hashval);
+        else {
+            exit_fatal(1, "String subsystem not properly initialized");
+        }
 
-    s->hashval = hashval;
+        s->hashval = hashval;
+    }
 
     return hashval;
 }

Modified: branches/gsoc_threads/src/sub.c
==============================================================================
--- branches/gsoc_threads/src/sub.c	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/src/sub.c	Fri Aug 13 00:07:10 2010	(r48443)
@@ -182,7 +182,7 @@
         if (!debug)
             return 0;
         for (i = n = 0; n < sub->seg->base.size; ++i) {
-            op_info_t * const op_info = &interp->op_info_table[*pc];
+            op_info_t * const op_info = sub->seg->op_info_table[*pc];
             opcode_t var_args = 0;
 
             if (i >= debug->base.size)
@@ -234,7 +234,7 @@
     current_annotation = pc - base_pc;
 
     for (i = op = 0; op < debug_size; ++i) {
-        op_info_t * const op_info  = &interp->op_info_table[*base_pc];
+        op_info_t * const op_info  = interp->code->op_info_table[*base_pc];
         opcode_t          var_args = 0;
 
         if (i >= debug_size)

Modified: branches/gsoc_threads/t/codingstd/pmc_docs.t
==============================================================================
--- branches/gsoc_threads/t/codingstd/pmc_docs.t	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/t/codingstd/pmc_docs.t	Fri Aug 13 00:07:10 2010	(r48443)
@@ -121,7 +121,6 @@
 }
 
 __DATA__
-src/dynpmc/rational.pmc
 src/pmc/bigint.pmc
 src/pmc/bignum.pmc
 src/pmc/callcontext.pmc
@@ -129,10 +128,7 @@
 src/pmc/complex.pmc
 src/pmc/coroutine.pmc
 src/pmc/eval.pmc
-src/pmc/fixedintegerarray.pmc
-src/pmc/hashiterator.pmc
 src/pmc/imageio.pmc
-src/pmc/imageiosize.pmc
 src/pmc/integer.pmc
 src/pmc/namespace.pmc
 src/pmc/nci.pmc
@@ -140,7 +136,6 @@
 src/pmc/object.pmc
 src/pmc/orderedhash.pmc
 src/pmc/packfile.pmc
-src/pmc/role.pmc
 src/pmc/sub.pmc
 src/pmc/threadinterpreter.pmc
 src/pmc/unmanagedstruct.pmc

Modified: branches/gsoc_threads/t/dynoplibs/deprecated.t
==============================================================================
--- branches/gsoc_threads/t/dynoplibs/deprecated.t	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/t/dynoplibs/deprecated.t	Fri Aug 13 00:07:10 2010	(r48443)
@@ -16,7 +16,7 @@
 
 =cut
 
-.const int TESTS = 105
+.const int TESTS = 13
 
 .loadlib 'deprecated_ops'
 
@@ -31,18 +31,19 @@
     test_exchange_n()
     test_clears()
     test_exchange_s()
+    test_clearp()
 .end
 
 .sub 'test_exchange_i'
     $I10 = 10
     $I20 = 20
     exchange $I10, $I20
-    is($I10, 20, 'exchange - first operand ok')
-    is($I20, 10, 'exchange - second operand ok')
+    is($I10, 20, 'exchange i - first operand ok')
+    is($I20, 10, 'exchange i - second operand ok')
 
     $I30 = 30
     exchange $I30, $I30
-    is($I30, 30, 'exchange - reflexive')
+    is($I30, 30, 'exchange i - reflexive')
 .end
 
 
@@ -82,38 +83,44 @@
 
     cleari
 
-    is($I0, 0, 'cleari - $I0 cleared')
-    is($I1, 0, 'cleari - $I1 cleared')
-    is($I2, 0, 'cleari - $I2 cleared')
-    is($I3, 0, 'cleari - $I3 cleared')
-    is($I4, 0, 'cleari - $I4 cleared')
-    is($I5, 0, 'cleari - $I5 cleared')
-    is($I6, 0, 'cleari - $I6 cleared')
-    is($I7, 0, 'cleari - $I7 cleared')
-    is($I8, 0, 'cleari - $I8 cleared')
-    is($I9, 0, 'cleari - $I9 cleared')
-    is($I10, 0, 'cleari - $I10 cleared')
-    is($I11, 0, 'cleari - $I11 cleared')
-    is($I12, 0, 'cleari - $I12 cleared')
-    is($I13, 0, 'cleari - $I13 cleared')
-    is($I14, 0, 'cleari - $I14 cleared')
-    is($I15, 0, 'cleari - $I15 cleared')
-    is($I16, 0, 'cleari - $I16 cleared')
-    is($I17, 0, 'cleari - $I17 cleared')
-    is($I18, 0, 'cleari - $I18 cleared')
-    is($I19, 0, 'cleari - $I19 cleared')
-    is($I20, 0, 'cleari - $I20 cleared')
-    is($I21, 0, 'cleari - $I21 cleared')
-    is($I22, 0, 'cleari - $I22 cleared')
-    is($I23, 0, 'cleari - $I23 cleared')
-    is($I24, 0, 'cleari - $I24 cleared')
-    is($I25, 0, 'cleari - $I25 cleared')
-    is($I26, 0, 'cleari - $I26 cleared')
-    is($I27, 0, 'cleari - $I27 cleared')
-    is($I28, 0, 'cleari - $I28 cleared')
-    is($I29, 0, 'cleari - $I29 cleared')
-    is($I30, 0, 'cleari - $I30 cleared')
-    is($I31, 0, 'cleari - $I31 cleared')
+    $S0 = 'NO'
+
+    ne $I0, 0, result
+    ne $I1, 0, result
+    ne $I2, 0, result
+    ne $I3, 0, result
+    ne $I4, 0, result
+    ne $I5, 0, result
+    ne $I6, 0, result
+    ne $I7, 0, result
+    ne $I8, 0, result
+    ne $I9, 0, result
+    ne $I10, 0, result
+    ne $I11, 0, result
+    ne $I12, 0, result
+    ne $I13, 0, result
+    ne $I14, 0, result
+    ne $I15, 0, result
+    ne $I16, 0, result
+    ne $I17, 0, result
+    ne $I18, 0, result
+    ne $I19, 0, result
+    ne $I20, 0, result
+    ne $I21, 0, result
+    ne $I22, 0, result
+    ne $I23, 0, result
+    ne $I24, 0, result
+    ne $I25, 0, result
+    ne $I26, 0, result
+    ne $I27, 0, result
+    ne $I28, 0, result
+    ne $I29, 0, result
+    ne $I30, 0, result
+    ne $I31, 0, result
+
+    $S0 = 'YES'
+  result:
+    is($S0, 'YES', 'cleari')
 .end
 
 .sub test_clearn
@@ -150,49 +157,56 @@
     set     $N30, 547972.0
     set     $N31, 547972.0
     clearn
-    is( $N0, "0", 'clearn' )
-    is( $N1, "0", 'clearn' )
-    is( $N2, "0", 'clearn' )
-    is( $N3, "0", 'clearn' )
-    is( $N4, "0", 'clearn' )
-    is( $N5, "0", 'clearn' )
-    is( $N6, "0", 'clearn' )
-    is( $N7, "0", 'clearn' )
-    is( $N8, "0", 'clearn' )
-    is( $N9, "0", 'clearn' )
-    is( $N10, "0", 'clearn' )
-    is( $N11, "0", 'clearn' )
-    is( $N12, "0", 'clearn' )
-    is( $N13, "0", 'clearn' )
-    is( $N14, "0", 'clearn' )
-    is( $N15, "0", 'clearn' )
-    is( $N16, "0", 'clearn' )
-    is( $N17, "0", 'clearn' )
-    is( $N18, "0", 'clearn' )
-    is( $N19, "0", 'clearn' )
-    is( $N20, "0", 'clearn' )
-    is( $N21, "0", 'clearn' )
-    is( $N22, "0", 'clearn' )
-    is( $N23, "0", 'clearn' )
-    is( $N24, "0", 'clearn' )
-    is( $N25, "0", 'clearn' )
-    is( $N26, "0", 'clearn' )
-    is( $N27, "0", 'clearn' )
-    is( $N28, "0", 'clearn' )
-    is( $N29, "0", 'clearn' )
-    is( $N30, "0", 'clearn' )
-    is( $N31, "0", 'clearn' )
+
+    $I0 = 0
+
+    ne $N0, 0.0, result
+    ne $N1, 0.0, result
+    ne $N2, 0.0, result
+    ne $N3, 0.0, result
+    ne $N4, 0.0, result
+    ne $N5, 0.0, result
+    ne $N6, 0.0, result
+    ne $N7, 0.0, result
+    ne $N8, 0.0, result
+    ne $N9, 0.0, result
+    ne $N10, 0.0, result
+    ne $N11, 0.0, result
+    ne $N12, 0.0, result
+    ne $N13, 0.0, result
+    ne $N14, 0.0, result
+    ne $N15, 0.0, result
+    ne $N16, 0.0, result
+    ne $N17, 0.0, result
+    ne $N18, 0.0, result
+    ne $N19, 0.0, result
+    ne $N20, 0.0, result
+    ne $N21, 0.0, result
+    ne $N22, 0.0, result
+    ne $N23, 0.0, result
+    ne $N24, 0.0, result
+    ne $N25, 0.0, result
+    ne $N26, 0.0, result
+    ne $N27, 0.0, result
+    ne $N28, 0.0, result
+    ne $N29, 0.0, result
+    ne $N30, 0.0, result
+    ne $N31, 0.0, result
+
+    $I0 = 1
+  result:
+    is($I0, 1, 'clearn')
 .end
 
 .sub test_exchange_n
     set $N1, 1.234560
     set $N2, 9.876540
     exchange $N1, $N2
-    is( $N1, "9.87654", 'exchange' )
-    is( $N2, "1.23456", 'exchange' )
+    is( $N1, "9.87654", 'exchange n' )
+    is( $N2, "1.23456", 'exchange n' )
     set $N3, -100.200300
     exchange $N3, $N3
-    is( $N3, "-100.2003", 'exchange' )
+    is( $N3, "-100.2003", 'exchange n' )
 .end
 
 .sub test_clears
@@ -229,50 +243,85 @@
     set $S30, "BOO 30"
     set $S31, "BOO 31"
     clears
-    is( $S0, "", '' )
-    is( $S1, "", '' )
-    is( $S2, "", '' )
-    is( $S3, "", '' )
-    is( $S4, "", '' )
-    is( $S5, "", '' )
-    is( $S6, "", '' )
-    is( $S7, "", '' )
-    is( $S8, "", '' )
-    is( $S9, "", '' )
-    is( $S10, "", '' )
-    is( $S11, "", '' )
-    is( $S12, "", '' )
-    is( $S13, "", '' )
-    is( $S14, "", '' )
-    is( $S15, "", '' )
-    is( $S16, "", '' )
-    is( $S17, "", '' )
-    is( $S18, "", '' )
-    is( $S19, "", '' )
-    is( $S20, "", '' )
-    is( $S21, "", '' )
-    is( $S22, "", '' )
-    is( $S23, "", '' )
-    is( $S24, "", '' )
-    is( $S25, "", '' )
-    is( $S26, "", '' )
-    is( $S27, "", '' )
-    is( $S28, "", '' )
-    is( $S29, "", '' )
-    is( $S30, "", '' )
-    is( $S31, "", '' )
+
+    $I0 = 0
+
+    unless_null $S0, result
+    unless_null $S1, result
+    unless_null $S2, result
+    unless_null $S3, result
+    unless_null $S4, result
+    unless_null $S5, result
+    unless_null $S6, result
+    unless_null $S7, result
+    unless_null $S8, result
+    unless_null $S9, result
+    unless_null $S10, result
+    unless_null $S11, result
+    unless_null $S12, result
+    unless_null $S13, result
+    unless_null $S14, result
+    unless_null $S15, result
+    unless_null $S16, result
+    unless_null $S17, result
+    unless_null $S18, result
+    unless_null $S19, result
+    unless_null $S20, result
+    unless_null $S21, result
+    unless_null $S22, result
+    unless_null $S23, result
+    unless_null $S24, result
+    unless_null $S25, result
+    unless_null $S26, result
+    unless_null $S27, result
+    unless_null $S28, result
+    unless_null $S29, result
+    unless_null $S30, result
+    unless_null $S31, result
+
+    $I0 = 1
+  result:
+    is($I0, 1, 'clears')
 .end
 
 .sub test_exchange_s
     set $S0, "String #0"
     set $S1, "String #1"
     exchange $S0, $S1
-    is( $S0, "String #1", 'exchange' )
-    is( $S1, "String #0", 'exchange' )
+    is( $S0, "String #1", 'exchange s' )
+    is( $S1, "String #0", 'exchange s' )
 
     set $S2, "String #2"
     exchange $S2, $S2
-    is( $S2, "String #2", 'exchange' )
+    is( $S2, "String #2", 'exchange s' )
+.end
+
+.sub test_clearp
+    $P0 = new ['Integer']
+    $P1 = new ['Integer']
+    $P2 = new ['Integer']
+    $P3 = new ['Integer']
+    $P4 = new ['Integer']
+    $P5 = new ['Integer']
+    $P6 = new ['Integer']
+    $P7 = new ['Integer']
+    $P8 = new ['Integer']
+    $P9 = new ['Integer']
+    clearp
+    $I0 = 0
+    unless_null $P0, result
+    unless_null $P1, result
+    unless_null $P2, result
+    unless_null $P3, result
+    unless_null $P4, result
+    unless_null $P5, result
+    unless_null $P6, result
+    unless_null $P7, result
+    unless_null $P8, result
+    unless_null $P9, result
+    $I0 = 1
+  result:
+    is($I0, 1, 'clearp')
 .end
 
 # Local Variables:

Modified: branches/gsoc_threads/t/examples/pir.t
==============================================================================
--- branches/gsoc_threads/t/examples/pir.t	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/t/examples/pir.t	Fri Aug 13 00:07:10 2010	(r48443)
@@ -191,7 +191,9 @@
 # TODO currently broken
 # $expected{'quine_ord.pir'} = Parrot::Test::slurp_file("examples/pir/quine_ord.pir");
 
-my %skips;
+my %skips = (
+    'make_hello_pbc.pir' => [ 1, "PackfileRawSegment no longer valid for bytecode" ],
+);
 
 while ( my ( $example, $expected ) = each %expected ) {
     my $skip = $skips{$example};

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

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

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

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

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

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

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

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

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

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

Modified: branches/gsoc_threads/t/op/cmp-nonbranch.t
==============================================================================
--- branches/gsoc_threads/t/op/cmp-nonbranch.t	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/t/op/cmp-nonbranch.t	Fri Aug 13 00:07:10 2010	(r48443)
@@ -17,7 +17,7 @@
 =cut
 
 
-.const int TESTS = 93
+.const int TESTS = 96
 
 .macro EXP()
   exp_nok:
@@ -66,6 +66,7 @@
     'iseq'()
     'isne'()
     'cmp'()
+    'cmp_string_null'()
     'trac#11'()
 .end
 
@@ -1214,6 +1215,24 @@
 .end
 
 
+.sub 'cmp_string_null'
+    .local string s1, s2
+    .local int r
+    null s1
+    s2 = 'hello'
+
+    r = cmp s1, s2
+    is(r, -1, 'cmp snull, snotnull')
+
+    r = cmp s2, s1
+    is(r, 1, 'cmp snotnull, snull')
+
+    null s2
+    r = cmp s2, s1
+    is(r, 0, 'cmp snull, snull')
+.end
+
+
 .sub 'trac#11'
     $P0 = new 'String'
     assign $P0, 'foo'

Modified: branches/gsoc_threads/t/pmc/oplib.t
==============================================================================
--- branches/gsoc_threads/t/pmc/oplib.t	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/t/pmc/oplib.t	Fri Aug 13 00:07:10 2010	(r48443)
@@ -37,15 +37,17 @@
 .end
 
 .sub new_oplib
-    $P0 = new ['OpLib']
-    $I0 = isnull $P0
+    $P0 = box "core_ops"
+    $P1 = new ['OpLib'], $P0
+    $I0 = isnull $P1
     nok($I0, "new OpLib")
 .end
 
 .sub check_elements
     .local pmc oplib, op, eh
     .local int n, i
-    oplib = new ['OpLib']
+    $P0 = box "core_ops"
+    oplib = new ['OpLib'], $P0
     n = elements oplib
     i = n - 1
     op = oplib[i]
@@ -66,14 +68,16 @@
 .end
 
 .sub getint_end
-    $P0 = new ['OpLib']
+    $P0 = box 'core_ops'
+    $P0 = new ['OpLib'], $P0
     $I1 = $P0[TESTED_OP]
     $I0 = isne $I1, -1
     ok($I0, "got end opcode")
 .end
 
 .sub getint_no_opcode
-    $P0 = new ['OpLib']
+    $P0 = box 'core_ops'
+    $P0 = new ['OpLib'], $P0
     $I1 = $P0[TESTED_NOSUCHOP]
     $I0 = iseq $I1, -1
     ok($I0, "get non existent opcode fails")
@@ -81,7 +85,8 @@
 
 .sub getop_end
     .local pmc oplib, op, op2, name
-    oplib = new ['OpLib']
+    $P0 = box 'core_ops'
+    oplib = new ['OpLib'], $P0
 
     # Using a string constant
     op = oplib[TESTED_OP]
@@ -99,7 +104,8 @@
     is($I0, 0, "got end opcode data keyed pmc")
 
     $I0 = issame op, op2
-    ok($I0, "got same result from both ways")
+    $S0 = "Implement cacheing, Opcode.is_same, or change comparison"
+    todo($I0, "got same result from both ways", $S0)
 
     $I1 = op
     $I0 = oplib[TESTED_OP]
@@ -110,7 +116,8 @@
 .end
 
 .sub family_end
-    $P0 = new ['OpLib']
+    $P0 = box 'core_ops'
+    $P0 = new ['OpLib'], $P0
     $P1 = $P0.'op_family'(TESTED_OP)
     $I0 = isnull $P1
     dec $I0
@@ -121,7 +128,8 @@
 .end
 
 .sub family_no_opcode
-    $P0 = new ['OpLib']
+    $P0 = box 'core_ops'
+    $P0 = new ['OpLib'], $P0
     $P1 = $P0.'op_family'(TESTED_NOSUCHOP)
     $I0 = isnull $P1
     ok($I0, "non existent opcode family is null")

Modified: branches/gsoc_threads/t/pmc/pmc.t
==============================================================================
--- branches/gsoc_threads/t/pmc/pmc.t	Thu Aug 12 23:35:13 2010	(r48442)
+++ branches/gsoc_threads/t/pmc/pmc.t	Fri Aug 13 00:07:10 2010	(r48443)
@@ -51,7 +51,9 @@
 my $checkTypes;
 my %types_we_cant_test
     = map { $_ => 1; } (    # These require initializers.
-    qw(default Null Iterator ArrayIterator HashIterator StringIterator OrderedHashIterator Enumerate ParrotObject ParrotThread BigInt LexInfo LexPad Object Handle Opcode),
+    qw(default Null Iterator ArrayIterator HashIterator StringIterator
+        OrderedHashIterator Enumerate ParrotObject ParrotThread BigInt LexInfo
+        LexPad Object Handle Opcode OpLib),
 
     # Instances of these appear to have other types.
     qw(PMCProxy Class) );


More information about the parrot-commits mailing list