[svn:parrot] r49255 - in trunk: . compilers/data_json compilers/imcc compilers/opsc/src/Ops/Trans compilers/pct compilers/pge compilers/tge config/auto/sizes config/auto/zlib docs/book/draft docs/book/pct docs/dev docs/pdds examples/embed examples/languages/abc examples/languages/squaak examples/pge examples/tools ext/nqp-rx include/parrot lib/Parrot lib/Parrot/Configure/Step ports/cygwin ports/debian runtime/parrot/languages runtime/parrot/library runtime/parrot/library/Math src src/call src/gc src/interp src/ops src/pmc src/runcore t/codingstd t/compilers/imcc/syn t/compilers/opsc t/compilers/tge t/examples t/oo t/pmc t/src t/steps/init/hints tools/build tools/dev tools/release
plobsing at svn.parrot.org
plobsing at svn.parrot.org
Thu Sep 23 04:02:52 UTC 2010
Author: plobsing
Date: Thu Sep 23 04:02:50 2010
New Revision: 49255
URL: https://trac.parrot.org/parrot/changeset/49255
Log:
merge typesafe_consttable branch
improves rakudo startup by 0.46% and does away with tagged union constants
Modified:
trunk/ (props changed)
trunk/compilers/data_json/Rules.mak (props changed)
trunk/compilers/imcc/Rules.in (props changed)
trunk/compilers/imcc/imcparser.c
trunk/compilers/imcc/imcparser.h
trunk/compilers/imcc/pbc.c
trunk/compilers/opsc/src/Ops/Trans/C.pm
trunk/compilers/pct/Rules.mak (props changed)
trunk/compilers/pge/Rules.mak (props changed)
trunk/compilers/tge/Rules.mak (props changed)
trunk/config/auto/sizes/intval_maxmin_c.in (props changed)
trunk/config/auto/zlib/ (props changed)
trunk/docs/book/draft/README (props changed)
trunk/docs/book/draft/appa_glossary.pod (props changed)
trunk/docs/book/draft/appb_patch_submission.pod (props changed)
trunk/docs/book/draft/appc_command_line_options.pod (props changed)
trunk/docs/book/draft/appd_build_options.pod (props changed)
trunk/docs/book/draft/appe_source_code.pod (props changed)
trunk/docs/book/draft/ch01_introduction.pod (props changed)
trunk/docs/book/draft/ch02_getting_started.pod (props changed)
trunk/docs/book/draft/ch07_dynpmcs.pod (props changed)
trunk/docs/book/draft/ch08_dynops.pod (props changed)
trunk/docs/book/draft/ch10_opcode_reference.pod (props changed)
trunk/docs/book/draft/ch11_directive_reference.pod (props changed)
trunk/docs/book/draft/ch12_operator_reference.pod (props changed)
trunk/docs/book/draft/chXX_hlls.pod (props changed)
trunk/docs/book/draft/chXX_library.pod (props changed)
trunk/docs/book/draft/chXX_testing_and_debugging.pod (props changed)
trunk/docs/book/pct/ch01_introduction.pod (props changed)
trunk/docs/book/pct/ch02_getting_started.pod (props changed)
trunk/docs/book/pct/ch03_compiler_tools.pod (props changed)
trunk/docs/book/pct/ch04_pge.pod (props changed)
trunk/docs/book/pct/ch05_nqp.pod (props changed)
trunk/docs/dev/c_functions.pod (props changed)
trunk/docs/pdds/pdd30_install.pod (props changed)
trunk/examples/embed/cotorra.c (props changed)
trunk/examples/languages/abc/ (props changed)
trunk/examples/languages/squaak/ (props changed)
trunk/examples/pge/demo.pir (props changed)
trunk/examples/tools/pgegrep (props changed)
trunk/ext/nqp-rx/Rules.mak (props changed)
trunk/include/parrot/call.h (contents, props changed)
trunk/include/parrot/context.h
trunk/include/parrot/gc_api.h (props changed)
trunk/include/parrot/interpreter.h
trunk/include/parrot/packfile.h
trunk/include/parrot/runcore_api.h (props changed)
trunk/include/parrot/runcore_profiling.h (props changed)
trunk/include/parrot/runcore_trace.h (props changed)
trunk/lib/Parrot/Configure/Step/Test.pm (props changed)
trunk/lib/Parrot/H2inc.pm (props changed)
trunk/ports/cygwin/parrot-1.0.0-1.cygport (props changed)
trunk/ports/debian/libparrot-dev.install.in (props changed)
trunk/ports/debian/libparrot.install.in (props changed)
trunk/ports/debian/parrot-doc.install.in (props changed)
trunk/ports/debian/parrot.install.in (props changed)
trunk/runtime/parrot/languages/ (props changed)
trunk/runtime/parrot/library/Math/Rand.pir (props changed)
trunk/runtime/parrot/library/Rules.mak (props changed)
trunk/src/call/context.c
trunk/src/call/context_accessors.c
trunk/src/call/ops.c (props changed)
trunk/src/call/pcc.c (props changed)
trunk/src/debug.c
trunk/src/embed.c
trunk/src/gc/alloc_memory.c (props changed)
trunk/src/gc/alloc_resources.c (props changed)
trunk/src/gc/api.c (props changed)
trunk/src/gc/malloc.c (props changed)
trunk/src/gc/malloc_trace.c (props changed)
trunk/src/gc/mark_sweep.c (props changed)
trunk/src/gc/string_gc.c (props changed)
trunk/src/gc/system.c (props changed)
trunk/src/interp/inter_cb.c (props changed)
trunk/src/interp/inter_create.c (props changed)
trunk/src/interp/inter_misc.c (props changed)
trunk/src/ops/core_ops.c
trunk/src/packdump.c
trunk/src/packfile.c
trunk/src/packout.c
trunk/src/pbc_merge.c
trunk/src/pmc/callcontext.pmc
trunk/src/pmc/eval.pmc
trunk/src/pmc/imageiothaw.pmc
trunk/src/pmc/packfileconstanttable.pmc
trunk/src/pmc/sub.pmc
trunk/src/runcore/cores.c (props changed)
trunk/src/runcore/main.c (props changed)
trunk/src/runcore/profiling.c (props changed)
trunk/src/runcore/trace.c (contents, props changed)
trunk/t/codingstd/pmc_docs.t (props changed)
trunk/t/compilers/imcc/syn/regressions.t
trunk/t/compilers/opsc/07-emitter.t
trunk/t/compilers/tge/NoneGrammar.tg (props changed)
trunk/t/examples/pgegrep.t (props changed)
trunk/t/oo/objects.t (props changed)
trunk/t/oo/root_new.t (props changed)
trunk/t/pmc/namespace-old.t (props changed)
trunk/t/pmc/packfile.t
trunk/t/pmc/packfileconstanttable.t
trunk/t/src/embed.t (props changed)
trunk/t/steps/init/hints/linux-01.t (props changed)
trunk/tools/build/README (props changed)
trunk/tools/build/h2inc.pl (props changed)
trunk/tools/dev/README (props changed)
trunk/tools/dev/addopstags.pl (props changed)
trunk/tools/dev/dump_pbc.pl (props changed)
trunk/tools/dev/fetch_languages.pl (props changed)
trunk/tools/dev/headerizer.pl (props changed)
trunk/tools/dev/mk_gitignore.pl (props changed)
trunk/tools/dev/ncidef2pasm.pl (props changed)
trunk/tools/dev/parrot-config.pir (props changed)
trunk/tools/dev/perlcritic-cage.conf (props changed)
trunk/tools/dev/perlcritic.conf (props changed)
trunk/tools/dev/perltidy.conf (props changed)
trunk/tools/dev/update_copyright.pl (props changed)
trunk/tools/release/crow.pir (props changed)
trunk/tools/release/gen_release_info.pl (props changed)
trunk/tools/release/inc_ver.pir (props changed)
trunk/tools/release/release.json (props changed)
trunk/tools/release/templates.json (props changed)
Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/compilers/imcc/imcparser.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -9,27 +9,25 @@
*/
/* HEADERIZER HFILE: none */
/* HEADERIZER STOP */
-/* A Bison parser, made by GNU Bison 2.3. */
+/* A Bison parser, made by GNU Bison 2.4.3. */
/* Skeleton implementation for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2009, 2010 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
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -40,7 +38,7 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
@@ -58,7 +56,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.3"
+#define YYBISON_VERSION "2.4.3"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -66,259 +64,20 @@
/* Pure parsers. */
#define YYPURE 1
-/* Using locations. */
-#define YYLSP_NEEDED 0
-
-
+/* Push parsers. */
+#define YYPUSH 0
-/* Tokens. */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- LOW_PREC = 258,
- PARAM = 259,
- SOL = 260,
- HLL = 261,
- TK_LINE = 262,
- TK_FILE = 263,
- GOTO = 264,
- ARG = 265,
- IF = 266,
- UNLESS = 267,
- PNULL = 268,
- SET_RETURN = 269,
- SET_YIELD = 270,
- ADV_FLAT = 271,
- ADV_SLURPY = 272,
- ADV_OPTIONAL = 273,
- ADV_OPT_FLAG = 274,
- ADV_NAMED = 275,
- ADV_ARROW = 276,
- ADV_INVOCANT = 277,
- ADV_CALL_SIG = 278,
- NAMESPACE = 279,
- DOT_METHOD = 280,
- SUB = 281,
- SYM = 282,
- LOCAL = 283,
- LEXICAL = 284,
- CONST = 285,
- ANNOTATE = 286,
- GLOBAL_CONST = 287,
- PLUS_ASSIGN = 288,
- MINUS_ASSIGN = 289,
- MUL_ASSIGN = 290,
- DIV_ASSIGN = 291,
- CONCAT_ASSIGN = 292,
- BAND_ASSIGN = 293,
- BOR_ASSIGN = 294,
- BXOR_ASSIGN = 295,
- FDIV = 296,
- FDIV_ASSIGN = 297,
- MOD_ASSIGN = 298,
- SHR_ASSIGN = 299,
- SHL_ASSIGN = 300,
- SHR_U_ASSIGN = 301,
- SHIFT_LEFT = 302,
- SHIFT_RIGHT = 303,
- INTV = 304,
- FLOATV = 305,
- STRINGV = 306,
- PMCV = 307,
- LOG_XOR = 308,
- RELOP_EQ = 309,
- RELOP_NE = 310,
- RELOP_GT = 311,
- RELOP_GTE = 312,
- RELOP_LT = 313,
- RELOP_LTE = 314,
- RESULT = 315,
- RETURN = 316,
- TAILCALL = 317,
- YIELDT = 318,
- GET_RESULTS = 319,
- POW = 320,
- SHIFT_RIGHT_U = 321,
- LOG_AND = 322,
- LOG_OR = 323,
- COMMA = 324,
- ESUB = 325,
- DOTDOT = 326,
- PCC_BEGIN = 327,
- PCC_END = 328,
- PCC_CALL = 329,
- PCC_SUB = 330,
- PCC_BEGIN_RETURN = 331,
- PCC_END_RETURN = 332,
- PCC_BEGIN_YIELD = 333,
- PCC_END_YIELD = 334,
- NCI_CALL = 335,
- METH_CALL = 336,
- INVOCANT = 337,
- MAIN = 338,
- LOAD = 339,
- INIT = 340,
- IMMEDIATE = 341,
- POSTCOMP = 342,
- METHOD = 343,
- ANON = 344,
- OUTER = 345,
- NEED_LEX = 346,
- MULTI = 347,
- VTABLE_METHOD = 348,
- LOADLIB = 349,
- SUB_INSTANCE_OF = 350,
- SUBID = 351,
- NS_ENTRY = 352,
- UNIQUE_REG = 353,
- LABEL = 354,
- EMIT = 355,
- EOM = 356,
- IREG = 357,
- NREG = 358,
- SREG = 359,
- PREG = 360,
- IDENTIFIER = 361,
- REG = 362,
- MACRO = 363,
- ENDM = 364,
- STRINGC = 365,
- INTC = 366,
- FLOATC = 367,
- USTRINGC = 368,
- PARROT_OP = 369,
- VAR = 370,
- LINECOMMENT = 371,
- FILECOMMENT = 372,
- DOT = 373,
- CONCAT = 374
- };
-#endif
-/* Tokens. */
-#define LOW_PREC 258
-#define PARAM 259
-#define SOL 260
-#define HLL 261
-#define TK_LINE 262
-#define TK_FILE 263
-#define GOTO 264
-#define ARG 265
-#define IF 266
-#define UNLESS 267
-#define PNULL 268
-#define SET_RETURN 269
-#define SET_YIELD 270
-#define ADV_FLAT 271
-#define ADV_SLURPY 272
-#define ADV_OPTIONAL 273
-#define ADV_OPT_FLAG 274
-#define ADV_NAMED 275
-#define ADV_ARROW 276
-#define ADV_INVOCANT 277
-#define ADV_CALL_SIG 278
-#define NAMESPACE 279
-#define DOT_METHOD 280
-#define SUB 281
-#define SYM 282
-#define LOCAL 283
-#define LEXICAL 284
-#define CONST 285
-#define ANNOTATE 286
-#define GLOBAL_CONST 287
-#define PLUS_ASSIGN 288
-#define MINUS_ASSIGN 289
-#define MUL_ASSIGN 290
-#define DIV_ASSIGN 291
-#define CONCAT_ASSIGN 292
-#define BAND_ASSIGN 293
-#define BOR_ASSIGN 294
-#define BXOR_ASSIGN 295
-#define FDIV 296
-#define FDIV_ASSIGN 297
-#define MOD_ASSIGN 298
-#define SHR_ASSIGN 299
-#define SHL_ASSIGN 300
-#define SHR_U_ASSIGN 301
-#define SHIFT_LEFT 302
-#define SHIFT_RIGHT 303
-#define INTV 304
-#define FLOATV 305
-#define STRINGV 306
-#define PMCV 307
-#define LOG_XOR 308
-#define RELOP_EQ 309
-#define RELOP_NE 310
-#define RELOP_GT 311
-#define RELOP_GTE 312
-#define RELOP_LT 313
-#define RELOP_LTE 314
-#define RESULT 315
-#define RETURN 316
-#define TAILCALL 317
-#define YIELDT 318
-#define GET_RESULTS 319
-#define POW 320
-#define SHIFT_RIGHT_U 321
-#define LOG_AND 322
-#define LOG_OR 323
-#define COMMA 324
-#define ESUB 325
-#define DOTDOT 326
-#define PCC_BEGIN 327
-#define PCC_END 328
-#define PCC_CALL 329
-#define PCC_SUB 330
-#define PCC_BEGIN_RETURN 331
-#define PCC_END_RETURN 332
-#define PCC_BEGIN_YIELD 333
-#define PCC_END_YIELD 334
-#define NCI_CALL 335
-#define METH_CALL 336
-#define INVOCANT 337
-#define MAIN 338
-#define LOAD 339
-#define INIT 340
-#define IMMEDIATE 341
-#define POSTCOMP 342
-#define METHOD 343
-#define ANON 344
-#define OUTER 345
-#define NEED_LEX 346
-#define MULTI 347
-#define VTABLE_METHOD 348
-#define LOADLIB 349
-#define SUB_INSTANCE_OF 350
-#define SUBID 351
-#define NS_ENTRY 352
-#define UNIQUE_REG 353
-#define LABEL 354
-#define EMIT 355
-#define EOM 356
-#define IREG 357
-#define NREG 358
-#define SREG 359
-#define PREG 360
-#define IDENTIFIER 361
-#define REG 362
-#define MACRO 363
-#define ENDM 364
-#define STRINGC 365
-#define INTC 366
-#define FLOATC 367
-#define USTRINGC 368
-#define PARROT_OP 369
-#define VAR 370
-#define LINECOMMENT 371
-#define FILECOMMENT 372
-#define DOT 373
-#define CONCAT 374
+/* Pull parsers. */
+#define YYPULL 1
+/* Using locations. */
+#define YYLSP_NEEDED 0
/* Copy the first part of user declarations. */
+
+/* Line 189 of yacc.c */
#line 1 "compilers/imcc/imcc.y"
/*
@@ -1305,49 +1064,304 @@
+/* Line 189 of yacc.c */
+#line 1058 "compilers/imcc/imcparser.c"
+
/* Enabling traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table. */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ LOW_PREC = 258,
+ PARAM = 259,
+ SOL = 260,
+ HLL = 261,
+ TK_LINE = 262,
+ TK_FILE = 263,
+ GOTO = 264,
+ ARG = 265,
+ IF = 266,
+ UNLESS = 267,
+ PNULL = 268,
+ SET_RETURN = 269,
+ SET_YIELD = 270,
+ ADV_FLAT = 271,
+ ADV_SLURPY = 272,
+ ADV_OPTIONAL = 273,
+ ADV_OPT_FLAG = 274,
+ ADV_NAMED = 275,
+ ADV_ARROW = 276,
+ ADV_INVOCANT = 277,
+ ADV_CALL_SIG = 278,
+ NAMESPACE = 279,
+ DOT_METHOD = 280,
+ SUB = 281,
+ SYM = 282,
+ LOCAL = 283,
+ LEXICAL = 284,
+ CONST = 285,
+ ANNOTATE = 286,
+ GLOBAL_CONST = 287,
+ PLUS_ASSIGN = 288,
+ MINUS_ASSIGN = 289,
+ MUL_ASSIGN = 290,
+ DIV_ASSIGN = 291,
+ CONCAT_ASSIGN = 292,
+ BAND_ASSIGN = 293,
+ BOR_ASSIGN = 294,
+ BXOR_ASSIGN = 295,
+ FDIV = 296,
+ FDIV_ASSIGN = 297,
+ MOD_ASSIGN = 298,
+ SHR_ASSIGN = 299,
+ SHL_ASSIGN = 300,
+ SHR_U_ASSIGN = 301,
+ SHIFT_LEFT = 302,
+ SHIFT_RIGHT = 303,
+ INTV = 304,
+ FLOATV = 305,
+ STRINGV = 306,
+ PMCV = 307,
+ LOG_XOR = 308,
+ RELOP_EQ = 309,
+ RELOP_NE = 310,
+ RELOP_GT = 311,
+ RELOP_GTE = 312,
+ RELOP_LT = 313,
+ RELOP_LTE = 314,
+ RESULT = 315,
+ RETURN = 316,
+ TAILCALL = 317,
+ YIELDT = 318,
+ GET_RESULTS = 319,
+ POW = 320,
+ SHIFT_RIGHT_U = 321,
+ LOG_AND = 322,
+ LOG_OR = 323,
+ COMMA = 324,
+ ESUB = 325,
+ DOTDOT = 326,
+ PCC_BEGIN = 327,
+ PCC_END = 328,
+ PCC_CALL = 329,
+ PCC_SUB = 330,
+ PCC_BEGIN_RETURN = 331,
+ PCC_END_RETURN = 332,
+ PCC_BEGIN_YIELD = 333,
+ PCC_END_YIELD = 334,
+ NCI_CALL = 335,
+ METH_CALL = 336,
+ INVOCANT = 337,
+ MAIN = 338,
+ LOAD = 339,
+ INIT = 340,
+ IMMEDIATE = 341,
+ POSTCOMP = 342,
+ METHOD = 343,
+ ANON = 344,
+ OUTER = 345,
+ NEED_LEX = 346,
+ MULTI = 347,
+ VTABLE_METHOD = 348,
+ LOADLIB = 349,
+ SUB_INSTANCE_OF = 350,
+ SUBID = 351,
+ NS_ENTRY = 352,
+ UNIQUE_REG = 353,
+ LABEL = 354,
+ EMIT = 355,
+ EOM = 356,
+ IREG = 357,
+ NREG = 358,
+ SREG = 359,
+ PREG = 360,
+ IDENTIFIER = 361,
+ REG = 362,
+ MACRO = 363,
+ ENDM = 364,
+ STRINGC = 365,
+ INTC = 366,
+ FLOATC = 367,
+ USTRINGC = 368,
+ PARROT_OP = 369,
+ VAR = 370,
+ LINECOMMENT = 371,
+ FILECOMMENT = 372,
+ DOT = 373,
+ CONCAT = 374
+ };
+#endif
+/* Tokens. */
+#define LOW_PREC 258
+#define PARAM 259
+#define SOL 260
+#define HLL 261
+#define TK_LINE 262
+#define TK_FILE 263
+#define GOTO 264
+#define ARG 265
+#define IF 266
+#define UNLESS 267
+#define PNULL 268
+#define SET_RETURN 269
+#define SET_YIELD 270
+#define ADV_FLAT 271
+#define ADV_SLURPY 272
+#define ADV_OPTIONAL 273
+#define ADV_OPT_FLAG 274
+#define ADV_NAMED 275
+#define ADV_ARROW 276
+#define ADV_INVOCANT 277
+#define ADV_CALL_SIG 278
+#define NAMESPACE 279
+#define DOT_METHOD 280
+#define SUB 281
+#define SYM 282
+#define LOCAL 283
+#define LEXICAL 284
+#define CONST 285
+#define ANNOTATE 286
+#define GLOBAL_CONST 287
+#define PLUS_ASSIGN 288
+#define MINUS_ASSIGN 289
+#define MUL_ASSIGN 290
+#define DIV_ASSIGN 291
+#define CONCAT_ASSIGN 292
+#define BAND_ASSIGN 293
+#define BOR_ASSIGN 294
+#define BXOR_ASSIGN 295
+#define FDIV 296
+#define FDIV_ASSIGN 297
+#define MOD_ASSIGN 298
+#define SHR_ASSIGN 299
+#define SHL_ASSIGN 300
+#define SHR_U_ASSIGN 301
+#define SHIFT_LEFT 302
+#define SHIFT_RIGHT 303
+#define INTV 304
+#define FLOATV 305
+#define STRINGV 306
+#define PMCV 307
+#define LOG_XOR 308
+#define RELOP_EQ 309
+#define RELOP_NE 310
+#define RELOP_GT 311
+#define RELOP_GTE 312
+#define RELOP_LT 313
+#define RELOP_LTE 314
+#define RESULT 315
+#define RETURN 316
+#define TAILCALL 317
+#define YIELDT 318
+#define GET_RESULTS 319
+#define POW 320
+#define SHIFT_RIGHT_U 321
+#define LOG_AND 322
+#define LOG_OR 323
+#define COMMA 324
+#define ESUB 325
+#define DOTDOT 326
+#define PCC_BEGIN 327
+#define PCC_END 328
+#define PCC_CALL 329
+#define PCC_SUB 330
+#define PCC_BEGIN_RETURN 331
+#define PCC_END_RETURN 332
+#define PCC_BEGIN_YIELD 333
+#define PCC_END_YIELD 334
+#define NCI_CALL 335
+#define METH_CALL 336
+#define INVOCANT 337
+#define MAIN 338
+#define LOAD 339
+#define INIT 340
+#define IMMEDIATE 341
+#define POSTCOMP 342
+#define METHOD 343
+#define ANON 344
+#define OUTER 345
+#define NEED_LEX 346
+#define MULTI 347
+#define VTABLE_METHOD 348
+#define LOADLIB 349
+#define SUB_INSTANCE_OF 350
+#define SUBID 351
+#define NS_ENTRY 352
+#define UNIQUE_REG 353
+#define LABEL 354
+#define EMIT 355
+#define EOM 356
+#define IREG 357
+#define NREG 358
+#define SREG 359
+#define PREG 360
+#define IDENTIFIER 361
+#define REG 362
+#define MACRO 363
+#define ENDM 364
+#define STRINGC 365
+#define INTC 366
+#define FLOATC 367
+#define USTRINGC 368
+#define PARROT_OP 369
+#define VAR 370
+#define LINECOMMENT 371
+#define FILECOMMENT 372
+#define DOT 373
+#define CONCAT 374
+
+
-/* Enabling the token table. */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 986 "compilers/imcc/imcc.y"
{
+
+/* Line 214 of yacc.c */
+#line 986 "compilers/imcc/imcc.y"
+
IdList * idlist;
int t;
char * s;
SymReg * sr;
Instruction *i;
-}
-/* Line 187 of yacc.c. */
-#line 1327 "compilers/imcc/imcparser.c"
- YYSTYPE;
+
+
+
+/* Line 214 of yacc.c */
+#line 1342 "compilers/imcc/imcparser.c"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
#endif
-
/* Copy the second part of user declarations. */
-/* Line 216 of yacc.c. */
-#line 1340 "compilers/imcc/imcparser.c"
+/* Line 264 of yacc.c */
+#line 1354 "compilers/imcc/imcparser.c"
#ifdef short
# undef short
@@ -1397,7 +1411,7 @@
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -1422,14 +1436,14 @@
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static int
-YYID (int i)
+YYID (int yyi)
#else
static int
-YYID (i)
- int i;
+YYID (yyi)
+ int yyi;
#endif
{
- return i;
+ return yyi;
}
#endif
@@ -1510,9 +1524,9 @@
/* A type that is properly aligned for any stack member. */
union yyalloc
{
- yytype_int16 yyss;
- YYSTYPE yyvs;
- };
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+};
/* The size of the maximum gap between one aligned stack and the next. */
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
@@ -1546,12 +1560,12 @@
elements in the stack, and YYPTR gives the new location of the
stack. Advance YYPTR to a properly aligned location for the next
stack. */
-# define YYSTACK_RELOCATE(Stack) \
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
@@ -1835,28 +1849,29 @@
"DOT", "CONCAT", "'='", "'['", "']'", "';'", "'('", "')'", "'!'", "'~'",
"'-'", "'+'", "'*'", "'/'", "'%'", "'&'", "'|'", "$accept", "program",
"compilation_units", "compilation_unit", "pragma", "location_directive",
- "annotate_directive", "hll_def", "constdef", "@1", "pmc_const", "@2",
- "any_string", "pasmcode", "pasmline", "pasm_inst", "@3", "@4",
- "pasm_args", "emit", "@5", "opt_pasmcode", "class_namespace", "maybe_ns",
- "nslist", "@6", "_nslist", "sub", "@7", "@8", "@9", "sub_params",
- "sub_param", "@10", "sub_param_type_def", "multi", "outer", "vtable",
- "method", "ns_entry_name", "instanceof", "subid", "multi_types",
- "multi_type", "sub_body", "pcc_sub_call", "@11", "opt_label",
- "opt_invocant", "sub_proto", "sub_proto_list", "proto", "pcc_call",
- "pcc_args", "pcc_arg", "pcc_results", "pcc_result", "@12",
- "paramtype_list", "paramtype", "pcc_ret", "@13", "pcc_yield", "@14",
+ "annotate_directive", "hll_def", "constdef", "$@1", "pmc_const", "$@2",
+ "any_string", "pasmcode", "pasmline", "pasm_inst", "$@3", "$@4",
+ "pasm_args", "emit", "$@5", "opt_pasmcode", "class_namespace",
+ "maybe_ns", "nslist", "$@6", "_nslist", "sub", "$@7", "$@8", "$@9",
+ "sub_params", "sub_param", "$@10", "sub_param_type_def", "multi",
+ "outer", "vtable", "method", "ns_entry_name", "instanceof", "subid",
+ "multi_types", "multi_type", "sub_body", "pcc_sub_call", "@11",
+ "opt_label", "opt_invocant", "sub_proto", "sub_proto_list", "proto",
+ "pcc_call", "pcc_args", "pcc_arg", "pcc_results", "pcc_result", "$@12",
+ "paramtype_list", "paramtype", "pcc_ret", "$@13", "pcc_yield", "$@14",
"pcc_returns", "pcc_yields", "pcc_return", "pcc_set_yield",
- "pcc_return_many", "@15", "return_or_yield", "var_returns", "statements",
- "helper_clear_state", "statement", "labels", "_labels", "label",
- "instruction", "id_list", "id_list_id", "opt_unique_reg", "labeled_inst",
- "@16", "@17", "@18", "type", "assignment", "@19", "un_op", "bin_op",
- "get_results", "@20", "op_assign", "assign_op", "func_assign", "the_sub",
- "sub_call", "@21", "arglist", "arg", "argtype_list", "argtype", "result",
- "targetlist", "conditional_statement", "unless_statement",
- "if_statement", "comma_or_goto", "relop", "target", "vars", "_vars",
- "_var_or_i", "sub_label_op_c", "sub_label_op", "label_op", "var_or_i",
- "var", "keylist", "@22", "keylist_force", "@23", "_keylist", "key",
- "reg", "stringc", "const", 0
+ "pcc_return_many", "$@15", "return_or_yield", "var_returns",
+ "statements", "helper_clear_state", "statement", "labels", "_labels",
+ "label", "instruction", "id_list", "id_list_id", "opt_unique_reg",
+ "labeled_inst", "$@16", "$@17", "$@18", "type", "assignment", "@19",
+ "un_op", "bin_op", "get_results", "@20", "op_assign", "assign_op",
+ "func_assign", "the_sub", "sub_call", "@21", "arglist", "arg",
+ "argtype_list", "argtype", "result", "targetlist",
+ "conditional_statement", "unless_statement", "if_statement",
+ "comma_or_goto", "relop", "target", "vars", "_vars", "_var_or_i",
+ "sub_label_op_c", "sub_label_op", "label_op", "var_or_i", "var",
+ "keylist", "$@22", "keylist_force", "$@23", "_keylist", "key", "reg",
+ "stringc", "const", 0
};
#endif
@@ -2339,9 +2354,18 @@
/* 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. */
+ 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. */
#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)
@@ -2398,7 +2422,7 @@
we won't break user code: when these are the locations we know. */
#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
# define YY_LOCATION_PRINT(File, Loc) \
fprintf (File, "%d.%d-%d.%d", \
(Loc).first_line, (Loc).first_column, \
@@ -2515,17 +2539,20 @@
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
#else
static void
-yy_stack_print (bottom, top)
- yytype_int16 *bottom;
- yytype_int16 *top;
+yy_stack_print (yybottom, yytop)
+ yytype_int16 *yybottom;
+ yytype_int16 *yytop;
#endif
{
YYFPRINTF (stderr, "Stack now");
- for (; bottom <= top; ++bottom)
- YYFPRINTF (stderr, " %d", *bottom);
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
YYFPRINTF (stderr, "\n");
}
@@ -2561,11 +2588,11 @@
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
- fprintf (stderr, " $%d = ", yyi + 1);
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
&(yyvsp[(yyi + 1) - (yynrhs)])
, yyscanner, interp);
- fprintf (stderr, "\n");
+ YYFPRINTF (stderr, "\n");
}
}
@@ -2849,10 +2876,8 @@
break;
}
}
-
/* Prevent warnings from -Wmissing-prototypes. */
-
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
int yyparse (void *YYPARSE_PARAM);
@@ -2871,10 +2896,9 @@
-
-/*----------.
-| yyparse. |
-`----------*/
+/*-------------------------.
+| yyparse or yypush_parse. |
+`-------------------------*/
#ifdef YYPARSE_PARAM
#if (defined __STDC__ || defined __C99__FUNC__ \
@@ -2899,22 +2923,46 @@
#endif
#endif
{
- /* The look-ahead symbol. */
+/* The lookahead symbol. */
int yychar;
-/* The semantic value of the look-ahead symbol. */
+/* The semantic value of the lookahead symbol. */
YYSTYPE yylval;
-/* Number of syntax errors so far. */
-int yynerrs;
+ /* Number of syntax errors so far. */
+ int yynerrs;
+
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+
+ /* The stacks and their tools:
+ `yyss': related to states.
+ `yyvs': related to semantic values.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
+
+ YYSIZE_T yystacksize;
- int yystate;
int yyn;
int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Look-ahead token as an internal (translated) token number. */
- int yytoken = 0;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken;
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
#if YYERROR_VERBOSE
/* Buffer for error messages, and its allocated size. */
char yymsgbuf[128];
@@ -2922,51 +2970,28 @@
YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
#endif
- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
-
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss = yyssa;
- yytype_int16 *yyssp;
-
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs = yyvsa;
- YYSTYPE *yyvsp;
-
-
-
#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
- YYSIZE_T yystacksize = YYINITDEPTH;
-
- /* The variables used to return semantic value and location from the
- action routines. */
- YYSTYPE yyval;
-
-
/* The number of symbols on the RHS of the reduced rule.
Keep to zero when no symbol should be popped. */
int yylen = 0;
+ yytoken = 0;
+ yyss = yyssa;
+ yyvs = yyvsa;
+ yystacksize = YYINITDEPTH;
+
YYDPRINTF ((stderr, "Starting parse\n"));
yystate = 0;
yyerrstatus = 0;
yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
+ yychar = YYEMPTY; /* Cause a token to be read. */
/* Initialize stack pointers.
Waste one element of value and location stack
so that they stay on the same level as the state stack.
The wasted elements are never initialized. */
-
yyssp = yyss;
yyvsp = yyvs;
@@ -2996,7 +3021,6 @@
YYSTYPE *yyvs1 = yyvs;
yytype_int16 *yyss1 = yyss;
-
/* Each stack pointer address is followed by the size of the
data in use in that stack, in bytes. This used to be a
conditional around just the two extra args, but that might
@@ -3004,7 +3028,6 @@
yyoverflow (YY_("memory exhausted"),
&yyss1, yysize * sizeof (*yyssp),
&yyvs1, yysize * sizeof (*yyvsp),
-
&yystacksize);
yyss = yyss1;
@@ -3027,9 +3050,8 @@
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
if (! yyptr)
goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss);
- YYSTACK_RELOCATE (yyvs);
-
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
# undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
@@ -3040,7 +3062,6 @@
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
-
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
(unsigned long int) yystacksize));
@@ -3050,6 +3071,9 @@
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
goto yybackup;
/*-----------.
@@ -3058,16 +3082,16 @@
yybackup:
/* Do appropriate processing given the current state. Read a
- look-ahead token if we need one and don't already have one. */
+ lookahead token if we need one and don't already have one. */
- /* First try to decide what to do without reference to look-ahead token. */
+ /* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
if (yyn == YYPACT_NINF)
goto yydefault;
- /* Not known => get a look-ahead token if don't already have one. */
+ /* Not known => get a lookahead token if don't already have one. */
- /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
@@ -3099,20 +3123,16 @@
goto yyreduce;
}
- if (yyn == YYFINAL)
- YYACCEPT;
-
/* Count tokens shifted since error; after three, turn off error
status. */
if (yyerrstatus)
yyerrstatus--;
- /* Shift the look-ahead token. */
+ /* Shift the lookahead token. */
YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
- /* Discard the shifted token unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
yystate = yyn;
*++yyvsp = yylval;
@@ -3152,21 +3172,29 @@
switch (yyn)
{
case 2:
+
+/* Line 1464 of yacc.c */
#line 1081 "compilers/imcc/imcc.y"
{ if (yynerrs) YYABORT; (yyval.i) = 0; }
break;
case 5:
+
+/* Line 1464 of yacc.c */
#line 1090 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 6:
+
+/* Line 1464 of yacc.c */
#line 1091 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 7:
+
+/* Line 1464 of yacc.c */
#line 1093 "compilers/imcc/imcc.y"
{
(yyval.i) = (yyvsp[(1) - (1)].i);
@@ -3176,6 +3204,8 @@
break;
case 8:
+
+/* Line 1464 of yacc.c */
#line 1099 "compilers/imcc/imcc.y"
{
(yyval.i) = (yyvsp[(1) - (1)].i);
@@ -3185,31 +3215,43 @@
break;
case 9:
+
+/* Line 1464 of yacc.c */
#line 1104 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 10:
+
+/* Line 1464 of yacc.c */
#line 1105 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 11:
+
+/* Line 1464 of yacc.c */
#line 1106 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 12:
+
+/* Line 1464 of yacc.c */
#line 1107 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 13:
+
+/* Line 1464 of yacc.c */
#line 1111 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 14:
+
+/* Line 1464 of yacc.c */
#line 1113 "compilers/imcc/imcc.y"
{
(yyval.i) = 0;
@@ -3219,6 +3261,8 @@
break;
case 15:
+
+/* Line 1464 of yacc.c */
#line 1122 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
@@ -3228,6 +3272,8 @@
break;
case 16:
+
+/* Line 1464 of yacc.c */
#line 1128 "compilers/imcc/imcc.y"
{
/* set_filename() frees the STRINGC */
@@ -3236,6 +3282,8 @@
break;
case 17:
+
+/* Line 1464 of yacc.c */
#line 1136 "compilers/imcc/imcc.y"
{
/* We'll want to store an entry while emitting instructions, so just
@@ -3247,6 +3295,8 @@
break;
case 18:
+
+/* Line 1464 of yacc.c */
#line 1148 "compilers/imcc/imcc.y"
{
STRING * const hll_name = Parrot_str_unescape(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
@@ -3260,11 +3310,15 @@
break;
case 19:
+
+/* Line 1464 of yacc.c */
#line 1160 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->is_def = 1; }
break;
case 20:
+
+/* Line 1464 of yacc.c */
#line 1161 "compilers/imcc/imcc.y"
{
mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
@@ -3274,11 +3328,15 @@
break;
case 21:
+
+/* Line 1464 of yacc.c */
#line 1169 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->is_def = 1; }
break;
case 22:
+
+/* Line 1464 of yacc.c */
#line 1170 "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));
@@ -3289,36 +3347,50 @@
break;
case 27:
+
+/* Line 1464 of yacc.c */
#line 1188 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 28:
+
+/* Line 1464 of yacc.c */
#line 1189 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 29:
+
+/* Line 1464 of yacc.c */
#line 1190 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 30:
+
+/* Line 1464 of yacc.c */
#line 1191 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 31:
+
+/* Line 1464 of yacc.c */
#line 1192 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 34:
+
+/* Line 1464 of yacc.c */
#line 1197 "compilers/imcc/imcc.y"
{ clear_state(interp); }
break;
case 35:
+
+/* Line 1464 of yacc.c */
#line 1199 "compilers/imcc/imcc.y"
{
(yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
@@ -3329,6 +3401,8 @@
break;
case 36:
+
+/* Line 1464 of yacc.c */
#line 1206 "compilers/imcc/imcc.y"
{
imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3337,6 +3411,8 @@
break;
case 37:
+
+/* Line 1464 of yacc.c */
#line 1211 "compilers/imcc/imcc.y"
{
(yyval.i) = iSUBROUTINE(interp,
@@ -3348,6 +3424,8 @@
break;
case 38:
+
+/* Line 1464 of yacc.c */
#line 1219 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
@@ -3355,6 +3433,8 @@
break;
case 39:
+
+/* Line 1464 of yacc.c */
#line 1223 "compilers/imcc/imcc.y"
{
char *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1);
@@ -3371,16 +3451,22 @@
break;
case 40:
+
+/* Line 1464 of yacc.c */
#line 1235 "compilers/imcc/imcc.y"
{ (yyval.i) = 0;}
break;
case 42:
+
+/* Line 1464 of yacc.c */
#line 1243 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
break;
case 43:
+
+/* Line 1464 of yacc.c */
#line 1246 "compilers/imcc/imcc.y"
{
/* if (optimizer_level & OPT_PASM)
@@ -3392,6 +3478,8 @@
break;
case 46:
+
+/* Line 1464 of yacc.c */
#line 1262 "compilers/imcc/imcc.y"
{
int re_open = 0;
@@ -3407,16 +3495,22 @@
break;
case 47:
+
+/* Line 1464 of yacc.c */
#line 1276 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); }
break;
case 48:
+
+/* Line 1464 of yacc.c */
#line 1277 "compilers/imcc/imcc.y"
{ (yyval.sr) = NULL; }
break;
case 49:
+
+/* Line 1464 of yacc.c */
#line 1281 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->nkeys = 0;
@@ -3424,6 +3518,8 @@
break;
case 50:
+
+/* Line 1464 of yacc.c */
#line 1285 "compilers/imcc/imcc.y"
{
(yyval.sr) = link_keys(interp,
@@ -3433,11 +3529,15 @@
break;
case 51:
+
+/* Line 1464 of yacc.c */
#line 1293 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
break;
case 52:
+
+/* Line 1464 of yacc.c */
#line 1295 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
@@ -3446,6 +3546,8 @@
break;
case 53:
+
+/* Line 1464 of yacc.c */
#line 1303 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
@@ -3453,6 +3555,8 @@
break;
case 54:
+
+/* Line 1464 of yacc.c */
#line 1307 "compilers/imcc/imcc.y"
{
iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
@@ -3460,6 +3564,8 @@
break;
case 55:
+
+/* Line 1464 of yacc.c */
#line 1311 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t);
@@ -3471,21 +3577,29 @@
break;
case 56:
+
+/* Line 1464 of yacc.c */
#line 1319 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
break;
case 57:
+
+/* Line 1464 of yacc.c */
#line 1323 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 58:
+
+/* Line 1464 of yacc.c */
#line 1324 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 59:
+
+/* Line 1464 of yacc.c */
#line 1326 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
@@ -3499,16 +3613,22 @@
break;
case 60:
+
+/* Line 1464 of yacc.c */
#line 1338 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->is_def = 1; }
break;
case 61:
+
+/* Line 1464 of yacc.c */
#line 1338 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(3) - (3)].sr); IMCC_INFO(interp)->is_def = 0; }
break;
case 62:
+
+/* Line 1464 of yacc.c */
#line 1343 "compilers/imcc/imcc.y"
{
if ((yyvsp[(3) - (3)].t) & VT_OPT_FLAG && (yyvsp[(1) - (3)].t) != 'I') {
@@ -3532,11 +3652,15 @@
break;
case 63:
+
+/* Line 1464 of yacc.c */
#line 1367 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 64:
+
+/* Line 1464 of yacc.c */
#line 1372 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
@@ -3546,6 +3670,8 @@
break;
case 65:
+
+/* Line 1464 of yacc.c */
#line 1378 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
@@ -3555,6 +3681,8 @@
break;
case 66:
+
+/* Line 1464 of yacc.c */
#line 1387 "compilers/imcc/imcc.y"
{
(yyval.t) = P_VTABLE;
@@ -3564,6 +3692,8 @@
break;
case 67:
+
+/* Line 1464 of yacc.c */
#line 1393 "compilers/imcc/imcc.y"
{
(yyval.t) = P_VTABLE;
@@ -3573,6 +3703,8 @@
break;
case 68:
+
+/* Line 1464 of yacc.c */
#line 1402 "compilers/imcc/imcc.y"
{
(yyval.t) = P_METHOD;
@@ -3582,6 +3714,8 @@
break;
case 69:
+
+/* Line 1464 of yacc.c */
#line 1408 "compilers/imcc/imcc.y"
{
(yyval.t) = P_METHOD;
@@ -3591,6 +3725,8 @@
break;
case 70:
+
+/* Line 1464 of yacc.c */
#line 1417 "compilers/imcc/imcc.y"
{
(yyval.t) = P_NSENTRY;
@@ -3600,6 +3736,8 @@
break;
case 71:
+
+/* Line 1464 of yacc.c */
#line 1423 "compilers/imcc/imcc.y"
{
(yyval.t) = P_NSENTRY;
@@ -3609,6 +3747,8 @@
break;
case 72:
+
+/* Line 1464 of yacc.c */
#line 1432 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
@@ -3617,6 +3757,8 @@
break;
case 73:
+
+/* Line 1464 of yacc.c */
#line 1440 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
@@ -3625,6 +3767,8 @@
break;
case 74:
+
+/* Line 1464 of yacc.c */
#line 1445 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
@@ -3635,6 +3779,8 @@
break;
case 75:
+
+/* Line 1464 of yacc.c */
#line 1455 "compilers/imcc/imcc.y"
{
add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, NULL);
@@ -3642,6 +3788,8 @@
break;
case 76:
+
+/* Line 1464 of yacc.c */
#line 1459 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
@@ -3650,6 +3798,8 @@
break;
case 77:
+
+/* Line 1464 of yacc.c */
#line 1464 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
@@ -3658,26 +3808,36 @@
break;
case 78:
+
+/* Line 1464 of yacc.c */
#line 1471 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "INTVAL", 'S'); }
break;
case 79:
+
+/* Line 1464 of yacc.c */
#line 1472 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
break;
case 80:
+
+/* Line 1464 of yacc.c */
#line 1473 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "PMC", 'S'); }
break;
case 81:
+
+/* Line 1464 of yacc.c */
#line 1474 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "STRING", 'S'); }
break;
case 82:
+
+/* Line 1464 of yacc.c */
#line 1476 "compilers/imcc/imcc.y"
{
SymReg *r;
@@ -3692,6 +3852,8 @@
break;
case 83:
+
+/* Line 1464 of yacc.c */
#line 1487 "compilers/imcc/imcc.y"
{
SymReg *r;
@@ -3706,11 +3868,15 @@
break;
case 84:
+
+/* Line 1464 of yacc.c */
#line 1497 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); }
break;
case 87:
+
+/* Line 1464 of yacc.c */
#line 1507 "compilers/imcc/imcc.y"
{
char name[128];
@@ -3736,81 +3902,113 @@
break;
case 88:
+
+/* Line 1464 of yacc.c */
#line 1533 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
break;
case 89:
+
+/* Line 1464 of yacc.c */
#line 1537 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
break;
case 90:
+
+/* Line 1464 of yacc.c */
#line 1538 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
break;
case 91:
+
+/* Line 1464 of yacc.c */
#line 1542 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; }
break;
case 92:
+
+/* Line 1464 of yacc.c */
#line 1543 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
break;
case 93:
+
+/* Line 1464 of yacc.c */
#line 1547 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 95:
+
+/* Line 1464 of yacc.c */
#line 1552 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (1)].t); }
break;
case 96:
+
+/* Line 1464 of yacc.c */
#line 1553 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
case 97:
+
+/* Line 1464 of yacc.c */
#line 1557 "compilers/imcc/imcc.y"
{ (yyval.t) = P_LOAD; }
break;
case 98:
+
+/* Line 1464 of yacc.c */
#line 1558 "compilers/imcc/imcc.y"
{ (yyval.t) = P_INIT; }
break;
case 99:
+
+/* Line 1464 of yacc.c */
#line 1559 "compilers/imcc/imcc.y"
{ (yyval.t) = P_MAIN; }
break;
case 100:
+
+/* Line 1464 of yacc.c */
#line 1560 "compilers/imcc/imcc.y"
{ (yyval.t) = P_IMMEDIATE; }
break;
case 101:
+
+/* Line 1464 of yacc.c */
#line 1561 "compilers/imcc/imcc.y"
{ (yyval.t) = P_POSTCOMP; }
break;
case 102:
+
+/* Line 1464 of yacc.c */
#line 1562 "compilers/imcc/imcc.y"
{ (yyval.t) = P_ANON; }
break;
case 103:
+
+/* Line 1464 of yacc.c */
#line 1563 "compilers/imcc/imcc.y"
{ (yyval.t) = P_NEED_LEX; }
break;
case 111:
+
+/* Line 1464 of yacc.c */
#line 1575 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
@@ -3819,6 +4017,8 @@
break;
case 112:
+
+/* Line 1464 of yacc.c */
#line 1580 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3826,6 +4026,8 @@
break;
case 113:
+
+/* Line 1464 of yacc.c */
#line 1584 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3833,6 +4035,8 @@
break;
case 114:
+
+/* Line 1464 of yacc.c */
#line 1588 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3840,6 +4044,8 @@
break;
case 115:
+
+/* Line 1464 of yacc.c */
#line 1592 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
@@ -3847,6 +4053,8 @@
break;
case 116:
+
+/* Line 1464 of yacc.c */
#line 1596 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
@@ -3855,6 +4063,8 @@
break;
case 117:
+
+/* Line 1464 of yacc.c */
#line 1601 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
@@ -3863,11 +4073,15 @@
break;
case 118:
+
+/* Line 1464 of yacc.c */
#line 1609 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 119:
+
+/* Line 1464 of yacc.c */
#line 1610 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
@@ -3881,16 +4095,22 @@
break;
case 120:
+
+/* Line 1464 of yacc.c */
#line 1622 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (2)].sr); }
break;
case 121:
+
+/* Line 1464 of yacc.c */
#line 1627 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 122:
+
+/* Line 1464 of yacc.c */
#line 1629 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
@@ -3899,16 +4119,22 @@
break;
case 123:
+
+/* Line 1464 of yacc.c */
#line 1636 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 124:
+
+/* Line 1464 of yacc.c */
#line 1637 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->is_def = 1; }
break;
case 125:
+
+/* Line 1464 of yacc.c */
#line 1638 "compilers/imcc/imcc.y"
{
IdList * const l = (yyvsp[(4) - (4)].idlist);
@@ -3921,66 +4147,92 @@
break;
case 126:
+
+/* Line 1464 of yacc.c */
#line 1649 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 127:
+
+/* Line 1464 of yacc.c */
#line 1650 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
case 128:
+
+/* Line 1464 of yacc.c */
#line 1654 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_FLAT; }
break;
case 129:
+
+/* Line 1464 of yacc.c */
#line 1655 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_OPTIONAL; }
break;
case 130:
+
+/* Line 1464 of yacc.c */
#line 1656 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_OPT_FLAG; }
break;
case 131:
+
+/* Line 1464 of yacc.c */
#line 1657 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_NAMED; }
break;
case 132:
+
+/* Line 1464 of yacc.c */
#line 1658 "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 133:
+
+/* Line 1464 of yacc.c */
#line 1659 "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 134:
+
+/* Line 1464 of yacc.c */
#line 1660 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 135:
+
+/* Line 1464 of yacc.c */
#line 1661 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_CALL_SIG; }
break;
case 136:
+
+/* Line 1464 of yacc.c */
#line 1666 "compilers/imcc/imcc.y"
{ begin_return_or_yield(interp, 0); }
break;
case 137:
+
+/* Line 1464 of yacc.c */
#line 1668 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
break;
case 138:
+
+/* Line 1464 of yacc.c */
#line 1670 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->asm_state = AsmDefault;
@@ -3989,21 +4241,29 @@
break;
case 139:
+
+/* Line 1464 of yacc.c */
#line 1677 "compilers/imcc/imcc.y"
{ begin_return_or_yield(interp, 1); }
break;
case 140:
+
+/* Line 1464 of yacc.c */
#line 1679 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
break;
case 141:
+
+/* Line 1464 of yacc.c */
#line 1683 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 142:
+
+/* Line 1464 of yacc.c */
#line 1685 "compilers/imcc/imcc.y"
{
if ((yyvsp[(1) - (2)].sr))
@@ -4012,6 +4272,8 @@
break;
case 143:
+
+/* Line 1464 of yacc.c */
#line 1690 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
@@ -4020,11 +4282,15 @@
break;
case 144:
+
+/* Line 1464 of yacc.c */
#line 1697 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 145:
+
+/* Line 1464 of yacc.c */
#line 1699 "compilers/imcc/imcc.y"
{
if ((yyvsp[(1) - (2)].sr))
@@ -4033,6 +4299,8 @@
break;
case 146:
+
+/* Line 1464 of yacc.c */
#line 1704 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
@@ -4041,16 +4309,22 @@
break;
case 147:
+
+/* Line 1464 of yacc.c */
#line 1711 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 148:
+
+/* Line 1464 of yacc.c */
#line 1715 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 149:
+
+/* Line 1464 of yacc.c */
#line 1720 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->asm_state == AsmDefault)
@@ -4059,6 +4333,8 @@
break;
case 150:
+
+/* Line 1464 of yacc.c */
#line 1725 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->asm_state = AsmDefault;
@@ -4067,21 +4343,29 @@
break;
case 151:
+
+/* Line 1464 of yacc.c */
#line 1732 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 152:
+
+/* Line 1464 of yacc.c */
#line 1733 "compilers/imcc/imcc.y"
{ (yyval.t) = 1; }
break;
case 153:
+
+/* Line 1464 of yacc.c */
#line 1737 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 154:
+
+/* Line 1464 of yacc.c */
#line 1739 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4095,6 +4379,8 @@
break;
case 155:
+
+/* Line 1464 of yacc.c */
#line 1749 "compilers/imcc/imcc.y"
{
SymReg * const name = mk_const(interp, (yyvsp[(1) - (3)].s), 'S');
@@ -4103,6 +4389,8 @@
break;
case 156:
+
+/* Line 1464 of yacc.c */
#line 1754 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4116,6 +4404,8 @@
break;
case 157:
+
+/* Line 1464 of yacc.c */
#line 1764 "compilers/imcc/imcc.y"
{
SymReg * const name = mk_const(interp, (yyvsp[(3) - (5)].s), 'S');
@@ -4124,46 +4414,64 @@
break;
case 160:
+
+/* Line 1464 of yacc.c */
#line 1785 "compilers/imcc/imcc.y"
{ clear_state(interp); }
break;
case 161:
+
+/* Line 1464 of yacc.c */
#line 1790 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (2)].i); }
break;
case 162:
+
+/* Line 1464 of yacc.c */
#line 1791 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 163:
+
+/* Line 1464 of yacc.c */
#line 1792 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 164:
+
+/* Line 1464 of yacc.c */
#line 1793 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 165:
+
+/* Line 1464 of yacc.c */
#line 1794 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 166:
+
+/* Line 1464 of yacc.c */
#line 1795 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 167:
+
+/* Line 1464 of yacc.c */
#line 1799 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; }
break;
case 171:
+
+/* Line 1464 of yacc.c */
#line 1810 "compilers/imcc/imcc.y"
{
Instruction * const i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
@@ -4173,11 +4481,15 @@
break;
case 172:
+
+/* Line 1464 of yacc.c */
#line 1820 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (3)].i); }
break;
case 173:
+
+/* Line 1464 of yacc.c */
#line 1822 "compilers/imcc/imcc.y"
{
if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
@@ -4189,6 +4501,8 @@
break;
case 174:
+
+/* Line 1464 of yacc.c */
#line 1833 "compilers/imcc/imcc.y"
{
IdList* const l = (yyvsp[(1) - (1)].idlist);
@@ -4198,6 +4512,8 @@
break;
case 175:
+
+/* Line 1464 of yacc.c */
#line 1840 "compilers/imcc/imcc.y"
{
IdList* const l = (yyvsp[(3) - (3)].idlist);
@@ -4207,6 +4523,8 @@
break;
case 176:
+
+/* Line 1464 of yacc.c */
#line 1849 "compilers/imcc/imcc.y"
{
IdList* const l = mem_gc_allocate_n_zeroed_typed(interp, 1, IdList);
@@ -4216,11 +4534,15 @@
break;
case 181:
+
+/* Line 1464 of yacc.c */
#line 1865 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->is_def = 1; }
break;
case 182:
+
+/* Line 1464 of yacc.c */
#line 1866 "compilers/imcc/imcc.y"
{
IdList *l = (yyvsp[(4) - (4)].idlist);
@@ -4237,6 +4559,8 @@
break;
case 183:
+
+/* Line 1464 of yacc.c */
#line 1879 "compilers/imcc/imcc.y"
{
if ((yyvsp[(4) - (4)].sr)->set != 'P') {
@@ -4257,6 +4581,8 @@
break;
case 184:
+
+/* Line 1464 of yacc.c */
#line 1896 "compilers/imcc/imcc.y"
{
if ((yyvsp[(4) - (4)].sr)->set != 'P') {
@@ -4273,11 +4599,15 @@
break;
case 185:
+
+/* Line 1464 of yacc.c */
#line 1908 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->is_def = 1; }
break;
case 186:
+
+/* Line 1464 of yacc.c */
#line 1909 "compilers/imcc/imcc.y"
{
mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
@@ -4287,11 +4617,15 @@
break;
case 188:
+
+/* Line 1464 of yacc.c */
#line 1916 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->is_def = 1; }
break;
case 189:
+
+/* Line 1464 of yacc.c */
#line 1917 "compilers/imcc/imcc.y"
{
mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
@@ -4301,6 +4635,8 @@
break;
case 190:
+
+/* Line 1464 of yacc.c */
#line 1923 "compilers/imcc/imcc.y"
{
(yyval.i) = NULL;
@@ -4310,6 +4646,8 @@
break;
case 191:
+
+/* Line 1464 of yacc.c */
#line 1929 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
@@ -4317,6 +4655,8 @@
break;
case 192:
+
+/* Line 1464 of yacc.c */
#line 1933 "compilers/imcc/imcc.y"
{
(yyval.i) = INS(interp,
@@ -4332,71 +4672,99 @@
break;
case 193:
+
+/* Line 1464 of yacc.c */
#line 1944 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
break;
case 194:
+
+/* Line 1464 of yacc.c */
#line 1945 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
break;
case 195:
+
+/* Line 1464 of yacc.c */
#line 1946 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 198:
+
+/* Line 1464 of yacc.c */
#line 1949 "compilers/imcc/imcc.y"
{ (yyval.i) = 0;}
break;
case 199:
+
+/* Line 1464 of yacc.c */
#line 1953 "compilers/imcc/imcc.y"
{ (yyval.t) = 'I'; }
break;
case 200:
+
+/* Line 1464 of yacc.c */
#line 1954 "compilers/imcc/imcc.y"
{ (yyval.t) = 'N'; }
break;
case 201:
+
+/* Line 1464 of yacc.c */
#line 1955 "compilers/imcc/imcc.y"
{ (yyval.t) = 'S'; }
break;
case 202:
+
+/* Line 1464 of yacc.c */
#line 1956 "compilers/imcc/imcc.y"
{ (yyval.t) = 'P'; }
break;
case 203:
+
+/* Line 1464 of yacc.c */
#line 1961 "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 204:
+
+/* Line 1464 of yacc.c */
#line 1963 "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 205:
+
+/* Line 1464 of yacc.c */
#line 1965 "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 206:
+
+/* Line 1464 of yacc.c */
#line 1967 "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 207:
+
+/* Line 1464 of yacc.c */
#line 1969 "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 208:
+
+/* Line 1464 of yacc.c */
#line 1972 "compilers/imcc/imcc.y"
{
add_pcc_result(interp, (yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
@@ -4406,6 +4774,8 @@
break;
case 209:
+
+/* Line 1464 of yacc.c */
#line 1978 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
@@ -4413,6 +4783,8 @@
break;
case 210:
+
+/* Line 1464 of yacc.c */
#line 1982 "compilers/imcc/imcc.y"
{
IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
@@ -4421,6 +4793,8 @@
break;
case 214:
+
+/* Line 1464 of yacc.c */
#line 1990 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
@@ -4428,136 +4802,190 @@
break;
case 215:
+
+/* Line 1464 of yacc.c */
#line 1997 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"not"; }
break;
case 216:
+
+/* Line 1464 of yacc.c */
#line 1998 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bnot"; }
break;
case 217:
+
+/* Line 1464 of yacc.c */
#line 1999 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"neg"; }
break;
case 218:
+
+/* Line 1464 of yacc.c */
#line 2003 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"sub"; }
break;
case 219:
+
+/* Line 1464 of yacc.c */
#line 2004 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"add"; }
break;
case 220:
+
+/* Line 1464 of yacc.c */
#line 2005 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mul"; }
break;
case 221:
+
+/* Line 1464 of yacc.c */
#line 2006 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"div"; }
break;
case 222:
+
+/* Line 1464 of yacc.c */
#line 2007 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mod"; }
break;
case 223:
+
+/* Line 1464 of yacc.c */
#line 2008 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"fdiv"; }
break;
case 224:
+
+/* Line 1464 of yacc.c */
#line 2009 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"pow"; }
break;
case 225:
+
+/* Line 1464 of yacc.c */
#line 2010 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"concat"; }
break;
case 226:
+
+/* Line 1464 of yacc.c */
#line 2011 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"iseq"; }
break;
case 227:
+
+/* Line 1464 of yacc.c */
#line 2012 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isne"; }
break;
case 228:
+
+/* Line 1464 of yacc.c */
#line 2013 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isgt"; }
break;
case 229:
+
+/* Line 1464 of yacc.c */
#line 2014 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isge"; }
break;
case 230:
+
+/* Line 1464 of yacc.c */
#line 2015 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"islt"; }
break;
case 231:
+
+/* Line 1464 of yacc.c */
#line 2016 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isle"; }
break;
case 232:
+
+/* Line 1464 of yacc.c */
#line 2017 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shl"; }
break;
case 233:
+
+/* Line 1464 of yacc.c */
#line 2018 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shr"; }
break;
case 234:
+
+/* Line 1464 of yacc.c */
#line 2019 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lsr"; }
break;
case 235:
+
+/* Line 1464 of yacc.c */
#line 2020 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"and"; }
break;
case 236:
+
+/* Line 1464 of yacc.c */
#line 2021 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"or"; }
break;
case 237:
+
+/* Line 1464 of yacc.c */
#line 2022 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"xor"; }
break;
case 238:
+
+/* Line 1464 of yacc.c */
#line 2023 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"band"; }
break;
case 239:
+
+/* Line 1464 of yacc.c */
#line 2024 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bor"; }
break;
case 240:
+
+/* Line 1464 of yacc.c */
#line 2025 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bxor"; }
break;
case 241:
+
+/* Line 1464 of yacc.c */
#line 2031 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
@@ -4567,81 +4995,113 @@
break;
case 242:
+
+/* Line 1464 of yacc.c */
#line 2036 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 243:
+
+/* Line 1464 of yacc.c */
#line 2043 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); }
break;
case 244:
+
+/* Line 1464 of yacc.c */
#line 2047 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"add"; }
break;
case 245:
+
+/* Line 1464 of yacc.c */
#line 2048 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"sub"; }
break;
case 246:
+
+/* Line 1464 of yacc.c */
#line 2049 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mul"; }
break;
case 247:
+
+/* Line 1464 of yacc.c */
#line 2050 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"div"; }
break;
case 248:
+
+/* Line 1464 of yacc.c */
#line 2051 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mod"; }
break;
case 249:
+
+/* Line 1464 of yacc.c */
#line 2052 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"fdiv"; }
break;
case 250:
+
+/* Line 1464 of yacc.c */
#line 2053 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"concat"; }
break;
case 251:
+
+/* Line 1464 of yacc.c */
#line 2054 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"band"; }
break;
case 252:
+
+/* Line 1464 of yacc.c */
#line 2055 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bor"; }
break;
case 253:
+
+/* Line 1464 of yacc.c */
#line 2056 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bxor"; }
break;
case 254:
+
+/* Line 1464 of yacc.c */
#line 2057 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shr"; }
break;
case 255:
+
+/* Line 1464 of yacc.c */
#line 2058 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shl"; }
break;
case 256:
+
+/* Line 1464 of yacc.c */
#line 2059 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lsr"; }
break;
case 257:
+
+/* Line 1464 of yacc.c */
#line 2065 "compilers/imcc/imcc.y"
{
(yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
@@ -4653,21 +5113,29 @@
break;
case 258:
+
+/* Line 1464 of yacc.c */
#line 2075 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 259:
+
+/* Line 1464 of yacc.c */
#line 2076 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 260:
+
+/* Line 1464 of yacc.c */
#line 2077 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 261:
+
+/* Line 1464 of yacc.c */
#line 2079 "compilers/imcc/imcc.y"
{
(yyval.sr) = (yyvsp[(1) - (1)].sr);
@@ -4677,6 +5145,8 @@
break;
case 262:
+
+/* Line 1464 of yacc.c */
#line 2085 "compilers/imcc/imcc.y"
{
/* disallow bareword method names; SREG name constants are fine */
@@ -4694,6 +5164,8 @@
break;
case 263:
+
+/* Line 1464 of yacc.c */
#line 2099 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
@@ -4703,6 +5175,8 @@
break;
case 264:
+
+/* Line 1464 of yacc.c */
#line 2105 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
@@ -4712,11 +5186,15 @@
break;
case 265:
+
+/* Line 1464 of yacc.c */
#line 2110 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
break;
case 266:
+
+/* Line 1464 of yacc.c */
#line 2116 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
@@ -4725,16 +5203,22 @@
break;
case 267:
+
+/* Line 1464 of yacc.c */
#line 2120 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (5)].i); }
break;
case 268:
+
+/* Line 1464 of yacc.c */
#line 2124 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 269:
+
+/* Line 1464 of yacc.c */
#line 2126 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
@@ -4748,6 +5232,8 @@
break;
case 270:
+
+/* Line 1464 of yacc.c */
#line 2136 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
@@ -4761,6 +5247,8 @@
break;
case 271:
+
+/* Line 1464 of yacc.c */
#line 2146 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
@@ -4771,6 +5259,8 @@
break;
case 272:
+
+/* Line 1464 of yacc.c */
#line 2153 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
@@ -4779,6 +5269,8 @@
break;
case 273:
+
+/* Line 1464 of yacc.c */
#line 2158 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
@@ -4789,51 +5281,71 @@
break;
case 274:
+
+/* Line 1464 of yacc.c */
#line 2167 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
break;
case 275:
+
+/* Line 1464 of yacc.c */
#line 2171 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 276:
+
+/* Line 1464 of yacc.c */
#line 2172 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
case 277:
+
+/* Line 1464 of yacc.c */
#line 2176 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_FLAT; }
break;
case 278:
+
+/* Line 1464 of yacc.c */
#line 2177 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_NAMED; }
break;
case 279:
+
+/* Line 1464 of yacc.c */
#line 2178 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_CALL_SIG; }
break;
case 280:
+
+/* Line 1464 of yacc.c */
#line 2180 "compilers/imcc/imcc.y"
{ adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); mem_sys_free((yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
break;
case 281:
+
+/* Line 1464 of yacc.c */
#line 2181 "compilers/imcc/imcc.y"
{ adv_named_set(interp, (yyvsp[(3) - (4)].s)); mem_sys_free((yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
break;
case 282:
+
+/* Line 1464 of yacc.c */
#line 2185 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
break;
case 283:
+
+/* Line 1464 of yacc.c */
#line 2190 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
@@ -4847,6 +5359,8 @@
break;
case 284:
+
+/* Line 1464 of yacc.c */
#line 2200 "compilers/imcc/imcc.y"
{
add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call,
@@ -4856,6 +5370,8 @@
break;
case 285:
+
+/* Line 1464 of yacc.c */
#line 2206 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
@@ -4869,6 +5385,8 @@
break;
case 286:
+
+/* Line 1464 of yacc.c */
#line 2216 "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));
@@ -4877,21 +5395,29 @@
break;
case 287:
+
+/* Line 1464 of yacc.c */
#line 2220 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 288:
+
+/* Line 1464 of yacc.c */
#line 2224 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 289:
+
+/* Line 1464 of yacc.c */
#line 2225 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 290:
+
+/* Line 1464 of yacc.c */
#line 2230 "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));
@@ -4899,6 +5425,8 @@
break;
case 291:
+
+/* Line 1464 of yacc.c */
#line 2234 "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));
@@ -4906,6 +5434,8 @@
break;
case 292:
+
+/* Line 1464 of yacc.c */
#line 2238 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
@@ -4913,6 +5443,8 @@
break;
case 293:
+
+/* Line 1464 of yacc.c */
#line 2245 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
@@ -4920,6 +5452,8 @@
break;
case 294:
+
+/* Line 1464 of yacc.c */
#line 2249 "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));
@@ -4927,6 +5461,8 @@
break;
case 295:
+
+/* Line 1464 of yacc.c */
#line 2253 "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));
@@ -4934,66 +5470,92 @@
break;
case 296:
+
+/* Line 1464 of yacc.c */
#line 2259 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 297:
+
+/* Line 1464 of yacc.c */
#line 2260 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 298:
+
+/* Line 1464 of yacc.c */
#line 2264 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"eq"; }
break;
case 299:
+
+/* Line 1464 of yacc.c */
#line 2265 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"ne"; }
break;
case 300:
+
+/* Line 1464 of yacc.c */
#line 2266 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"gt"; }
break;
case 301:
+
+/* Line 1464 of yacc.c */
#line 2267 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"ge"; }
break;
case 302:
+
+/* Line 1464 of yacc.c */
#line 2268 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lt"; }
break;
case 303:
+
+/* Line 1464 of yacc.c */
#line 2269 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"le"; }
break;
case 306:
+
+/* Line 1464 of yacc.c */
#line 2278 "compilers/imcc/imcc.y"
{ (yyval.sr) = NULL; }
break;
case 307:
+
+/* Line 1464 of yacc.c */
#line 2279 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (1)].sr); }
break;
case 308:
+
+/* Line 1464 of yacc.c */
#line 2283 "compilers/imcc/imcc.y"
{ (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
break;
case 310:
+
+/* Line 1464 of yacc.c */
#line 2288 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
break;
case 311:
+
+/* Line 1464 of yacc.c */
#line 2290 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
@@ -5004,6 +5566,8 @@
break;
case 312:
+
+/* Line 1464 of yacc.c */
#line 2297 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
@@ -5012,36 +5576,50 @@
break;
case 314:
+
+/* Line 1464 of yacc.c */
#line 2304 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 315:
+
+/* Line 1464 of yacc.c */
#line 2305 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 316:
+
+/* Line 1464 of yacc.c */
#line 2309 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 317:
+
+/* Line 1464 of yacc.c */
#line 2310 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 318:
+
+/* Line 1464 of yacc.c */
#line 2314 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 319:
+
+/* Line 1464 of yacc.c */
#line 2315 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 324:
+
+/* Line 1464 of yacc.c */
#line 2329 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->nkeys = 0;
@@ -5049,6 +5627,8 @@
break;
case 325:
+
+/* Line 1464 of yacc.c */
#line 2333 "compilers/imcc/imcc.y"
{
(yyval.sr) = link_keys(interp,
@@ -5058,6 +5638,8 @@
break;
case 326:
+
+/* Line 1464 of yacc.c */
#line 2341 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->nkeys = 0;
@@ -5065,6 +5647,8 @@
break;
case 327:
+
+/* Line 1464 of yacc.c */
#line 2345 "compilers/imcc/imcc.y"
{
(yyval.sr) = link_keys(interp,
@@ -5074,11 +5658,15 @@
break;
case 328:
+
+/* Line 1464 of yacc.c */
#line 2353 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
break;
case 329:
+
+/* Line 1464 of yacc.c */
#line 2355 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
@@ -5087,6 +5675,8 @@
break;
case 330:
+
+/* Line 1464 of yacc.c */
#line 2363 "compilers/imcc/imcc.y"
{
(yyval.sr) = (yyvsp[(1) - (1)].sr);
@@ -5094,58 +5684,79 @@
break;
case 331:
+
+/* Line 1464 of yacc.c */
#line 2369 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
break;
case 332:
+
+/* Line 1464 of yacc.c */
#line 2370 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
break;
case 333:
+
+/* Line 1464 of yacc.c */
#line 2371 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
break;
case 334:
+
+/* Line 1464 of yacc.c */
#line 2372 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
break;
case 335:
+
+/* Line 1464 of yacc.c */
#line 2373 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 336:
+
+/* Line 1464 of yacc.c */
#line 2377 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 337:
+
+/* Line 1464 of yacc.c */
#line 2378 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 338:
+
+/* Line 1464 of yacc.c */
#line 2382 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 339:
+
+/* Line 1464 of yacc.c */
#line 2383 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 340:
+
+/* Line 1464 of yacc.c */
#line 2384 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (1)].sr); }
break;
-/* Line 1267 of yacc.c. */
-#line 5138 "compilers/imcc/imcparser.c"
+
+/* Line 1464 of yacc.c */
+#line 5749 "compilers/imcc/imcparser.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5156,7 +5767,6 @@
*++yyvsp = yyval;
-
/* Now `shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
number reduced by. */
@@ -5221,7 +5831,7 @@
if (yyerrstatus == 3)
{
- /* If just tried and failed to reuse look-ahead token after an
+ /* If just tried and failed to reuse lookahead token after an
error, discard it. */
if (yychar <= YYEOF)
@@ -5238,7 +5848,7 @@
}
}
- /* Else will try to reuse look-ahead token after shifting the error
+ /* Else will try to reuse lookahead token after shifting the error
token. */
goto yyerrlab1;
@@ -5295,9 +5905,6 @@
YY_STACK_PRINT (yyss, yyssp);
}
- if (yyn == YYFINAL)
- YYACCEPT;
-
*++yyvsp = yylval;
@@ -5322,7 +5929,7 @@
yyresult = 1;
goto yyreturn;
-#ifndef yyoverflow
+#if !defined(yyoverflow) || YYERROR_VERBOSE
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
@@ -5333,7 +5940,7 @@
#endif
yyreturn:
- if (yychar != YYEOF && yychar != YYEMPTY)
+ if (yychar != YYEMPTY)
yydestruct ("Cleanup: discarding lookahead",
yytoken, &yylval, yyscanner, interp);
/* Do not reclaim the symbols of the rule which action triggered
@@ -5359,6 +5966,8 @@
}
+
+/* Line 1684 of yacc.c */
#line 2390 "compilers/imcc/imcc.y"
Modified: trunk/compilers/imcc/imcparser.h
==============================================================================
--- trunk/compilers/imcc/imcparser.h Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/compilers/imcc/imcparser.h Thu Sep 23 04:02:50 2010 (r49255)
@@ -9,27 +9,25 @@
*/
/* HEADERIZER HFILE: none */
/* HEADERIZER STOP */
-/* A Bison parser, made by GNU Bison 2.3. */
+/* A Bison parser, made by GNU Bison 2.4.3. */
/* Skeleton interface for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2009, 2010 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
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -40,10 +38,11 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
@@ -293,21 +292,27 @@
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 986 "compilers/imcc/imcc.y"
{
+
+/* Line 1685 of yacc.c */
+#line 986 "compilers/imcc/imcc.y"
+
IdList * idlist;
int t;
char * s;
SymReg * sr;
Instruction *i;
-}
-/* Line 1489 of yacc.c. */
-#line 295 "compilers/imcc/imcparser.h"
- YYSTYPE;
+
+
+
+/* Line 1685 of yacc.c */
+#line 299 "compilers/imcc/imcparser.h"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
#endif
+
Modified: trunk/compilers/imcc/pbc.c
==============================================================================
--- trunk/compilers/imcc/pbc.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/compilers/imcc/pbc.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -10,6 +10,7 @@
#include "pmc/pmc_sub.h"
#include "pmc/pmc_callcontext.h"
#include "parrot/oplib/core_ops.h"
+#include "pmc/pmc_key.h"
/* HEADERIZER HFILE: compilers/imcc/pbc.h */
@@ -58,12 +59,10 @@
FUNC_MODIFIES(*r);
static int add_const_key(PARROT_INTERP,
- ARGIN(const opcode_t *key),
+ const opcode_t *key,
int size,
- ARGIN(const char *s_key))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(4);
+ const char *s_key)
+ __attribute__nonnull__(1);
PARROT_WARN_UNUSED_RESULT
static int add_const_num(PARROT_INTERP, ARGIN_NULLOK(const char *buf))
@@ -84,13 +83,6 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static int add_const_table(PARROT_INTERP)
- __attribute__nonnull__(1);
-
-static int add_const_table_key(PARROT_INTERP, ARGIN(PMC *key))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
static int add_const_table_pmc(PARROT_INTERP, ARGIN(PMC *pmc))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -214,9 +206,7 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(r))
#define ASSERT_ARGS_add_const_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(key) \
- , PARROT_ASSERT_ARG(s_key))
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_add_const_num __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_add_const_pmc_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -225,11 +215,6 @@
#define ASSERT_ARGS_add_const_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(s))
-#define ASSERT_ARGS_add_const_table __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_add_const_table_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(key))
#define ASSERT_ARGS_add_const_table_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pmc))
@@ -338,44 +323,6 @@
/*
-=item C<static int add_const_table(PARROT_INTERP)>
-
-Adds an empty item to constant table, returning its position.
-
-=cut
-
-*/
-
-static int
-add_const_table(PARROT_INTERP)
-{
- ASSERT_ARGS(add_const_table)
- const size_t oldcount = interp->code->const_table->const_count;
- const size_t newcount = oldcount + 1;
-
- /* Update the constant count and reallocate */
- if (interp->code->const_table->constants) {
- interp->code->const_table->constants =
- mem_gc_realloc_n_typed_zeroed(interp, interp->code->const_table->constants,
- newcount, oldcount, PackFile_Constant);
- }
- else {
- /* initialize rlookup cache */
- interp->code->const_table->string_hash = parrot_create_hash(interp,
- enum_type_INTVAL,
- Hash_key_type_STRING_enc);
- interp->code->const_table->constants =
- mem_gc_allocate_n_zeroed_typed(interp, newcount, PackFile_Constant);
- }
-
- interp->code->const_table->const_count = newcount;
-
- return oldcount;
-}
-
-
-/*
-
=item C<static int add_const_table_pmc(PARROT_INTERP, PMC *pmc)>
Adds a PMC to the const table, returning its position.
@@ -388,37 +335,20 @@
add_const_table_pmc(PARROT_INTERP, ARGIN(PMC *pmc))
{
ASSERT_ARGS(add_const_table_pmc)
- const int newitem = add_const_table(interp);
- PackFile_Constant * const constant = &interp->code->const_table->constants[newitem];
-
- constant->type = PFC_PMC;
- constant->u.key = pmc;
-
- return newitem;
-}
-
-
-/*
+ PackFile_ConstTable *ct = interp->code->const_table;
-=item C<static int add_const_table_key(PARROT_INTERP, PMC *key)>
-
-Adds a key to the const table, returning its position.
-
-=cut
-
-*/
+ if (!ct->pmc.constants)
+ ct->pmc.constants =
+ mem_gc_allocate_n_zeroed_typed(interp, 1, PMC *);
+ else
+ ct->pmc.constants =
+ mem_gc_realloc_n_typed_zeroed(interp, ct->pmc.constants,
+ ct->pmc.const_count + 1, ct->pmc.const_count, PMC *);
-static int
-add_const_table_key(PARROT_INTERP, ARGIN(PMC *key))
-{
- ASSERT_ARGS(add_const_table_key)
- const int newitem = add_const_table(interp);
- PackFile_Constant * const constant = &interp->code->const_table->constants[newitem];
- constant->type = PFC_KEY;
- constant->u.key = key;
+ ct->pmc.constants[ct->pmc.const_count++] = pmc;
- return newitem;
+ return ct->pmc.const_count - 1;
}
@@ -1128,8 +1058,8 @@
ASSERT_ARGS(add_const_str)
PMC *s_pmc = key_new_string(interp, s);
- PackFile_ConstTable *table = interp->code->const_table;
- int i = PackFile_ConstTable_rlookup(interp, table, s_pmc, PFC_STRING);
+ PackFile_ConstTable *ct = interp->code->const_table;
+ int i = PackFile_ConstTable_rlookup(interp, ct, s_pmc, PFC_STRING);
if (i >= 0)
return i;
@@ -1137,14 +1067,27 @@
/* otherwise... */
{
- int k = add_const_table(interp);
- PackFile_Constant *constant = &table->constants[k];
- constant->type = PFC_STRING;
- constant->u.string = s;
+ if (!ct->str.constants)
+ ct->str.constants =
+ mem_gc_allocate_n_zeroed_typed(interp, 1, STRING *);
+
+ else
+ ct->str.constants =
+ mem_gc_realloc_n_typed_zeroed(interp, ct->str.constants,
+ ct->str.const_count + 1, ct->str.const_count, STRING *);
- parrot_hash_put(interp, table->string_hash, s, (void *)k);
+ /* initialize rlookup cache */
+ if (!ct->string_hash)
+ ct->string_hash = parrot_create_hash(interp,
+ enum_type_INTVAL,
+ Hash_key_type_STRING_enc);
- return k;
+ ct->str.constants[ct->str.const_count] = s;
+
+ parrot_hash_put(interp, ct->string_hash, s,
+ (void *)ct->str.const_count);
+
+ return ct->str.const_count++;
}
}
@@ -1164,15 +1107,20 @@
add_const_num(PARROT_INTERP, ARGIN_NULLOK(const char *buf))
{
ASSERT_ARGS(add_const_num)
- const int k = add_const_table(interp);
- STRING * const s = Parrot_str_new(interp, buf, 0);
+ PackFile_ConstTable *ct = interp->code->const_table;
+ STRING * const s = Parrot_str_new(interp, buf, 0);
- PackFile_Constant * const constant = &interp->code->const_table->constants[k];
+ if (!ct->num.constants)
+ ct->num.constants =
+ mem_gc_allocate_n_zeroed_typed(interp, 1, FLOATVAL);
+ else
+ ct->num.constants =
+ mem_gc_realloc_n_typed_zeroed(interp, ct->num.constants,
+ ct->num.const_count + 1, ct->num.const_count, FLOATVAL);
- constant->type = PFC_NUMBER;
- constant->u.number = Parrot_str_to_num(interp, s);
+ ct->num.constants[ct->num.const_count] = Parrot_str_to_num(interp, s);
- return k;
+ return ct->num.const_count++;
}
@@ -1212,7 +1160,7 @@
r = pcc_sub->multi[i];
if (r->set == 'S') {
- STRING * const type_name = ct->constants[r->color].u.string;
+ STRING * const type_name = ct->str.constants[r->color];
const INTVAL type_num = Parrot_pmc_get_type_str(interp, type_name);
if (type_num == enum_type_undef) {
@@ -1225,7 +1173,7 @@
}
else {
PARROT_ASSERT(r->set == 'K');
- sig_pmc = ct->constants[r->color].u.key;
+ sig_pmc = ct->pmc.constants[r->color];
}
VTABLE_set_pmc_keyed_int(interp, multi_sig, i, sig_pmc);
@@ -1256,10 +1204,10 @@
int need_lex)
{
ASSERT_ARGS(create_lexinfo)
- PMC *lex_info = NULL;
- SymHash *hsh = &unit->hash;
- PackFile_Constant *constants = interp->code->const_table->constants;
- const INTVAL lex_info_id = Parrot_get_ctx_HLL_type(interp,
+ PMC *lex_info = NULL;
+ SymHash *hsh = &unit->hash;
+ PackFile_ConstTable *ct = interp->code->const_table;
+ const INTVAL lex_info_id = Parrot_get_ctx_HLL_type(interp,
enum_class_LexInfo);
unsigned int i;
@@ -1284,7 +1232,7 @@
Parrot_Sub_attributes *sub;
PARROT_ASSERT(k >= 0);
- lex_name = constants[k].u.string;
+ lex_name = ct->str.constants[k];
PARROT_ASSERT(PObj_is_string_TEST(lex_name));
PMC_get_sub(interp, sub_pmc, sub);
@@ -1411,9 +1359,9 @@
int i;
int ns_const = -1;
+ SymReg * const ns = unit->_namespace ? unit->_namespace->reg : NULL;
if (unit->_namespace) {
- SymReg * const ns = unit->_namespace->reg;
/* strip namespace off from front */
static const char ns_sep[] = "@@@";
@@ -1479,7 +1427,7 @@
Sub_comp_get_FLAGS(sub) |= (r->pcc_sub->pragma & SUB_COMP_FLAG_MASK);
r->color = add_const_str(interp, IMCC_string_from_reg(interp, r));
- sub->name = ct->constants[r->color].u.string;
+ sub->name = ct->str.constants[r->color];
/* If the unit has no subid, set the subid to match the name. */
if (!unit->subid)
@@ -1496,18 +1444,21 @@
IMCC_string_from_reg(interp, unit->subid));
}
- sub->subid = ct->constants[unit->subid->color].u.string;
+ sub->subid = ct->str.constants[unit->subid->color];
ns_pmc = NULL;
- if (ns_const >= 0 && ns_const < ct->const_count) {
- switch (ct->constants[ns_const].type) {
- case PFC_KEY:
- ns_pmc = ct->constants[ns_const].u.key;
+ if (ns) {
+ switch (ns->set) {
+ case 'K':
+ if (ns_const >= 0 && ns_const < ct->pmc.const_count)
+ ns_pmc = ct->pmc.constants[ns_const];
break;
- case PFC_STRING:
- ns_pmc = Parrot_pmc_new_constant(interp, enum_class_String);
- VTABLE_set_string_native(interp, ns_pmc,
- ct->constants[ns_const].u.string);
+ case 'S':
+ if (ns_const >= 0 && ns_const < ct->str.const_count) {
+ ns_pmc = Parrot_pmc_new_constant(interp, enum_class_String);
+ VTABLE_set_string_native(interp, ns_pmc,
+ ct->str.constants[ns_const]);
+ }
break;
default:
break;
@@ -1600,11 +1551,7 @@
/* store the sub */
{
- const int k = add_const_table(interp);
- PackFile_Constant * const pfc = &ct->constants[k];
-
- pfc->type = PFC_PMC;
- pfc->u.key = sub_pmc;
+ const int k = add_const_table_pmc(interp, sub_pmc);
unit->sub_pmc = sub_pmc;
IMCC_INFO(interp)->globals->cs->subs->pmc_const = k;
@@ -1647,7 +1594,7 @@
*/
static int
-add_const_key(PARROT_INTERP, ARGIN(const opcode_t *key), int size, ARGIN(const char *s_key))
+add_const_key(PARROT_INTERP, const opcode_t *key, int size, const char *s_key)
{
ASSERT_ARGS(add_const_key)
const SymReg * const r =
@@ -1659,9 +1606,11 @@
if (r)
return r->color;
+#if 0
pfc = mem_gc_allocate_typed(interp, PackFile_Constant);
rc = PackFile_Constant_unpack_key(interp,
interp->code->const_table, pfc, key);
+#endif
if (!rc) {
mem_sys_free(pfc);
@@ -1669,7 +1618,7 @@
"add_const_key: PackFile_Constant error\n");
}
- k = add_const_table_key(interp, pfc->u.key);
+ k = add_const_table_pmc(interp, pfc->u.key);
store_key_const(interp, s_key, k);
@@ -1703,30 +1652,23 @@
build_key(PARROT_INTERP, ARGIN(SymReg *key_reg))
{
ASSERT_ARGS(build_key)
-#define MAX_KEY_LEN 10
-#define MAX_KEYNAME_LEN 20
- SymReg *reg = key_reg->set == 'K' ? key_reg->nextkey : key_reg;
-
- char s_key[MAX_KEY_LEN * MAX_KEYNAME_LEN];
- opcode_t key[MAX_KEY_LEN * 2 + 1];
- opcode_t size;
- int key_length = 0; /* P0["hi;there"; S0; 2] has length 3 */
- int k;
-
- /* 0 is length */
- opcode_t *pc = key + 1;
- /* stringified key */
- char *s = s_key;
+ PackFile_ConstTable *ct = interp->code->const_table;
+ SymReg *reg = key_reg->set == 'K' ? key_reg->nextkey : key_reg;
+ PMC *head = NULL;
+ PMC *tail = NULL;
+ opcode_t regno, k;
- *s = 0;
-
- for (key_length = 0; reg ; reg = reg->nextkey, key_length++) {
+ for (; reg; reg = reg->nextkey) {
SymReg *r = reg;
- if (key_length >= MAX_KEY_LEN)
- IMCC_fatal(interp, 1, "build_key:"
- "Key too long, increase MAX_KEY_LEN.\n");
+ if (tail) {
+ SETATTR_Key_next_key(interp, tail, Parrot_pmc_new_constant(interp, enum_class_Key));
+ GETATTR_Key_next_key(interp, tail, tail);
+ }
+ else {
+ head = tail = Parrot_pmc_new_constant(interp, enum_class_Key);
+ }
switch (r->type) {
case VTIDENTIFIER: /* P[S0] */
@@ -1737,21 +1679,16 @@
if (r->reg)
r = r->reg;
+ /* don't emit mapped regs in key parts */
+ regno = r->color >= 0 ? r->color : -1 - r->color;
+
if (r->set == 'I')
- *pc++ = PARROT_ARG_I; /* register type */
+ key_set_register(interp, tail, regno, KEY_integer_FLAG);
else if (r->set == 'S')
- *pc++ = PARROT_ARG_S;
+ key_set_register(interp, tail, regno, KEY_string_FLAG);
else
IMCC_fatal(interp, 1, "build_key: wrong register set\n");
- /* don't emit mapped regs in key parts */
- if (r->color < 0)
- *pc++ = -1 - r->color;
- else
- *pc++ = r->color;
-
- sprintf(s+strlen(s), "%c%d", r->set, (int)r->color);
-
IMCC_debug(interp, DEBUG_PBC_CONST,
" keypart reg %s %c%d\n",
r->name, r->set, (int)r->color);
@@ -1764,30 +1701,15 @@
switch (r->set) {
case 'S': /* P["key"] */
/* str constant */
- *pc++ = PARROT_ARG_SC;
-
- /* constant idx */
- *pc++ = r->color;
-
- IMCC_debug(interp, DEBUG_PBC_CONST,
- " keypart SC %s #%d\n",
- r->name, r->color);
+ key_set_string(interp, tail, ct->str.constants[r->color]);
break;
case 'I': /* P[;42;..] */
/* int constant */
- *pc++ = PARROT_ARG_IC;
-
- /* value */
- *pc++ = r->color = atol(r->name);
-
- IMCC_debug(interp, DEBUG_PBC_CONST,
- " keypart IC %s #%d\n",
- r->name, r->color);
+ key_set_integer(interp, tail, atol(r->name));
break;
default:
IMCC_fatal(interp, 1, "build_key: unknown set\n");
}
- sprintf(s+strlen(s), "%cc" INTVAL_FMT, r->set, r->color);
break;
default:
IMCC_fatal(interp, 1, "build_key: "
@@ -1795,13 +1717,7 @@
}
}
- key[0] = key_length;
- size = pc - key;
-
- /* now we have a packed key, which packfile can work on */
- /* XXX endianess? probably no, we pack/unpack on the very
- * same computer */
- k = add_const_key(interp, key, size, s_key);
+ k = add_const_table_pmc(interp, head);
/* single 'S' keys already have their color assigned */
if (key_reg->set == 'K')
@@ -2226,7 +2142,7 @@
{
ASSERT_ARGS(verify_signature)
PMC *changed_sig = NULL;
- PMC * const sig_arr = interp->code->const_table->constants[pc[-1]].u.key;
+ PMC * const sig_arr = interp->code->const_table->pmc.constants[pc[-1]];
op_lib_t *core_ops = PARROT_GET_CORE_OPLIB(interp);
int needed = 0;
int no_consts = (ins->op == &core_ops->op_info_table[PARROT_OP_get_results_pc]
Modified: trunk/compilers/opsc/src/Ops/Trans/C.pm
==============================================================================
--- trunk/compilers/opsc/src/Ops/Trans/C.pm Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/compilers/opsc/src/Ops/Trans/C.pm Thu Sep 23 04:02:50 2010 (r49255)
@@ -24,12 +24,12 @@
:k("PREG(NUM)"),
:ki("IREG(NUM)"),
- :ic("cur_opcode[NUM]"),
- :nc("CONST(NUM).u.number"),
- :pc("CONST(NUM).u.key"),
- :sc("CONST(NUM).u.string"),
- :kc("CONST(NUM).u.key"),
- :kic("cur_opcode[NUM]")
+ :ic("ICONST(NUM)"),
+ :nc("NCONST(NUM)"),
+ :pc("PCONST(NUM)"),
+ :sc("SCONST(NUM)"),
+ :kc("PCONST(NUM)"),
+ :kic("ICONST(NUM)")
);
self;
@@ -108,14 +108,17 @@
method defines($emitter) {
return qq|
/* defines - Ops::Trans::C */
-#undef CONST
#define REL_PC ((size_t)(cur_opcode - (opcode_t *)interp->code->base.data))
#define CUR_OPCODE cur_opcode
#define IREG(i) (CUR_CTX->bp.regs_i[cur_opcode[i]])
#define NREG(i) (CUR_CTX->bp.regs_n[-1L - cur_opcode[i]])
#define PREG(i) (CUR_CTX->bp_ps.regs_p[-1L - cur_opcode[i]])
#define SREG(i) (CUR_CTX->bp_ps.regs_s[cur_opcode[i]])
-#define CONST(i) Parrot_pcc_get_constants(interp, interp->ctx)[cur_opcode[i]]
+#define ICONST(i) cur_opcode[i]
+#define NCONST(i) Parrot_pcc_get_num_constants(interp, interp->ctx)[cur_opcode[i]]
+#define SCONST(i) Parrot_pcc_get_str_constants(interp, interp->ctx)[cur_opcode[i]]
+#undef PCONST
+#define PCONST(i) Parrot_pcc_get_pmc_constants(interp, interp->ctx)[cur_opcode[i]]
static int get_op(PARROT_INTERP, const char * name, int full);
|;
Modified: trunk/include/parrot/call.h
==============================================================================
--- trunk/include/parrot/call.h Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/include/parrot/call.h Thu Sep 23 04:02:50 2010 (r49255)
@@ -308,7 +308,7 @@
|| OPCODE_IS((interp), (seg), *(pc), _core_ops, PARROT_OP_get_results_pc) \
|| OPCODE_IS((interp), (seg), *(pc), _core_ops, PARROT_OP_get_params_pc) \
|| OPCODE_IS((interp), (seg), *(pc), _core_ops, PARROT_OP_set_returns_pc)) { \
- PMC * const sig = (seg)->const_table->constants[(pc)[1]].u.key; \
+ PMC * const sig = (seg)->const_table->pmc.constants[(pc)[1]]; \
(n) += VTABLE_elements((interp), sig); \
} \
} while (0)
Modified: trunk/include/parrot/context.h
==============================================================================
--- trunk/include/parrot/context.h Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/include/parrot/context.h Thu Sep 23 04:02:50 2010 (r49255)
@@ -12,7 +12,7 @@
#include "parrot/string.h"
#include "parrot/compiler.h"
-struct PackFile_Constant;
+struct PackFile_ConstTable;
typedef union {
PMC **regs_p;
@@ -103,13 +103,6 @@
__attribute__nonnull__(2);
PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PARROT_PURE_FUNCTION
-struct PackFile_Constant * Parrot_pcc_get_constants_func(SHIM_INTERP,
- ARGIN(PMC *ctx))
- __attribute__nonnull__(2);
-
-PARROT_EXPORT
PARROT_CAN_RETURN_NULL
PARROT_PURE_FUNCTION
Parrot_Context* Parrot_pcc_get_context_struct_func(SHIM_INTERP,
@@ -153,6 +146,12 @@
__attribute__nonnull__(2);
PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PARROT_PURE_FUNCTION
+FLOATVAL * Parrot_pcc_get_num_constants_func(SHIM_INTERP, ARGIN(PMC *ctx))
+ __attribute__nonnull__(2);
+
+PARROT_EXPORT
PARROT_PURE_FUNCTION
PARROT_CAN_RETURN_NULL
PMC* Parrot_pcc_get_object_func(SHIM_INTERP, ARGIN(PMC *ctx))
@@ -179,6 +178,12 @@
__attribute__nonnull__(2);
PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PARROT_PURE_FUNCTION
+PMC ** Parrot_pcc_get_pmc_constants_func(SHIM_INTERP, ARGIN(PMC *ctx))
+ __attribute__nonnull__(2);
+
+PARROT_EXPORT
PARROT_PURE_FUNCTION
UINTVAL Parrot_pcc_get_recursion_depth_func(SHIM_INTERP, ARGIN(PMC *ctx))
__attribute__nonnull__(2);
@@ -190,6 +195,12 @@
__attribute__nonnull__(2);
PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PARROT_PURE_FUNCTION
+STRING ** Parrot_pcc_get_str_constants_func(SHIM_INTERP, ARGIN(PMC *ctx))
+ __attribute__nonnull__(2);
+
+PARROT_EXPORT
PARROT_PURE_FUNCTION
PARROT_CAN_RETURN_NULL
STRING* Parrot_pcc_get_string_constant_func(SHIM_INTERP,
@@ -212,8 +223,9 @@
PARROT_CAN_RETURN_NULL
void Parrot_pcc_set_constants_func(SHIM_INTERP,
ARGIN(PMC *ctx),
- ARGIN_NULLOK(struct PackFile_Constant *constants))
- __attribute__nonnull__(2);
+ ARGIN(struct PackFile_ConstTable *ct))
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
PARROT_EXPORT
void Parrot_pcc_set_continuation_func(SHIM_INTERP,
@@ -320,8 +332,6 @@
#define ASSERT_ARGS_Parrot_pcc_get_caller_ctx_func \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(ctx))
-#define ASSERT_ARGS_Parrot_pcc_get_constants_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(ctx))
#define ASSERT_ARGS_Parrot_pcc_get_context_struct_func \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_Parrot_pcc_get_continuation_func \
@@ -338,6 +348,9 @@
#define ASSERT_ARGS_Parrot_pcc_get_num_constant_func \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(ctx))
+#define ASSERT_ARGS_Parrot_pcc_get_num_constants_func \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(ctx))
#define ASSERT_ARGS_Parrot_pcc_get_object_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(ctx))
#define ASSERT_ARGS_Parrot_pcc_get_outer_ctx_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -347,11 +360,17 @@
#define ASSERT_ARGS_Parrot_pcc_get_pmc_constant_func \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(ctx))
+#define ASSERT_ARGS_Parrot_pcc_get_pmc_constants_func \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(ctx))
#define ASSERT_ARGS_Parrot_pcc_get_recursion_depth_func \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(ctx))
#define ASSERT_ARGS_Parrot_pcc_get_signature_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(ctx))
+#define ASSERT_ARGS_Parrot_pcc_get_str_constants_func \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(ctx))
#define ASSERT_ARGS_Parrot_pcc_get_string_constant_func \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(ctx))
@@ -363,7 +382,8 @@
PARROT_ASSERT_ARG(ctx) \
, PARROT_ASSERT_ARG(caller_ctx))
#define ASSERT_ARGS_Parrot_pcc_set_constants_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(ctx))
+ PARROT_ASSERT_ARG(ctx) \
+ , PARROT_ASSERT_ARG(ct))
#define ASSERT_ARGS_Parrot_pcc_set_continuation_func \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(ctx))
@@ -408,8 +428,14 @@
#ifdef NDEBUG
# define Parrot_pcc_get_context_struct(i, c) CONTEXT_STRUCT(c)
-# define Parrot_pcc_get_constants(i, c) (CONTEXT_STRUCT(c)->constants)
-# define Parrot_pcc_set_constants(i, c, value) (CONTEXT_STRUCT(c)->constants = (value))
+# define Parrot_pcc_get_num_constants(i, c) (CONTEXT_STRUCT(c)->num_constants)
+# define Parrot_pcc_get_str_constants(i, c) (CONTEXT_STRUCT(c)->str_constants)
+# define Parrot_pcc_get_pmc_constants(i, c) (CONTEXT_STRUCT(c)->pmc_constants)
+# define Parrot_pcc_set_constants(i, c, ct) do { \
+ CONTEXT_STRUCT(c)->num_constants = (ct)->num.constants; \
+ CONTEXT_STRUCT(c)->str_constants = (ct)->str.constants; \
+ CONTEXT_STRUCT(c)->pmc_constants = (ct)->pmc.constants; \
+} while (0)
# define Parrot_pcc_get_continuation(i, c) (CONTEXT_STRUCT(c)->current_cont)
# define Parrot_pcc_set_continuation(i, c, value) (CONTEXT_STRUCT(c)->current_cont = (value))
@@ -441,9 +467,9 @@
# define Parrot_pcc_get_signature(i, c) (CONTEXT_STRUCT(c)->current_sig)
# define Parrot_pcc_set_signature(i, c, value) (CONTEXT_STRUCT(c)->current_sig = (value))
-# define Parrot_pcc_get_num_constant(i, c, idx) (CONTEXT_STRUCT(c)->constants[(idx)].u.number)
-# define Parrot_pcc_get_string_constant(i, c, idx) (CONTEXT_STRUCT(c)->constants[(idx)].u.string)
-# define Parrot_pcc_get_pmc_constant(i, c, idx) (CONTEXT_STRUCT(c)->constants[(idx)].u.key)
+# define Parrot_pcc_get_num_constant(i, c, idx) (CONTEXT_STRUCT(c)->num_constants[(idx)])
+# define Parrot_pcc_get_string_constant(i, c, idx) (CONTEXT_STRUCT(c)->str_constants[(idx)])
+# define Parrot_pcc_get_pmc_constant(i, c, idx) (CONTEXT_STRUCT(c)->pmc_constants[(idx)])
# define Parrot_pcc_get_recursion_depth(i, c) (CONTEXT_STRUCT(c)->recursion_depth)
# define Parrot_pcc_dec_recursion_depth(i, c) (--CONTEXT_STRUCT(c)->recursion_depth)
@@ -465,7 +491,9 @@
# define Parrot_pcc_get_context_struct(i, c) Parrot_pcc_get_context_struct_func((i), (c))
-# define Parrot_pcc_get_constants(i, c) Parrot_pcc_get_constants_func((i), (c))
+# define Parrot_pcc_get_num_constants(i, c) Parrot_pcc_get_num_constants_func((i), (c))
+# define Parrot_pcc_get_str_constants(i, c) Parrot_pcc_get_str_constants_func((i), (c))
+# define Parrot_pcc_get_pmc_constants(i, c) Parrot_pcc_get_pmc_constants_func((i), (c))
# define Parrot_pcc_set_constants(i, c, value) Parrot_pcc_set_constants_func((i), (c), (value))
# define Parrot_pcc_get_continuation(i, c) Parrot_pcc_get_continuation_func((i), (c))
Modified: trunk/include/parrot/interpreter.h
==============================================================================
--- trunk/include/parrot/interpreter.h Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/include/parrot/interpreter.h Thu Sep 23 04:02:50 2010 (r49255)
@@ -301,9 +301,6 @@
} iglobals_enum;
/* &end_gen */
-#define PCONST(i) PF_CONST(interp->code, (i))
-#define PNCONST PF_NCONST(interp->code)
-
/* TODO - Make this a config option */
#ifndef PARROT_CATCH_NULL
# ifdef S_SPLINT_S
Modified: trunk/include/parrot/packfile.h
==============================================================================
--- trunk/include/parrot/packfile.h Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/include/parrot/packfile.h Thu Sep 23 04:02:50 2010 (r49255)
@@ -16,9 +16,6 @@
#include "parrot/parrot.h"
-#define PF_NCONST(pf) ((pf)->const_table->const_count)
-#define PF_CONST(pf, i) ((pf)->const_table->constants[(i)])
-
#define DIRECTORY_SEGMENT_NAME Parrot_str_new_constant(interp, "DIRECTORY")
#define FIXUP_TABLE_SEGMENT_NAME Parrot_str_new_constant(interp, "FIXUP")
#define CONSTANT_SEGMENT_NAME Parrot_str_new_constant(interp, "CONSTANT")
@@ -259,10 +256,20 @@
typedef struct PackFile_ConstTable {
PackFile_Segment base;
- opcode_t const_count;
- PackFile_Constant *constants;
- PackFile_ByteCode *code; /* where this segment belongs to */
- Hash *string_hash; /* Hash for lookup strings and numbers */
+ struct {
+ opcode_t const_count;
+ FLOATVAL *constants;
+ } num;
+ struct {
+ opcode_t const_count;
+ STRING **constants;
+ } str;
+ struct {
+ opcode_t const_count;
+ PMC **constants;
+ } pmc;
+ PackFile_ByteCode *code; /* where this segment belongs to */
+ Hash *string_hash; /* Hash for lookup strings and numbers */
} PackFile_ConstTable;
typedef struct PackFile_ByteCode_OpMappingEntry {
@@ -387,19 +394,6 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-opcode_t * PackFile_Constant_pack(PARROT_INTERP,
- ARGIN(const PackFile_ConstTable *const_table),
- ARGIN(const PackFile_Constant *self),
- ARGOUT(opcode_t *cursor))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(*cursor);
-
-PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
opcode_t * PackFile_ConstTable_pack(PARROT_INTERP,
@@ -450,11 +444,6 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*self);
-#define ASSERT_ARGS_PackFile_Constant_pack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(const_table) \
- , PARROT_ASSERT_ARG(self) \
- , PARROT_ASSERT_ARG(cursor))
#define ASSERT_ARGS_PackFile_ConstTable_pack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(seg) \
@@ -529,54 +518,6 @@
__attribute__nonnull__(1);
PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-size_t PackFile_Constant_pack_size(PARROT_INTERP,
- ARGIN(const PackFile_Constant *self),
- ARGIN(const PackFile_ConstTable *ct))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-const opcode_t * PackFile_Constant_unpack(PARROT_INTERP,
- ARGIN(PackFile_ConstTable *constt),
- ARGOUT(PackFile_Constant *self),
- ARGIN(const opcode_t *cursor))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(*self);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-const opcode_t * PackFile_Constant_unpack_key(PARROT_INTERP,
- ARGIN(PackFile_ConstTable *constt),
- ARGMOD(PackFile_Constant *self),
- ARGIN(const opcode_t *cursor))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(*self);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-const opcode_t * PackFile_Constant_unpack_pmc(PARROT_INTERP,
- ARGIN(PackFile_ConstTable *constt),
- ARGMOD(PackFile_Constant *self),
- ARGIN(const opcode_t *cursor))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(*self);
-
-PARROT_EXPORT
void PackFile_ConstTable_clear(PARROT_INTERP,
ARGMOD(PackFile_ConstTable *self))
__attribute__nonnull__(1)
@@ -883,25 +824,6 @@
, PARROT_ASSERT_ARG(self))
#define ASSERT_ARGS_PackFile_Annotations_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_PackFile_Constant_pack_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(self) \
- , PARROT_ASSERT_ARG(ct))
-#define ASSERT_ARGS_PackFile_Constant_unpack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(constt) \
- , PARROT_ASSERT_ARG(self) \
- , PARROT_ASSERT_ARG(cursor))
-#define ASSERT_ARGS_PackFile_Constant_unpack_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(constt) \
- , PARROT_ASSERT_ARG(self) \
- , PARROT_ASSERT_ARG(cursor))
-#define ASSERT_ARGS_PackFile_Constant_unpack_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(constt) \
- , PARROT_ASSERT_ARG(self) \
- , PARROT_ASSERT_ARG(cursor))
#define ASSERT_ARGS_PackFile_ConstTable_clear __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(self))
Modified: trunk/src/call/context.c
==============================================================================
--- trunk/src/call/context.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/call/context.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -277,7 +277,9 @@
ctx->current_sub = PMCNULL;
if (PMC_IS_NULL(pmcold)) {
- ctx->constants = NULL;
+ ctx->num_constants = NULL;
+ ctx->str_constants = NULL;
+ ctx->pmc_constants = NULL;
ctx->warns = 0;
ctx->errors = 0;
ctx->trace_flags = 0;
@@ -288,7 +290,9 @@
else {
Parrot_Context *old = CONTEXT_STRUCT(pmcold);
/* some items should better be COW copied */
- ctx->constants = old->constants;
+ ctx->num_constants = old->num_constants;
+ ctx->str_constants = old->str_constants;
+ ctx->pmc_constants = old->pmc_constants;
ctx->warns = old->warns;
ctx->errors = old->errors;
ctx->trace_flags = old->trace_flags;
Modified: trunk/src/call/context_accessors.c
==============================================================================
--- trunk/src/call/context_accessors.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/call/context_accessors.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -49,11 +49,14 @@
/*
-=item C<struct PackFile_Constant * Parrot_pcc_get_constants_func(PARROT_INTERP,
-PMC *ctx)>
+=item C<FLOATVAL * Parrot_pcc_get_num_constants_func(PARROT_INTERP, PMC *ctx)>
+
+=item C<STRING ** Parrot_pcc_get_str_constants_func(PARROT_INTERP, PMC *ctx)>
+
+=item C<PMC ** Parrot_pcc_get_pmc_constants_func(PARROT_INTERP, PMC *ctx)>
=item C<void Parrot_pcc_set_constants_func(PARROT_INTERP, PMC *ctx, struct
-PackFile_Constant *constants)>
+PackFile_ConstTable *ct)>
Get/set constants from context.
@@ -64,22 +67,44 @@
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
PARROT_PURE_FUNCTION
-struct PackFile_Constant *
-Parrot_pcc_get_constants_func(SHIM_INTERP, ARGIN(PMC *ctx))
+FLOATVAL *
+Parrot_pcc_get_num_constants_func(SHIM_INTERP, ARGIN(PMC *ctx))
+{
+ ASSERT_ARGS(Parrot_pcc_get_num_constants_func)
+ return CONTEXT_STRUCT(ctx)->num_constants;
+}
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PARROT_PURE_FUNCTION
+STRING **
+Parrot_pcc_get_str_constants_func(SHIM_INTERP, ARGIN(PMC *ctx))
+{
+ ASSERT_ARGS(Parrot_pcc_get_str_constants_func)
+ return CONTEXT_STRUCT(ctx)->str_constants;
+}
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PARROT_PURE_FUNCTION
+PMC **
+Parrot_pcc_get_pmc_constants_func(SHIM_INTERP, ARGIN(PMC *ctx))
{
- ASSERT_ARGS(Parrot_pcc_get_constants_func)
- return CONTEXT_STRUCT(ctx)->constants;
+ ASSERT_ARGS(Parrot_pcc_get_pmc_constants_func)
+ return CONTEXT_STRUCT(ctx)->pmc_constants;
}
PARROT_EXPORT
PARROT_CAN_RETURN_NULL
void
Parrot_pcc_set_constants_func(SHIM_INTERP, ARGIN(PMC *ctx),
- ARGIN_NULLOK(struct PackFile_Constant *constants))
+ ARGIN(struct PackFile_ConstTable *ct))
{
ASSERT_ARGS(Parrot_pcc_set_constants_func)
Parrot_Context * const c = CONTEXT_STRUCT(ctx);
- c->constants = constants;
+ c->num_constants = ct->num.constants;
+ c->str_constants = ct->str.constants;
+ c->pmc_constants = ct->pmc.constants;
}
/*
@@ -678,8 +703,7 @@
{
ASSERT_ARGS(Parrot_pcc_get_num_constant_func)
const Parrot_Context * const c = CONTEXT_STRUCT(ctx);
- PARROT_ASSERT(c->constants[idx].type == 'n');
- return c->constants[idx].u.number;
+ return c->num_constants[idx];
}
PARROT_EXPORT
@@ -690,8 +714,7 @@
{
ASSERT_ARGS(Parrot_pcc_get_string_constant_func)
const Parrot_Context * const c = CONTEXT_STRUCT(ctx);
- PARROT_ASSERT(c->constants[idx].type == 's');
- return c->constants[idx].u.string;
+ return c->str_constants[idx];
}
PARROT_EXPORT
@@ -702,9 +725,7 @@
{
ASSERT_ARGS(Parrot_pcc_get_pmc_constant_func)
const Parrot_Context * const c = CONTEXT_STRUCT(ctx);
- PARROT_ASSERT((c->constants[idx].type == 'k')
- || (c->constants[idx].type == 'p'));
- return c->constants[idx].u.key;
+ return c->pmc_constants[idx];
}
/*
Modified: trunk/src/debug.c
==============================================================================
--- trunk/src/debug.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/debug.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -2344,29 +2344,30 @@
case PARROT_ARG_NC:
{
/* Convert the float to a string */
- const FLOATVAL f = interp->code->const_table->constants[op[j]].u.number;
+ const FLOATVAL f = interp->code->const_table->num.constants[op[j]];
Parrot_snprintf(interp, buf, sizeof (buf), FLOATVAL_FMT, f);
strcpy(&dest[size], buf);
size += strlen(buf);
}
break;
case PARROT_ARG_SC:
- dest[size++] = '"';
- if (interp->code->const_table->constants[op[j]].u.string->strlen) {
- char * const unescaped =
- Parrot_str_to_cstring(interp, interp->code->
- const_table->constants[op[j]].u.string);
- char * const escaped =
- PDB_escape(interp, unescaped, interp->code->const_table->
- constants[op[j]].u.string->strlen);
- if (escaped) {
- strcpy(&dest[size], escaped);
- size += strlen(escaped);
- mem_gc_free(interp, escaped);
+ {
+ const STRING *s = interp->code->const_table->str.constants[op[j]];
+ dest[size++] = '"';
+ if (s->strlen) {
+ char * const unescaped =
+ Parrot_str_to_cstring(interp, s);
+ char * const escaped =
+ PDB_escape(interp, unescaped, s->strlen);
+ if (escaped) {
+ strcpy(&dest[size], escaped);
+ size += strlen(escaped);
+ mem_gc_free(interp, escaped);
+ }
+ Parrot_str_free_cstring(unescaped);
}
- Parrot_str_free_cstring(unescaped);
+ dest[size++] = '"';
}
- dest[size++] = '"';
break;
case PARROT_ARG_PC:
Parrot_snprintf(interp, buf, sizeof (buf), "PMC_CONST(%d)", op[j]);
@@ -2382,7 +2383,7 @@
break;
case PARROT_ARG_KC:
{
- PMC * k = interp->code->const_table->constants[op[j]].u.key;
+ PMC * k = interp->code->const_table->pmc.constants[op[j]];
dest[size - 1] = '[';
while (k) {
switch (PObj_get_FLAGS(k)) {
@@ -2486,7 +2487,7 @@
if (specialop > 0) {
char buf[1000];
- PMC * const sig = interp->code->const_table->constants[op[1]].u.key;
+ PMC * const sig = interp->code->const_table->pmc.constants[op[1]];
const int n_values = VTABLE_elements(interp, sig);
/* The flag_names strings come from Call_bits_enum_t (with which it
should probably be colocated); they name the bits from LSB to MSB.
Modified: trunk/src/embed.c
==============================================================================
--- trunk/src/embed.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/embed.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -730,7 +730,7 @@
for (i = 0; i < ft->fixup_count; ++i) {
if (ft->fixups[i].type == enum_fixup_sub) {
const opcode_t ci = ft->fixups[i].offset;
- PMC * const sub_pmc = ct->constants[ci].u.key;
+ PMC * const sub_pmc = ct->pmc.constants[ci];
Parrot_Sub_attributes *sub;
PMC_get_sub(interp, sub_pmc, sub);
@@ -807,7 +807,7 @@
main_sub = set_current_sub(interp);
Parrot_pcc_set_sub(interp, CURRENT_CONTEXT(interp), NULL);
- Parrot_pcc_set_constants(interp, interp->ctx, interp->code->const_table->constants);
+ Parrot_pcc_set_constants(interp, interp->ctx, interp->code->const_table);
Parrot_ext_call(interp, main_sub, "P->", userargv);
}
@@ -870,83 +870,64 @@
print_constant_table(PARROT_INTERP, ARGIN(PMC *output))
{
ASSERT_ARGS(print_constant_table)
- const INTVAL numconstants = interp->code->const_table->const_count;
+ const PackFile_ConstTable *ct = interp->code->const_table;
INTVAL i;
/* TODO: would be nice to print the name of the file as well */
Parrot_io_fprintf(interp, output, "=head1 Constant-table\n\n");
- for (i = 0; i < numconstants; ++i) {
- const PackFile_Constant * const c = &interp->code->const_table->constants[i];
+ for (i = 0; i < ct->num.const_count; i++)
+ Parrot_io_fprintf(interp, output, "NUM_CONST(%d): %f\n", i, ct->num.constants[i]);
- switch (c->type) {
- case PFC_NUMBER:
- Parrot_io_fprintf(interp, output, "PMC_CONST(%d): %f\n", i, c->u.number);
- break;
- case PFC_STRING:
- Parrot_io_fprintf(interp, output, "PMC_CONST(%d): %S\n", i, c->u.string);
- break;
- case PFC_KEY:
- Parrot_io_fprintf(interp, output, "PMC_CONST(%d): ", i);
- /* XXX */
- /* Parrot_print_p(interp, c->u.key); */
- Parrot_io_fprintf(interp, output, "(PMC constant)");
- Parrot_io_fprintf(interp, output, "\n");
- break;
- case PFC_PMC:
- {
- Parrot_io_fprintf(interp, output, "PMC_CONST(%d): ", i);
-
- switch (c->u.key->vtable->base_type) {
- /* each PBC file has a ParrotInterpreter, but it can't
- * stringify by itself */
- case enum_class_ParrotInterpreter:
- Parrot_io_fprintf(interp, output, "'ParrotInterpreter'");
- break;
+ for (i = 0; i < ct->str.const_count; i++)
+ Parrot_io_fprintf(interp, output, "STR_CONST(%d): %S\n", i, ct->str.constants[i]);
- /* FixedIntegerArrays used for signatures, handy to print */
- case enum_class_FixedIntegerArray:
- {
- const INTVAL n = VTABLE_elements(interp, c->u.key);
- INTVAL j;
- Parrot_io_fprintf(interp, output, "[");
-
- for (j = 0; j < n; ++j) {
- const INTVAL val = VTABLE_get_integer_keyed_int(interp, c->u.key, j);
- Parrot_io_fprintf(interp, output, "%d", val);
- if (j < n - 1)
- Parrot_io_fprintf(interp, output, ",");
- }
- Parrot_io_fprintf(interp, output, "]");
- break;
- }
- case enum_class_NameSpace:
- case enum_class_String:
- case enum_class_Key:
- case enum_class_ResizableStringArray:
- {
- /*Parrot_print_p(interp, c->u.key);*/
- STRING * const s = VTABLE_get_string(interp, c->u.key);
- if (s)
- Parrot_io_fprintf(interp, output, "%Ss", s);
- break;
+ for (i = 0; i < ct->pmc.const_count; i++) {
+ PMC *c = ct->pmc.constants[i];
+ Parrot_io_fprintf(interp, output, "PMC_CONST(%d): ", i);
+
+ switch (c->vtable->base_type) {
+ /* each PBC file has a ParrotInterpreter, but it can't
+ * stringify by itself */
+ case enum_class_ParrotInterpreter:
+ Parrot_io_fprintf(interp, output, "'ParrotInterpreter'");
+ break;
+
+ /* FixedIntegerArrays used for signatures, handy to print */
+ case enum_class_FixedIntegerArray:
+ {
+ const INTVAL n = VTABLE_elements(interp, c);
+ INTVAL j;
+ Parrot_io_fprintf(interp, output, "[");
+
+ for (j = 0; j < n; ++j) {
+ const INTVAL val = VTABLE_get_integer_keyed_int(interp, c, j);
+ Parrot_io_fprintf(interp, output, "%d", val);
+ if (j < n - 1)
+ Parrot_io_fprintf(interp, output, ",");
}
- case enum_class_Sub:
- Parrot_io_fprintf(interp, output, "%S", VTABLE_get_string(interp, c->u.key));
+ Parrot_io_fprintf(interp, output, "]");
break;
- default:
- Parrot_io_fprintf(interp, output, "(PMC constant)");
+ }
+ case enum_class_NameSpace:
+ case enum_class_String:
+ case enum_class_Key:
+ case enum_class_ResizableStringArray:
+ {
+ STRING * const s = VTABLE_get_string(interp, c);
+ if (s)
+ Parrot_io_fprintf(interp, output, "%Ss", s);
break;
}
-
- Parrot_io_fprintf(interp, output, "\n");
+ case enum_class_Sub:
+ Parrot_io_fprintf(interp, output, "%S", VTABLE_get_string(interp, c));
+ break;
+ default:
+ Parrot_io_fprintf(interp, output, "(PMC constant)");
break;
- }
- default:
- Parrot_io_fprintf(interp, output, "wrong constant type in constant table!\n");
- /* XXX throw an exception? Is it worth the trouble? */
- break;
}
+
+ Parrot_io_fprintf(interp, output, "\n");
}
Parrot_io_fprintf(interp, output, "\n=cut\n\n");
@@ -1024,7 +1005,7 @@
const int filename_const_offset =
interp->code->debugs->mappings[curr_mapping].filename;
Parrot_io_fprintf(interp, output, "# Current Source Filename '%Ss'\n",
- interp->code->const_table->constants[filename_const_offset].u.string);
+ interp->code->const_table->str.constants[filename_const_offset]);
++curr_mapping;
}
}
@@ -1103,7 +1084,7 @@
run_native = func;
if (interp->code && interp->code->const_table)
- Parrot_pcc_set_constants(interp, interp->ctx, interp->code->const_table->constants);
+ Parrot_pcc_set_constants(interp, interp->ctx, interp->code->const_table);
runops(interp, interp->resume_offset);
}
Modified: trunk/src/ops/core_ops.c
==============================================================================
--- trunk/src/ops/core_ops.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/ops/core_ops.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -16,14 +16,17 @@
/* defines - Ops::Trans::C */
-#undef CONST
#define REL_PC ((size_t)(cur_opcode - (opcode_t *)interp->code->base.data))
#define CUR_OPCODE cur_opcode
#define IREG(i) (CUR_CTX->bp.regs_i[cur_opcode[i]])
#define NREG(i) (CUR_CTX->bp.regs_n[-1L - cur_opcode[i]])
#define PREG(i) (CUR_CTX->bp_ps.regs_p[-1L - cur_opcode[i]])
#define SREG(i) (CUR_CTX->bp_ps.regs_s[cur_opcode[i]])
-#define CONST(i) Parrot_pcc_get_constants(interp, interp->ctx)[cur_opcode[i]]
+#define ICONST(i) cur_opcode[i]
+#define NCONST(i) Parrot_pcc_get_num_constants(interp, interp->ctx)[cur_opcode[i]]
+#define SCONST(i) Parrot_pcc_get_str_constants(interp, interp->ctx)[cur_opcode[i]]
+#undef PCONST
+#define PCONST(i) Parrot_pcc_get_pmc_constants(interp, interp->ctx)[cur_opcode[i]]
static int get_op(PARROT_INTERP, const char * name, int full);
@@ -15297,7 +15300,7 @@
opcode_t *
Parrot_load_bytecode_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_load_bytecode(interp, CONST(1).u.string);
+ Parrot_load_bytecode(interp, SCONST(1));
return (opcode_t *)cur_opcode + 2;}
@@ -15311,7 +15314,7 @@
opcode_t *
Parrot_load_language_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_load_language(interp, CONST(1).u.string);
+ Parrot_load_language(interp, SCONST(1));
return (opcode_t *)cur_opcode + 2;}
@@ -15322,7 +15325,7 @@
opcode_t *
Parrot_branch_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);return (opcode_t *)cur_opcode + cur_opcode[1];
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);return (opcode_t *)cur_opcode + ICONST(1);
}
opcode_t *
@@ -15354,7 +15357,7 @@
}
return_addr = PTR2INTVAL(dest);
- VTABLE_push_integer(interp, PREG(1), return_addr);return (opcode_t *)cur_opcode + cur_opcode[2];
+ VTABLE_push_integer(interp, PREG(1), return_addr);return (opcode_t *)cur_opcode + ICONST(2);
}
opcode_t *
@@ -15391,7 +15394,7 @@
opcode_t *
Parrot_jump_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- opcode_t * const loc = INTVAL2PTR(opcode_t *, cur_opcode[1]);return (opcode_t *)loc;
+ opcode_t * const loc = INTVAL2PTR(opcode_t *, ICONST(1));return (opcode_t *)loc;
}
opcode_t *
@@ -15404,56 +15407,56 @@
opcode_t *
Parrot_if_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (IREG(1) != 0)return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (IREG(1) != 0)return (opcode_t *)cur_opcode + ICONST(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_if_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (!FLOAT_IS_ZERO(NREG(1)))return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (!FLOAT_IS_ZERO(NREG(1)))return (opcode_t *)cur_opcode + ICONST(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_if_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_boolean(interp, SREG(1)))return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (Parrot_str_boolean(interp, SREG(1)))return (opcode_t *)cur_opcode + ICONST(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_if_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_get_bool(interp, PREG(1)))return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (VTABLE_get_bool(interp, PREG(1)))return (opcode_t *)cur_opcode + ICONST(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_unless_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (IREG(1) == 0)return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (IREG(1) == 0)return (opcode_t *)cur_opcode + ICONST(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_unless_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (FLOAT_IS_ZERO(NREG(1)))return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (FLOAT_IS_ZERO(NREG(1)))return (opcode_t *)cur_opcode + ICONST(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_unless_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (!Parrot_str_boolean(interp, SREG(1)))return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (!Parrot_str_boolean(interp, SREG(1)))return (opcode_t *)cur_opcode + ICONST(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_unless_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (!VTABLE_get_bool(interp, PREG(1)))return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (!VTABLE_get_bool(interp, PREG(1)))return (opcode_t *)cur_opcode + ICONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -15542,7 +15545,7 @@
Parrot_set_args_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
opcode_t * const raw_args = CUR_OPCODE;
- PMC * const signature = CONST(1).u.key;
+ PMC * const signature = PCONST(1);
PMC * const call_sig = Parrot_pcc_build_sig_object_from_op(interp,
PMCNULL, signature, raw_args);
const INTVAL argc = VTABLE_elements(interp, signature);
@@ -15553,7 +15556,7 @@
Parrot_get_params_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
opcode_t * const raw_params = CUR_OPCODE;
- PMC * const signature = CONST(1).u.key;
+ PMC * const signature = PCONST(1);
PMC * const ctx = CURRENT_CONTEXT(interp);
PMC * const ccont = Parrot_pcc_get_continuation(interp, ctx);
PMC * const caller_ctx = Parrot_pcc_get_caller_ctx(interp, ctx);
@@ -15576,7 +15579,7 @@
Parrot_set_returns_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
opcode_t * const raw_args = CUR_OPCODE;
- PMC * const signature = CONST(1).u.key;
+ PMC * const signature = PCONST(1);
PMC * const call_sig = Parrot_pcc_build_sig_object_from_op(interp,
Parrot_pcc_get_signature(interp,
Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp))),
@@ -15592,7 +15595,7 @@
Parrot_get_results_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
opcode_t * const raw_params = CUR_OPCODE;
- PMC * const signature = CONST(1).u.key;
+ PMC * const signature = PCONST(1);
PMC *ctx = CURRENT_CONTEXT(interp);
PMC *ccont = Parrot_pcc_get_continuation(interp, ctx);
PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
@@ -15624,7 +15627,7 @@
VTABLE_set_attr_str(interp, ctx,
Parrot_str_new_constant(interp, "return_flags"),
- CONST(1).u.key);
+ PCONST(1));
return (opcode_t *)cur_opcode + 2;}
@@ -15646,14 +15649,14 @@
opcode_t *
Parrot_set_addr_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = PTR2INTVAL(CUR_OPCODE + cur_opcode[2]);
+ IREG(1) = PTR2INTVAL(CUR_OPCODE + ICONST(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_addr_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_pointer(interp, PREG(1), (CUR_OPCODE + cur_opcode[2]));
+ VTABLE_set_pointer(interp, PREG(1), (CUR_OPCODE + ICONST(2)));
return (opcode_t *)cur_opcode + 3;}
@@ -15690,7 +15693,7 @@
Parrot_push_eh_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const eh = Parrot_pmc_new(interp, enum_class_ExceptionHandler);
- VTABLE_set_pointer(interp, eh, CUR_OPCODE + cur_opcode[1]);
+ VTABLE_set_pointer(interp, eh, CUR_OPCODE + ICONST(1));
Parrot_cx_add_handler_local(interp, eh);
return (opcode_t *)cur_opcode + 2;}
@@ -15787,7 +15790,7 @@
opcode_t * const ret = cur_opcode + 2;
PMC * const resume = pmc_new(interp, enum_class_Continuation);
PMC * const exception = Parrot_ex_build_exception(interp, EXCEPT_error,
- CONTROL_ERROR, CONST(1).u.string);
+ CONTROL_ERROR, SCONST(1));
VTABLE_set_pointer(interp, resume, ret);
@@ -15819,7 +15822,7 @@
opcode_t *dest;
opcode_t * const ret = cur_opcode + 2;
PMC * const resume = pmc_new(interp, enum_class_Continuation);
- STRING * const msg = PMC_IS_NULL(CONST(1).u.key) ? NULL : VTABLE_get_string(interp, CONST(1).u.key);
+ STRING * const msg = PMC_IS_NULL(PCONST(1)) ? NULL : VTABLE_get_string(interp, PCONST(1));
PMC * const exception =
Parrot_ex_build_exception(interp, EXCEPT_error, CONTROL_ERROR, msg);
@@ -15845,11 +15848,11 @@
opcode_t *
Parrot_die_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1] == EXCEPT_doomed)
+ if (ICONST(1) == EXCEPT_doomed)
_exit(IREG(2));
else {
opcode_t * const ret = cur_opcode + 3;
- PMC * const exception = Parrot_ex_build_exception(interp, cur_opcode[1], IREG(2), NULL);
+ PMC * const exception = Parrot_ex_build_exception(interp, ICONST(1), IREG(2), NULL);
opcode_t * const dest = Parrot_ex_throw_from_op(interp, exception, ret);return (opcode_t *)dest;
}
}
@@ -15858,10 +15861,10 @@
Parrot_die_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
if (IREG(1) == EXCEPT_doomed)
- _exit(cur_opcode[2]);
+ _exit(ICONST(2));
else {
opcode_t * const ret = cur_opcode + 3;
- PMC * const exception = Parrot_ex_build_exception(interp, IREG(1), cur_opcode[2], NULL);
+ PMC * const exception = Parrot_ex_build_exception(interp, IREG(1), ICONST(2), NULL);
opcode_t * const dest = Parrot_ex_throw_from_op(interp, exception, ret);return (opcode_t *)dest;
}
}
@@ -15869,11 +15872,11 @@
opcode_t *
Parrot_die_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1] == EXCEPT_doomed)
- _exit(cur_opcode[2]);
+ if (ICONST(1) == EXCEPT_doomed)
+ _exit(ICONST(2));
else {
opcode_t * const ret = cur_opcode + 3;
- PMC * const exception = Parrot_ex_build_exception(interp, cur_opcode[1], cur_opcode[2], NULL);
+ PMC * const exception = Parrot_ex_build_exception(interp, ICONST(1), ICONST(2), NULL);
opcode_t * const dest = Parrot_ex_throw_from_op(interp, exception, ret);return (opcode_t *)dest;
}
}
@@ -15910,7 +15913,7 @@
VTABLE_set_attr_str(interp, exception,
Parrot_str_new_constant(interp, "resume"), resume);
VTABLE_set_integer_keyed_str(interp, exception,
- Parrot_str_new_constant(interp, "exit_code"), cur_opcode[1]);
+ Parrot_str_new_constant(interp, "exit_code"), ICONST(1));
dest = Parrot_ex_throw_from_op(interp, exception, ret);return (opcode_t *)dest;
}
@@ -15924,7 +15927,7 @@
opcode_t *
Parrot_debug_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1] != 0) { Interp_debug_SET(interp, cur_opcode[1]); }
+ if (ICONST(1) != 0) { Interp_debug_SET(interp, ICONST(1)); }
else { Interp_debug_CLEAR(interp, PARROT_ALL_DEBUG_FLAGS); }interp->resume_offset = REL_PC + 2; interp->resume_flag = 1;return (opcode_t *)0;
}
@@ -15938,7 +15941,7 @@
opcode_t *
Parrot_bounds_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1] != 0) { Parrot_set_flag(interp, PARROT_BOUNDS_FLAG); }
+ if (ICONST(1) != 0) { Parrot_set_flag(interp, PARROT_BOUNDS_FLAG); }
else { Interp_flags_CLEAR(interp, PARROT_BOUNDS_FLAG); }interp->resume_offset = REL_PC + 2; interp->resume_flag = 1;return (opcode_t *)0;
}
@@ -15952,7 +15955,7 @@
opcode_t *
Parrot_profile_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1] != 0) { Parrot_set_flag(interp, PARROT_PROFILE_FLAG); }
+ if (ICONST(1) != 0) { Parrot_set_flag(interp, PARROT_PROFILE_FLAG); }
else { Interp_flags_CLEAR(interp, PARROT_PROFILE_FLAG); }interp->resume_offset = REL_PC + 2; interp->resume_flag = 1;return (opcode_t *)0;
}
@@ -15966,7 +15969,7 @@
opcode_t *
Parrot_trace_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1] != 0) { Parrot_set_trace(interp, cur_opcode[1]); }
+ if (ICONST(1) != 0) { Parrot_set_trace(interp, ICONST(1)); }
else { Parrot_clear_trace(interp, PARROT_ALL_TRACE_FLAGS); }interp->resume_offset = REL_PC + 2; interp->resume_flag = 1;return (opcode_t *)0;
}
@@ -15981,7 +15984,7 @@
opcode_t *
Parrot_gc_debug_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1] != 0) { Interp_flags_SET(interp, PARROT_GC_DEBUG_FLAG); }
+ if (ICONST(1) != 0) { Interp_flags_SET(interp, PARROT_GC_DEBUG_FLAG); }
else { Interp_flags_CLEAR(interp, PARROT_GC_DEBUG_FLAG); }
return (opcode_t *)cur_opcode + 2;}
@@ -15996,7 +15999,7 @@
opcode_t *
Parrot_interpinfo_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = interpinfo(interp, cur_opcode[2]);
+ IREG(1) = interpinfo(interp, ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -16010,7 +16013,7 @@
opcode_t *
Parrot_interpinfo_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = interpinfo_p(interp, cur_opcode[2]);
+ PREG(1) = interpinfo_p(interp, ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -16025,7 +16028,7 @@
opcode_t *
Parrot_interpinfo_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const s = interpinfo_s(interp, cur_opcode[2]);
+ STRING * const s = interpinfo_s(interp, ICONST(2));
SREG(1) = s;
return (opcode_t *)cur_opcode + 3;}
@@ -16040,7 +16043,7 @@
opcode_t *
Parrot_warningson_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PARROT_WARNINGS_on(interp, cur_opcode[1]);
+ PARROT_WARNINGS_on(interp, ICONST(1));
return (opcode_t *)cur_opcode + 2;}
@@ -16054,7 +16057,7 @@
opcode_t *
Parrot_warningsoff_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PARROT_WARNINGS_off(interp, cur_opcode[1]);
+ PARROT_WARNINGS_off(interp, ICONST(1));
return (opcode_t *)cur_opcode + 2;}
@@ -16068,7 +16071,7 @@
opcode_t *
Parrot_errorson_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PARROT_ERRORS_on(interp, cur_opcode[1]);
+ PARROT_ERRORS_on(interp, ICONST(1));
return (opcode_t *)cur_opcode + 2;}
@@ -16082,7 +16085,7 @@
opcode_t *
Parrot_errorsoff_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PARROT_ERRORS_off(interp, cur_opcode[1]);
+ PARROT_ERRORS_off(interp, ICONST(1));
return (opcode_t *)cur_opcode + 2;}
@@ -16102,7 +16105,7 @@
Interp * const new_interp = (Interp *)VTABLE_get_pointer(interp, PREG(1));
Interp_flags_SET(new_interp, PARROT_EXTERN_CODE_FLAG);
Parrot_switch_to_cs(new_interp, interp->code, 1);
- runops(new_interp, REL_PC + cur_opcode[2]);
+ runops(new_interp, REL_PC + ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -16117,7 +16120,7 @@
opcode_t *
Parrot_sweep_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1])
+ if (ICONST(1))
Parrot_gc_mark_and_sweep(interp, GC_trace_normal_FLAG);
else
if (Parrot_gc_impatient_pmcs(interp))
@@ -16177,7 +16180,7 @@
opcode_t *
Parrot_loadlib_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_load_lib(interp, CONST(2).u.string, NULL);
+ PREG(1) = Parrot_load_lib(interp, SCONST(2), NULL);
return (opcode_t *)cur_opcode + 3;}
@@ -16191,21 +16194,21 @@
opcode_t *
Parrot_loadlib_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_load_lib(interp, CONST(2).u.string, PREG(3));
+ PREG(1) = Parrot_load_lib(interp, SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_loadlib_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_load_lib(interp, SREG(2), CONST(3).u.key);
+ PREG(1) = Parrot_load_lib(interp, SREG(2), PCONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_loadlib_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_load_lib(interp, CONST(2).u.string, CONST(3).u.key);
+ PREG(1) = Parrot_load_lib(interp, SCONST(2), PCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -16251,13 +16254,13 @@
dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data(PREG(2)))->dl_handle;
}
- ptr = Parrot_dlsym_str(interp, dl_handle, CONST(3).u.string);
+ ptr = Parrot_dlsym_str(interp, dl_handle, SCONST(3));
p = D2FPTR(ptr);
if (p == NULLfunc) {
const char * err = Parrot_dlerror();
Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
- "Symbol '%Ss' not found: %s\n", CONST(3).u.string, err ? err : "unknown reason");
+ "Symbol '%Ss' not found: %s\n", SCONST(3), err ? err : "unknown reason");
PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
}
else {
@@ -16291,7 +16294,7 @@
}
else {
PREG(1) = Parrot_pmc_new(interp, enum_class_NCI);
- VTABLE_set_pointer_keyed_str(interp, PREG(1), CONST(4).u.string, F2DPTR(p));
+ VTABLE_set_pointer_keyed_str(interp, PREG(1), SCONST(4), F2DPTR(p));
}
return (opcode_t *)cur_opcode + 5;}
@@ -16309,18 +16312,18 @@
dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data(PREG(2)))->dl_handle;
}
- ptr = Parrot_dlsym_str(interp, dl_handle, CONST(3).u.string);
+ ptr = Parrot_dlsym_str(interp, dl_handle, SCONST(3));
p = D2FPTR(ptr);
if (p == NULLfunc) {
const char * err = Parrot_dlerror();
Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
- "Symbol '%Ss' not found: %s\n", CONST(3).u.string, err ? err : "unknown reason");
+ "Symbol '%Ss' not found: %s\n", SCONST(3), err ? err : "unknown reason");
PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
}
else {
PREG(1) = Parrot_pmc_new(interp, enum_class_NCI);
- VTABLE_set_pointer_keyed_str(interp, PREG(1), CONST(4).u.string, F2DPTR(p));
+ VTABLE_set_pointer_keyed_str(interp, PREG(1), SCONST(4), F2DPTR(p));
}
return (opcode_t *)cur_opcode + 5;}
@@ -16366,12 +16369,12 @@
dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data(PREG(2)))->dl_handle;
}
- p = Parrot_dlsym_str(interp, dl_handle, CONST(3).u.string);
+ p = Parrot_dlsym_str(interp, dl_handle, SCONST(3));
if (p == NULL) {
const char * const err = Parrot_dlerror();
Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
- "Symbol '%Ss' not found: %s\n", CONST(3).u.string, err ? err : "unknown reason");
+ "Symbol '%Ss' not found: %s\n", SCONST(3), err ? err : "unknown reason");
PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
}
else {
@@ -16397,7 +16400,7 @@
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
interp->iglobals, IGLOBALS_COMPREG_HASH);
- VTABLE_set_pmc_keyed_str(interp, compreg_hash, CONST(1).u.string, PREG(2));
+ VTABLE_set_pmc_keyed_str(interp, compreg_hash, SCONST(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
@@ -16415,7 +16418,7 @@
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
interp->iglobals, IGLOBALS_COMPREG_HASH);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, compreg_hash, CONST(2).u.string);
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, compreg_hash, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -16429,7 +16432,7 @@
opcode_t *
Parrot_new_callback_p_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_make_cb(interp, PREG(2), PREG(3), CONST(4).u.string);
+ PREG(1) = Parrot_make_cb(interp, PREG(2), PREG(3), SCONST(4));
return (opcode_t *)cur_opcode + 5;}
@@ -16467,7 +16470,7 @@
if (interp->code->annotations) {
const opcode_t cur_pos = ( cur_opcode + 3) - interp->code->base.data;
PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
- cur_pos, CONST(2).u.string);
+ cur_pos, SCONST(2));
}
else {
PREG(1) = PMCNULL;
@@ -16485,7 +16488,7 @@
opcode_t *
Parrot_band_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) &= cur_opcode[2];
+ IREG(1) &= ICONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -16499,14 +16502,14 @@
opcode_t *
Parrot_band_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = cur_opcode[2] & IREG(3);
+ IREG(1) = ICONST(2) & IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_band_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = IREG(2) & cur_opcode[3];
+ IREG(1) = IREG(2) & ICONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -16520,7 +16523,7 @@
opcode_t *
Parrot_bor_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) |= cur_opcode[2];
+ IREG(1) |= ICONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -16534,14 +16537,14 @@
opcode_t *
Parrot_bor_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = cur_opcode[2] | IREG(3);
+ IREG(1) = ICONST(2) | IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bor_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = IREG(2) | cur_opcode[3];
+ IREG(1) = IREG(2) | ICONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -16555,7 +16558,7 @@
opcode_t *
Parrot_shl_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = bit_shift_left(IREG(1), cur_opcode[2]);
+ IREG(1) = bit_shift_left(IREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -16569,14 +16572,14 @@
opcode_t *
Parrot_shl_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = bit_shift_left(cur_opcode[2], IREG(3));
+ IREG(1) = bit_shift_left(ICONST(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_shl_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = bit_shift_left(IREG(2), cur_opcode[3]);
+ IREG(1) = bit_shift_left(IREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -16591,7 +16594,7 @@
opcode_t *
Parrot_shr_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- const INTVAL signed_shift = -cur_opcode[2];
+ const INTVAL signed_shift = -ICONST(2);
IREG(1) = bit_shift_left(IREG(1), signed_shift);
return (opcode_t *)cur_opcode + 3;}
@@ -16608,14 +16611,14 @@
Parrot_shr_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
const INTVAL signed_shift = -IREG(3);
- IREG(1) = bit_shift_left(cur_opcode[2], signed_shift);
+ IREG(1) = bit_shift_left(ICONST(2), signed_shift);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_shr_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- const INTVAL signed_shift = -cur_opcode[3];
+ const INTVAL signed_shift = -ICONST(3);
IREG(1) = bit_shift_left(IREG(2), signed_shift);
return (opcode_t *)cur_opcode + 4;}
@@ -16633,7 +16636,7 @@
Parrot_lsr_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
const UINTVAL a = (UINTVAL)IREG(1);
- const UINTVAL b = a >> cur_opcode[2];
+ const UINTVAL b = a >> ICONST(2);
IREG(1) = (INTVAL)b;
return (opcode_t *)cur_opcode + 3;}
@@ -16648,14 +16651,14 @@
opcode_t *
Parrot_lsr_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (INTVAL)((UINTVAL)cur_opcode[2] >> IREG(3));
+ IREG(1) = (INTVAL)((UINTVAL)ICONST(2) >> IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_lsr_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (INTVAL)((UINTVAL)IREG(2) >> cur_opcode[3]);
+ IREG(1) = (INTVAL)((UINTVAL)IREG(2) >> ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -16669,7 +16672,7 @@
opcode_t *
Parrot_bxor_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) ^= cur_opcode[2];
+ IREG(1) ^= ICONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -16683,21 +16686,21 @@
opcode_t *
Parrot_bxor_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = cur_opcode[2] ^ IREG(3);
+ IREG(1) = ICONST(2) ^ IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bxor_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = IREG(2) ^ cur_opcode[3];
+ IREG(1) = IREG(2) ^ ICONST(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_eq_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (IREG(1) == IREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (IREG(1) == IREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16705,7 +16708,7 @@
opcode_t *
Parrot_eq_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1] == IREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (ICONST(1) == IREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16713,7 +16716,7 @@
opcode_t *
Parrot_eq_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (IREG(1) == cur_opcode[2]) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (IREG(1) == ICONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16721,7 +16724,7 @@
opcode_t *
Parrot_eq_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (NREG(1) == NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NREG(1) == NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16729,7 +16732,7 @@
opcode_t *
Parrot_eq_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (CONST(1).u.number == NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NCONST(1) == NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16737,7 +16740,7 @@
opcode_t *
Parrot_eq_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (NREG(1) == CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NREG(1) == NCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16745,7 +16748,7 @@
opcode_t *
Parrot_eq_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_equal(interp, SREG(1), SREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_equal(interp, SREG(1), SREG(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16753,7 +16756,7 @@
opcode_t *
Parrot_eq_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_equal(interp, CONST(1).u.string, SREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_equal(interp, SCONST(1), SREG(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16761,7 +16764,7 @@
opcode_t *
Parrot_eq_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_equal(interp, SREG(1), CONST(2).u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_equal(interp, SREG(1), SCONST(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16769,7 +16772,7 @@
opcode_t *
Parrot_eq_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_is_equal(interp, PREG(1), PREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_is_equal(interp, PREG(1), PREG(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16781,7 +16784,7 @@
VTABLE_set_integer_native(interp, temp, IREG(2));
if (VTABLE_is_equal(interp, PREG(1), temp)) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -16792,10 +16795,10 @@
Parrot_eq_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
+ VTABLE_set_integer_native(interp, temp, ICONST(2));
if (VTABLE_is_equal(interp, PREG(1), temp)) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -16811,7 +16814,7 @@
* overriding the compare multi subs wouldn't
* have any effect with the current code
*/
- if (VTABLE_get_number(interp, PREG(1)) == NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) == NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16825,7 +16828,7 @@
* overriding the compare multi subs wouldn't
* have any effect with the current code
*/
- if (VTABLE_get_number(interp, PREG(1)) == CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) == NCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16833,7 +16836,7 @@
opcode_t *
Parrot_eq_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_equal(interp, VTABLE_get_string(interp, PREG(1)), SREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_equal(interp, VTABLE_get_string(interp, PREG(1)), SREG(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16841,7 +16844,7 @@
opcode_t *
Parrot_eq_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_equal(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_equal(interp, VTABLE_get_string(interp, PREG(1)), SCONST(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16849,7 +16852,7 @@
opcode_t *
Parrot_eq_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_is_equal_string(interp, PREG(1), PREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_is_equal_string(interp, PREG(1), PREG(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16857,7 +16860,7 @@
opcode_t *
Parrot_eq_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_is_equal_num(interp, PREG(1), PREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_is_equal_num(interp, PREG(1), PREG(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16865,7 +16868,7 @@
opcode_t *
Parrot_eq_addr_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (SREG(1) == SREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (SREG(1) == SREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16873,7 +16876,7 @@
opcode_t *
Parrot_eq_addr_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (CONST(1).u.string == SREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (SCONST(1) == SREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16881,7 +16884,7 @@
opcode_t *
Parrot_eq_addr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (SREG(1) == CONST(2).u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (SREG(1) == SCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16889,7 +16892,7 @@
opcode_t *
Parrot_eq_addr_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (CONST(1).u.string == CONST(2).u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (SCONST(1) == SCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16897,7 +16900,7 @@
opcode_t *
Parrot_eq_addr_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (PREG(1) == PREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (PREG(1) == PREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16905,7 +16908,7 @@
opcode_t *
Parrot_ne_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (IREG(1) != IREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (IREG(1) != IREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16913,7 +16916,7 @@
opcode_t *
Parrot_ne_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1] != IREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (ICONST(1) != IREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16921,7 +16924,7 @@
opcode_t *
Parrot_ne_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (IREG(1) != cur_opcode[2]) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (IREG(1) != ICONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16929,7 +16932,7 @@
opcode_t *
Parrot_ne_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (NREG(1) != NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NREG(1) != NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16937,7 +16940,7 @@
opcode_t *
Parrot_ne_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (CONST(1).u.number != NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NCONST(1) != NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16945,7 +16948,7 @@
opcode_t *
Parrot_ne_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (NREG(1) != CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NREG(1) != NCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16953,7 +16956,7 @@
opcode_t *
Parrot_ne_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_not_equal(interp, SREG(1), SREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_not_equal(interp, SREG(1), SREG(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16961,7 +16964,7 @@
opcode_t *
Parrot_ne_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_not_equal(interp, CONST(1).u.string, SREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_not_equal(interp, SCONST(1), SREG(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16969,7 +16972,7 @@
opcode_t *
Parrot_ne_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_not_equal(interp, SREG(1), CONST(2).u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_not_equal(interp, SREG(1), SCONST(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16977,7 +16980,7 @@
opcode_t *
Parrot_ne_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (!VTABLE_is_equal(interp, PREG(1), PREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (!VTABLE_is_equal(interp, PREG(1), PREG(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -16989,7 +16992,7 @@
VTABLE_set_integer_native(interp, temp, IREG(2));
if (!VTABLE_is_equal(interp, PREG(1), temp)) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -17000,10 +17003,10 @@
Parrot_ne_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
+ VTABLE_set_integer_native(interp, temp, ICONST(2));
if (!VTABLE_is_equal(interp, PREG(1), temp)) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -17013,7 +17016,7 @@
opcode_t *
Parrot_ne_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_get_number(interp, PREG(1)) != NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) != NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17021,7 +17024,7 @@
opcode_t *
Parrot_ne_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_get_number(interp, PREG(1)) != CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) != NCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17029,7 +17032,7 @@
opcode_t *
Parrot_ne_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_not_equal(interp, VTABLE_get_string(interp, PREG(1)), SREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_not_equal(interp, VTABLE_get_string(interp, PREG(1)), SREG(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17037,7 +17040,7 @@
opcode_t *
Parrot_ne_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_not_equal(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_not_equal(interp, VTABLE_get_string(interp, PREG(1)), SCONST(2))) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17045,7 +17048,7 @@
opcode_t *
Parrot_ne_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) != 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) != 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17053,7 +17056,7 @@
opcode_t *
Parrot_ne_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) != 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) != 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17061,7 +17064,7 @@
opcode_t *
Parrot_ne_addr_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (SREG(1) != SREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (SREG(1) != SREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17069,7 +17072,7 @@
opcode_t *
Parrot_ne_addr_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (CONST(1).u.string != SREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (SCONST(1) != SREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17077,7 +17080,7 @@
opcode_t *
Parrot_ne_addr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (SREG(1) != CONST(2).u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (SREG(1) != SCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17085,7 +17088,7 @@
opcode_t *
Parrot_ne_addr_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (CONST(1).u.string != CONST(2).u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (SCONST(1) != SCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17093,7 +17096,7 @@
opcode_t *
Parrot_ne_addr_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (PREG(1) != PREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (PREG(1) != PREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17101,7 +17104,7 @@
opcode_t *
Parrot_lt_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (IREG(1) < IREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (IREG(1) < IREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17109,7 +17112,7 @@
opcode_t *
Parrot_lt_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1] < IREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (ICONST(1) < IREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17117,7 +17120,7 @@
opcode_t *
Parrot_lt_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (IREG(1) < cur_opcode[2]) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (IREG(1) < ICONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17125,7 +17128,7 @@
opcode_t *
Parrot_lt_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (NREG(1) < NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NREG(1) < NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17133,7 +17136,7 @@
opcode_t *
Parrot_lt_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (CONST(1).u.number < NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NCONST(1) < NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17141,7 +17144,7 @@
opcode_t *
Parrot_lt_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (NREG(1) < CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NREG(1) < NCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17149,7 +17152,7 @@
opcode_t *
Parrot_lt_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, SREG(1), SREG(2)) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, SREG(1), SREG(2)) < 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17157,7 +17160,7 @@
opcode_t *
Parrot_lt_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, CONST(1).u.string, SREG(2)) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, SCONST(1), SREG(2)) < 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17165,7 +17168,7 @@
opcode_t *
Parrot_lt_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, SREG(1), CONST(2).u.string) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, SREG(1), SCONST(2)) < 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17173,7 +17176,7 @@
opcode_t *
Parrot_lt_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp(interp, PREG(1), PREG(2)) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp(interp, PREG(1), PREG(2)) < 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17185,7 +17188,7 @@
VTABLE_set_integer_native(interp, temp, IREG(2));
if (VTABLE_cmp(interp, PREG(1), temp) < 0) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -17196,10 +17199,10 @@
Parrot_lt_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
+ VTABLE_set_integer_native(interp, temp, ICONST(2));
if (VTABLE_cmp(interp, PREG(1), temp) < 0) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -17209,7 +17212,7 @@
opcode_t *
Parrot_lt_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_get_number(interp, PREG(1)) < NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) < NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17217,7 +17220,7 @@
opcode_t *
Parrot_lt_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_get_number(interp, PREG(1)) < CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) < NCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17225,7 +17228,7 @@
opcode_t *
Parrot_lt_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) < 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17233,7 +17236,7 @@
opcode_t *
Parrot_lt_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SCONST(2)) < 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17241,7 +17244,7 @@
opcode_t *
Parrot_lt_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) < 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17249,7 +17252,7 @@
opcode_t *
Parrot_lt_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) < 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17257,7 +17260,7 @@
opcode_t *
Parrot_le_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (IREG(1) <= IREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (IREG(1) <= IREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17265,7 +17268,7 @@
opcode_t *
Parrot_le_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[1] <= IREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (ICONST(1) <= IREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17273,7 +17276,7 @@
opcode_t *
Parrot_le_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (IREG(1) <= cur_opcode[2]) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (IREG(1) <= ICONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17281,7 +17284,7 @@
opcode_t *
Parrot_le_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (NREG(1) <= NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NREG(1) <= NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17289,7 +17292,7 @@
opcode_t *
Parrot_le_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (CONST(1).u.number <= NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NCONST(1) <= NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17297,7 +17300,7 @@
opcode_t *
Parrot_le_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (NREG(1) <= CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (NREG(1) <= NCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17305,7 +17308,7 @@
opcode_t *
Parrot_le_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, SREG(1), SREG(2)) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, SREG(1), SREG(2)) <= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17313,7 +17316,7 @@
opcode_t *
Parrot_le_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, CONST(1).u.string, SREG(2)) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, SCONST(1), SREG(2)) <= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17321,7 +17324,7 @@
opcode_t *
Parrot_le_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, SREG(1), CONST(2).u.string) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, SREG(1), SCONST(2)) <= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17329,7 +17332,7 @@
opcode_t *
Parrot_le_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp(interp, PREG(1), PREG(2)) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp(interp, PREG(1), PREG(2)) <= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17341,7 +17344,7 @@
VTABLE_set_integer_native(interp, temp, IREG(2));
if (VTABLE_cmp(interp, PREG(1), temp) <= 0) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -17352,10 +17355,10 @@
Parrot_le_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
+ VTABLE_set_integer_native(interp, temp, ICONST(2));
if (VTABLE_cmp(interp, PREG(1), temp) <= 0) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -17365,7 +17368,7 @@
opcode_t *
Parrot_le_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_get_number(interp, PREG(1)) <= NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) <= NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17373,7 +17376,7 @@
opcode_t *
Parrot_le_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_get_number(interp, PREG(1)) <= CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) <= NCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17381,7 +17384,7 @@
opcode_t *
Parrot_le_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) <= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17389,7 +17392,7 @@
opcode_t *
Parrot_le_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SCONST(2)) <= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17397,7 +17400,7 @@
opcode_t *
Parrot_le_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) <= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17405,7 +17408,7 @@
opcode_t *
Parrot_le_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) <= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17413,7 +17416,7 @@
opcode_t *
Parrot_gt_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp(interp, PREG(1), PREG(2)) > 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp(interp, PREG(1), PREG(2)) > 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17425,7 +17428,7 @@
VTABLE_set_integer_native(interp, temp, IREG(2));
if (VTABLE_cmp(interp, PREG(1), temp) > 0) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -17436,10 +17439,10 @@
Parrot_gt_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
+ VTABLE_set_integer_native(interp, temp, ICONST(2));
if (VTABLE_cmp(interp, PREG(1), temp) > 0) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -17449,7 +17452,7 @@
opcode_t *
Parrot_gt_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_get_number(interp, PREG(1)) > NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) > NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17457,7 +17460,7 @@
opcode_t *
Parrot_gt_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_get_number(interp, PREG(1)) > CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) > NCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17465,7 +17468,7 @@
opcode_t *
Parrot_gt_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) > 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) > 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17473,7 +17476,7 @@
opcode_t *
Parrot_gt_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string) > 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SCONST(2)) > 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17481,7 +17484,7 @@
opcode_t *
Parrot_gt_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) > 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) > 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17489,7 +17492,7 @@
opcode_t *
Parrot_gt_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) > 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) > 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17497,7 +17500,7 @@
opcode_t *
Parrot_ge_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp(interp, PREG(1), PREG(2)) >= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp(interp, PREG(1), PREG(2)) >= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17509,7 +17512,7 @@
VTABLE_set_integer_native(interp, temp, IREG(2));
if (VTABLE_cmp(interp, PREG(1), temp) >= 0) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -17520,10 +17523,10 @@
Parrot_ge_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
+ VTABLE_set_integer_native(interp, temp, ICONST(2));
if (VTABLE_cmp(interp, PREG(1), temp) >= 0) {
- Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + cur_opcode[3];
+ Parrot_pmc_free_temporary(interp, temp);return (opcode_t *)cur_opcode + ICONST(3);
}
Parrot_pmc_free_temporary(interp, temp);
@@ -17533,7 +17536,7 @@
opcode_t *
Parrot_ge_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_get_number(interp, PREG(1)) >= NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) >= NREG(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17541,7 +17544,7 @@
opcode_t *
Parrot_ge_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_get_number(interp, PREG(1)) >= CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_get_number(interp, PREG(1)) >= NCONST(2)) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17549,7 +17552,7 @@
opcode_t *
Parrot_ge_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) >= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) >= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17557,7 +17560,7 @@
opcode_t *
Parrot_ge_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string) >= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SCONST(2)) >= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17565,7 +17568,7 @@
opcode_t *
Parrot_ge_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) >= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) >= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17573,7 +17576,7 @@
opcode_t *
Parrot_ge_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) >= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+ if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) >= 0) {return (opcode_t *)cur_opcode + ICONST(3);
}
return (opcode_t *)cur_opcode + 4;}
@@ -17581,7 +17584,7 @@
opcode_t *
Parrot_if_null_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (PMC_IS_NULL(PREG(1))) {return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (PMC_IS_NULL(PREG(1))) {return (opcode_t *)cur_opcode + ICONST(2);
}
return (opcode_t *)cur_opcode + 3;}
@@ -17589,7 +17592,7 @@
opcode_t *
Parrot_if_null_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (STRING_IS_NULL(SREG(1))) {return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (STRING_IS_NULL(SREG(1))) {return (opcode_t *)cur_opcode + ICONST(2);
}
return (opcode_t *)cur_opcode + 3;}
@@ -17597,7 +17600,7 @@
opcode_t *
Parrot_unless_null_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (!PMC_IS_NULL(PREG(1))) {return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (!PMC_IS_NULL(PREG(1))) {return (opcode_t *)cur_opcode + ICONST(2);
}
return (opcode_t *)cur_opcode + 3;}
@@ -17605,7 +17608,7 @@
opcode_t *
Parrot_unless_null_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (!STRING_IS_NULL(SREG(1))) {return (opcode_t *)cur_opcode + cur_opcode[2];
+ if (!STRING_IS_NULL(SREG(1))) {return (opcode_t *)cur_opcode + ICONST(2);
}
return (opcode_t *)cur_opcode + 3;}
@@ -17622,8 +17625,8 @@
opcode_t *
Parrot_cmp_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = cur_opcode[2] < IREG(3) ? -1 :
- cur_opcode[2] > IREG(3) ? +1 :
+ IREG(1) = ICONST(2) < IREG(3) ? -1 :
+ ICONST(2) > IREG(3) ? +1 :
0;
return (opcode_t *)cur_opcode + 4;}
@@ -17631,8 +17634,8 @@
opcode_t *
Parrot_cmp_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = IREG(2) < cur_opcode[3] ? -1 :
- IREG(2) > cur_opcode[3] ? +1 :
+ IREG(1) = IREG(2) < ICONST(3) ? -1 :
+ IREG(2) > ICONST(3) ? +1 :
0;
return (opcode_t *)cur_opcode + 4;}
@@ -17649,8 +17652,8 @@
opcode_t *
Parrot_cmp_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(2).u.number < NREG(3) ? -1 :
- CONST(2).u.number > NREG(3) ? +1 :
+ IREG(1) = NCONST(2) < NREG(3) ? -1 :
+ NCONST(2) > NREG(3) ? +1 :
0;
return (opcode_t *)cur_opcode + 4;}
@@ -17658,8 +17661,8 @@
opcode_t *
Parrot_cmp_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = NREG(2) < CONST(3).u.number ? -1 :
- NREG(2) > CONST(3).u.number ? +1 :
+ IREG(1) = NREG(2) < NCONST(3) ? -1 :
+ NREG(2) > NCONST(3) ? +1 :
0;
return (opcode_t *)cur_opcode + 4;}
@@ -17674,14 +17677,14 @@
opcode_t *
Parrot_cmp_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_compare(interp, CONST(2).u.string, SREG(3));
+ IREG(1) = Parrot_str_compare(interp, SCONST(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_cmp_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3).u.string);
+ IREG(1) = Parrot_str_compare(interp, SREG(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -17706,8 +17709,8 @@
Parrot_cmp_i_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
const INTVAL l = VTABLE_get_integer(interp, PREG(2));
- IREG(1) = l < cur_opcode[3] ? -1 :
- l > cur_opcode[3] ? +1 :
+ IREG(1) = l < ICONST(3) ? -1 :
+ l > ICONST(3) ? +1 :
0;
return (opcode_t *)cur_opcode + 4;}
@@ -17726,8 +17729,8 @@
Parrot_cmp_i_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
const FLOATVAL l = VTABLE_get_number(interp, PREG(2));
- IREG(1) = l < CONST(3).u.number ? -1 :
- l > CONST(3).u.number ? +1 :
+ IREG(1) = l < NCONST(3) ? -1 :
+ l > NCONST(3) ? +1 :
0;
return (opcode_t *)cur_opcode + 4;}
@@ -17744,7 +17747,7 @@
Parrot_cmp_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
STRING* const l = VTABLE_get_string(interp, PREG(2));
- IREG(1) = Parrot_str_compare(interp, l, CONST(3).u.string);
+ IREG(1) = Parrot_str_compare(interp, l, SCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -17789,21 +17792,21 @@
opcode_t *
Parrot_issame_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(2).u.string == SREG(3);
+ IREG(1) = SCONST(2) == SREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_issame_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = SREG(2) == CONST(3).u.string;
+ IREG(1) = SREG(2) == SCONST(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_issame_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(2).u.string == CONST(3).u.string;
+ IREG(1) = SCONST(2) == SCONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -17827,21 +17830,21 @@
opcode_t *
Parrot_isntsame_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(2).u.string != SREG(3);
+ IREG(1) = SCONST(2) != SREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isntsame_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = SREG(2) != CONST(3).u.string;
+ IREG(1) = SREG(2) != SCONST(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isntsame_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(2).u.string != CONST(3).u.string;
+ IREG(1) = SCONST(2) != SCONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -17869,7 +17872,7 @@
opcode_t *
Parrot_isnull_i_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = PMC_IS_NULL(CONST(2).u.key);
+ IREG(1) = PMC_IS_NULL(PCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -17883,7 +17886,7 @@
opcode_t *
Parrot_isnull_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = STRING_IS_NULL(CONST(2).u.string);
+ IREG(1) = STRING_IS_NULL(SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -17911,14 +17914,14 @@
opcode_t *
Parrot_isle_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = cur_opcode[2] <= IREG(3);
+ IREG(1) = ICONST(2) <= IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = IREG(2) <= cur_opcode[3];
+ IREG(1) = IREG(2) <= ICONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -17932,14 +17935,14 @@
opcode_t *
Parrot_isle_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(2).u.number <= NREG(3);
+ IREG(1) = NCONST(2) <= NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = NREG(2) <= CONST(3).u.number;
+ IREG(1) = NREG(2) <= NCONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -17953,14 +17956,14 @@
opcode_t *
Parrot_isle_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_compare(interp, CONST(2).u.string, SREG(3)) <= 0;
+ IREG(1) = Parrot_str_compare(interp, SCONST(2), SREG(3)) <= 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3).u.string) <= 0;
+ IREG(1) = Parrot_str_compare(interp, SREG(2), SCONST(3)) <= 0;
return (opcode_t *)cur_opcode + 4;}
@@ -17981,14 +17984,14 @@
opcode_t *
Parrot_islt_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (cur_opcode[2] < IREG(3)) ? 1 : 0;
+ IREG(1) = (ICONST(2) < IREG(3)) ? 1 : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (IREG(2) < cur_opcode[3]) ? 1 : 0;
+ IREG(1) = (IREG(2) < ICONST(3)) ? 1 : 0;
return (opcode_t *)cur_opcode + 4;}
@@ -18002,14 +18005,14 @@
opcode_t *
Parrot_islt_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(2).u.number < NREG(3);
+ IREG(1) = NCONST(2) < NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = NREG(2) < CONST(3).u.number;
+ IREG(1) = NREG(2) < NCONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -18023,14 +18026,14 @@
opcode_t *
Parrot_islt_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_compare(interp, CONST(2).u.string, SREG(3)) < 0;
+ IREG(1) = Parrot_str_compare(interp, SCONST(2), SREG(3)) < 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3).u.string) < 0;
+ IREG(1) = Parrot_str_compare(interp, SREG(2), SCONST(3)) < 0;
return (opcode_t *)cur_opcode + 4;}
@@ -18051,14 +18054,14 @@
opcode_t *
Parrot_iseq_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (cur_opcode[2] == IREG(3)) ? 1 : 0;
+ IREG(1) = (ICONST(2) == IREG(3)) ? 1 : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (IREG(2) == cur_opcode[3]) ? 1 : 0;
+ IREG(1) = (IREG(2) == ICONST(3)) ? 1 : 0;
return (opcode_t *)cur_opcode + 4;}
@@ -18072,14 +18075,14 @@
opcode_t *
Parrot_iseq_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(2).u.number == NREG(3);
+ IREG(1) = NCONST(2) == NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = NREG(2) == CONST(3).u.number;
+ IREG(1) = NREG(2) == NCONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -18093,14 +18096,14 @@
opcode_t *
Parrot_iseq_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (Parrot_str_equal(interp, CONST(2).u.string, SREG(3)) ? 1 : 0);
+ IREG(1) = (Parrot_str_equal(interp, SCONST(2), SREG(3)) ? 1 : 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (Parrot_str_equal(interp, SREG(2), CONST(3).u.string) ? 1 : 0);
+ IREG(1) = (Parrot_str_equal(interp, SREG(2), SCONST(3)) ? 1 : 0);
return (opcode_t *)cur_opcode + 4;}
@@ -18124,14 +18127,14 @@
opcode_t *
Parrot_isne_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (cur_opcode[2] == IREG(3)) ? 0 : 1;
+ IREG(1) = (ICONST(2) == IREG(3)) ? 0 : 1;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (IREG(2) == cur_opcode[3]) ? 0 : 1;
+ IREG(1) = (IREG(2) == ICONST(3)) ? 0 : 1;
return (opcode_t *)cur_opcode + 4;}
@@ -18145,14 +18148,14 @@
opcode_t *
Parrot_isne_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(2).u.number != NREG(3);
+ IREG(1) = NCONST(2) != NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = NREG(2) != CONST(3).u.number;
+ IREG(1) = NREG(2) != NCONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -18166,14 +18169,14 @@
opcode_t *
Parrot_isne_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (Parrot_str_not_equal(interp, CONST(2).u.string, SREG(3)) ? 1 : 0);
+ IREG(1) = (Parrot_str_not_equal(interp, SCONST(2), SREG(3)) ? 1 : 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (Parrot_str_not_equal(interp, SREG(2), CONST(3).u.string) ? 1 : 0);
+ IREG(1) = (Parrot_str_not_equal(interp, SREG(2), SCONST(3)) ? 1 : 0);
return (opcode_t *)cur_opcode + 4;}
@@ -18197,14 +18200,14 @@
opcode_t *
Parrot_and_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = cur_opcode[2] ? IREG(3) : cur_opcode[2];
+ IREG(1) = ICONST(2) ? IREG(3) : ICONST(2);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_and_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = IREG(2) ? cur_opcode[3] : IREG(2);
+ IREG(1) = IREG(2) ? ICONST(3) : IREG(2);
return (opcode_t *)cur_opcode + 4;}
@@ -18256,14 +18259,14 @@
opcode_t *
Parrot_or_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = cur_opcode[2] ? cur_opcode[2] : IREG(3);
+ IREG(1) = ICONST(2) ? ICONST(2) : IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_or_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = IREG(2) ? IREG(2) : cur_opcode[3];
+ IREG(1) = IREG(2) ? IREG(2) : ICONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -18284,14 +18287,14 @@
opcode_t *
Parrot_xor_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (cur_opcode[2] && ! IREG(3)) ? cur_opcode[2] : (IREG(3) && ! cur_opcode[2]) ? IREG(3) : 0;
+ IREG(1) = (ICONST(2) && ! IREG(3)) ? ICONST(2) : (IREG(3) && ! ICONST(2)) ? IREG(3) : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_xor_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (IREG(2) && ! cur_opcode[3]) ? IREG(2) : (cur_opcode[3] && ! IREG(2)) ? cur_opcode[3] : 0;
+ IREG(1) = (IREG(2) && ! ICONST(3)) ? IREG(2) : (ICONST(3) && ! IREG(2)) ? ICONST(3) : 0;
return (opcode_t *)cur_opcode + 4;}
@@ -18322,7 +18325,7 @@
opcode_t *
Parrot_print_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_io_printf(interp, INTVAL_FMT, (INTVAL)cur_opcode[1]);
+ Parrot_io_printf(interp, INTVAL_FMT, (INTVAL)ICONST(1));
return (opcode_t *)cur_opcode + 2;}
@@ -18347,14 +18350,14 @@
Parrot_print_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
#ifdef PARROT_HAS_NEGATIVE_ZERO
- Parrot_io_printf(interp, FLOATVAL_FMT, CONST(1).u.number);
+ Parrot_io_printf(interp, FLOATVAL_FMT, NCONST(1));
#else
/* Workaround for older msvcrt and openbsd. TT #313 */
- if (Parrot_is_nzero(CONST(1).u.number)) {
+ if (Parrot_is_nzero(NCONST(1))) {
Parrot_io_printf(interp, "-0");
}
else {
- Parrot_io_printf(interp, FLOATVAL_FMT, CONST(1).u.number);
+ Parrot_io_printf(interp, FLOATVAL_FMT, NCONST(1));
}
#endif
@@ -18372,7 +18375,7 @@
opcode_t *
Parrot_print_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const s = CONST(1).u.string;
+ STRING * const s = SCONST(1);
if (s && Parrot_str_byte_length(interp, s))
Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
@@ -18398,7 +18401,7 @@
opcode_t *
Parrot_say_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_io_printf(interp, INTVAL_FMT "\n", (INTVAL)cur_opcode[1]);
+ Parrot_io_printf(interp, INTVAL_FMT "\n", (INTVAL)ICONST(1));
return (opcode_t *)cur_opcode + 2;}
@@ -18423,14 +18426,14 @@
Parrot_say_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
#ifdef PARROT_HAS_NEGATIVE_ZERO
- Parrot_io_printf(interp, FLOATVAL_FMT "\n", CONST(1).u.number);
+ Parrot_io_printf(interp, FLOATVAL_FMT "\n", NCONST(1));
#else
/* Workaround for older msvcrt and openbsd. TT #313 */
- if (Parrot_is_nzero(CONST(1).u.number)) {
+ if (Parrot_is_nzero(NCONST(1))) {
Parrot_io_printf(interp, "-0\n");
}
else {
- Parrot_io_printf(interp, FLOATVAL_FMT "\n", CONST(1).u.number);
+ Parrot_io_printf(interp, FLOATVAL_FMT "\n", NCONST(1));
}
#endif
@@ -18449,7 +18452,7 @@
opcode_t *
Parrot_say_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const s = CONST(1).u.string;
+ STRING * const s = SCONST(1);
if (s && Parrot_str_byte_length(interp, s))
Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
Parrot_io_putps(interp, _PIO_STDOUT(interp), Parrot_str_new_constant(interp, "\n"));
@@ -18489,7 +18492,7 @@
Parrot_print_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
if (PREG(1)) {
- STRING * const s = Parrot_str_from_int(interp, cur_opcode[2]);
+ STRING * const s = Parrot_str_from_int(interp, ICONST(2));
Parrot_io_putps(interp, PREG(1), s);
}
@@ -18509,7 +18512,7 @@
Parrot_print_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
if (PREG(1)) {
- STRING * const s = Parrot_sprintf_c(interp, FLOATVAL_FMT, CONST(2).u.number);
+ STRING * const s = Parrot_sprintf_c(interp, FLOATVAL_FMT, NCONST(2));
Parrot_io_putps(interp, PREG(1), s);
}
@@ -18527,8 +18530,8 @@
opcode_t *
Parrot_print_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (CONST(2).u.string && PREG(1)) {
- Parrot_io_putps(interp, PREG(1), CONST(2).u.string);
+ if (SCONST(2) && PREG(1)) {
+ Parrot_io_putps(interp, PREG(1), SCONST(2));
}
return (opcode_t *)cur_opcode + 3;}
@@ -18616,7 +18619,7 @@
opcode_t *
Parrot_add_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) += cur_opcode[2];
+ IREG(1) += ICONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -18630,7 +18633,7 @@
opcode_t *
Parrot_add_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) += CONST(2).u.number;
+ NREG(1) += NCONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -18651,7 +18654,7 @@
opcode_t *
Parrot_add_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_add_int(interp, PREG(1), cur_opcode[2]);
+ VTABLE_i_add_int(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -18665,7 +18668,7 @@
opcode_t *
Parrot_add_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_add_float(interp, PREG(1), CONST(2).u.number);
+ VTABLE_i_add_float(interp, PREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -18679,14 +18682,14 @@
opcode_t *
Parrot_add_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = cur_opcode[2] + IREG(3);
+ IREG(1) = ICONST(2) + IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = IREG(2) + cur_opcode[3];
+ IREG(1) = IREG(2) + ICONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -18700,14 +18703,14 @@
opcode_t *
Parrot_add_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = CONST(2).u.number + NREG(3);
+ NREG(1) = NCONST(2) + NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = NREG(2) + CONST(3).u.number;
+ NREG(1) = NREG(2) + NCONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -18728,7 +18731,7 @@
opcode_t *
Parrot_add_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_add_int(interp, PREG(2), cur_opcode[3], PREG(1));
+ PREG(1) = VTABLE_add_int(interp, PREG(2), ICONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -18742,7 +18745,7 @@
opcode_t *
Parrot_add_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_add_float(interp, PREG(2), CONST(3).u.number, PREG(1));
+ PREG(1) = VTABLE_add_float(interp, PREG(2), NCONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -18783,7 +18786,7 @@
opcode_t *
Parrot_div_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- INTVAL den = cur_opcode[2];
+ INTVAL den = ICONST(2);
if (den == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
EXCEPTION_DIV_BY_ZERO,
@@ -18809,7 +18812,7 @@
opcode_t *
Parrot_div_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- FLOATVAL den = CONST(2).u.number;
+ FLOATVAL den = NCONST(2);
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
EXCEPTION_DIV_BY_ZERO,
@@ -18836,7 +18839,7 @@
opcode_t *
Parrot_div_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_divide_int(interp, PREG(1), cur_opcode[2]);
+ VTABLE_i_divide_int(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -18850,7 +18853,7 @@
opcode_t *
Parrot_div_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_divide_float(interp, PREG(1), CONST(2).u.number);
+ VTABLE_i_divide_float(interp, PREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -18876,14 +18879,14 @@
EXCEPTION_DIV_BY_ZERO,
"Divide by zero");return (opcode_t *)handler;
}
- IREG(1) = cur_opcode[2] / den;
+ IREG(1) = ICONST(2) / den;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_div_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- INTVAL den = cur_opcode[3];
+ INTVAL den = ICONST(3);
if (den == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_DIV_BY_ZERO,
@@ -18896,13 +18899,13 @@
opcode_t *
Parrot_div_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- INTVAL den = cur_opcode[3];
+ INTVAL den = ICONST(3);
if (den == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_DIV_BY_ZERO,
"Divide by zero");return (opcode_t *)handler;
}
- IREG(1) = cur_opcode[2] / den;
+ IREG(1) = ICONST(2) / den;
return (opcode_t *)cur_opcode + 4;}
@@ -18928,14 +18931,14 @@
EXCEPTION_DIV_BY_ZERO,
"Divide by zero");return (opcode_t *)handler;
}
- NREG(1) = CONST(2).u.number / den;
+ NREG(1) = NCONST(2) / den;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_div_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- FLOATVAL den = CONST(3).u.number;
+ FLOATVAL den = NCONST(3);
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_DIV_BY_ZERO,
@@ -18948,13 +18951,13 @@
opcode_t *
Parrot_div_n_nc_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- FLOATVAL den = CONST(3).u.number;
+ FLOATVAL den = NCONST(3);
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_DIV_BY_ZERO,
"Divide by zero");return (opcode_t *)handler;
}
- NREG(1) = CONST(2).u.number / den;
+ NREG(1) = NCONST(2) / den;
return (opcode_t *)cur_opcode + 4;}
@@ -18975,7 +18978,7 @@
opcode_t *
Parrot_div_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_divide_int(interp, PREG(2), cur_opcode[3], PREG(1));
+ PREG(1) = VTABLE_divide_int(interp, PREG(2), ICONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -18989,7 +18992,7 @@
opcode_t *
Parrot_div_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_divide_float(interp, PREG(2), CONST(3).u.number, PREG(1));
+ PREG(1) = VTABLE_divide_float(interp, PREG(2), NCONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -19013,7 +19016,7 @@
opcode_t *
Parrot_fdiv_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- INTVAL den = cur_opcode[2];
+ INTVAL den = ICONST(2);
FLOATVAL f;
if (den == 0) {
@@ -19043,7 +19046,7 @@
opcode_t *
Parrot_fdiv_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- FLOATVAL den = CONST(2).u.number;
+ FLOATVAL den = NCONST(2);
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
EXCEPTION_DIV_BY_ZERO,
@@ -19070,7 +19073,7 @@
opcode_t *
Parrot_fdiv_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_floor_divide_int(interp, PREG(1), cur_opcode[2]);
+ VTABLE_i_floor_divide_int(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -19084,7 +19087,7 @@
opcode_t *
Parrot_fdiv_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_floor_divide_float(interp, PREG(1), CONST(2).u.number);
+ VTABLE_i_floor_divide_float(interp, PREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -19117,7 +19120,7 @@
"Divide by zero");return (opcode_t *)handler;
}
- f = floor((FLOATVAL)cur_opcode[2] / den);
+ f = floor((FLOATVAL)ICONST(2) / den);
IREG(1) = (INTVAL)f;
return (opcode_t *)cur_opcode + 4;}
@@ -19125,7 +19128,7 @@
opcode_t *
Parrot_fdiv_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- INTVAL den = cur_opcode[3];
+ INTVAL den = ICONST(3);
FLOATVAL f;
if (den == 0) {
@@ -19161,14 +19164,14 @@
EXCEPTION_DIV_BY_ZERO,
"Divide by zero");return (opcode_t *)handler;
}
- NREG(1) = floor(CONST(2).u.number / den);
+ NREG(1) = floor(NCONST(2) / den);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_fdiv_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- FLOATVAL den = CONST(3).u.number;
+ FLOATVAL den = NCONST(3);
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_DIV_BY_ZERO,
@@ -19195,7 +19198,7 @@
opcode_t *
Parrot_fdiv_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_floor_divide_int(interp, PREG(2), cur_opcode[3], PREG(1));
+ PREG(1) = VTABLE_floor_divide_int(interp, PREG(2), ICONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -19209,7 +19212,7 @@
opcode_t *
Parrot_fdiv_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_floor_divide_float(interp, PREG(2), CONST(3).u.number, PREG(1));
+ PREG(1) = VTABLE_floor_divide_float(interp, PREG(2), NCONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -19288,7 +19291,7 @@
opcode_t *
Parrot_mod_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = intval_mod(IREG(1), cur_opcode[2]);
+ IREG(1) = intval_mod(IREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -19302,7 +19305,7 @@
opcode_t *
Parrot_mod_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = floatval_mod(NREG(1), CONST(2).u.number);
+ NREG(1) = floatval_mod(NREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -19323,7 +19326,7 @@
opcode_t *
Parrot_mod_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_modulus_int(interp, PREG(1), cur_opcode[2]);
+ VTABLE_i_modulus_int(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -19337,7 +19340,7 @@
opcode_t *
Parrot_mod_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_modulus_float(interp, PREG(1), CONST(2).u.number);
+ VTABLE_i_modulus_float(interp, PREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -19351,14 +19354,14 @@
opcode_t *
Parrot_mod_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = intval_mod(cur_opcode[2], IREG(3));
+ IREG(1) = intval_mod(ICONST(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = intval_mod(IREG(2), cur_opcode[3]);
+ IREG(1) = intval_mod(IREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -19372,14 +19375,14 @@
opcode_t *
Parrot_mod_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = floatval_mod(CONST(2).u.number, NREG(3));
+ NREG(1) = floatval_mod(NCONST(2), NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = floatval_mod(NREG(2), CONST(3).u.number);
+ NREG(1) = floatval_mod(NREG(2), NCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -19400,7 +19403,7 @@
opcode_t *
Parrot_mod_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_modulus_int(interp, PREG(2), cur_opcode[3], PREG(1));
+ PREG(1) = VTABLE_modulus_int(interp, PREG(2), ICONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -19414,7 +19417,7 @@
opcode_t *
Parrot_mod_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_modulus_float(interp, PREG(2), CONST(3).u.number, PREG(1));
+ PREG(1) = VTABLE_modulus_float(interp, PREG(2), NCONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -19428,7 +19431,7 @@
opcode_t *
Parrot_mul_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) *= cur_opcode[2];
+ IREG(1) *= ICONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -19442,7 +19445,7 @@
opcode_t *
Parrot_mul_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) *= CONST(2).u.number;
+ NREG(1) *= NCONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -19463,7 +19466,7 @@
opcode_t *
Parrot_mul_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_multiply_int(interp, PREG(1), cur_opcode[2]);
+ VTABLE_i_multiply_int(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -19477,7 +19480,7 @@
opcode_t *
Parrot_mul_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_multiply_float(interp, PREG(1), CONST(2).u.number);
+ VTABLE_i_multiply_float(interp, PREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -19491,14 +19494,14 @@
opcode_t *
Parrot_mul_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = cur_opcode[2] * IREG(3);
+ IREG(1) = ICONST(2) * IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = IREG(2) * cur_opcode[3];
+ IREG(1) = IREG(2) * ICONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -19512,14 +19515,14 @@
opcode_t *
Parrot_mul_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = CONST(2).u.number * NREG(3);
+ NREG(1) = NCONST(2) * NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = NREG(2) * CONST(3).u.number;
+ NREG(1) = NREG(2) * NCONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -19540,7 +19543,7 @@
opcode_t *
Parrot_mul_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_multiply_int(interp, PREG(2), cur_opcode[3], PREG(1));
+ PREG(1) = VTABLE_multiply_int(interp, PREG(2), ICONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -19554,7 +19557,7 @@
opcode_t *
Parrot_mul_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_multiply_float(interp, PREG(2), CONST(3).u.number, PREG(1));
+ PREG(1) = VTABLE_multiply_float(interp, PREG(2), NCONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -19610,7 +19613,7 @@
opcode_t *
Parrot_sub_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) -= cur_opcode[2];
+ IREG(1) -= ICONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -19624,7 +19627,7 @@
opcode_t *
Parrot_sub_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) -= CONST(2).u.number;
+ NREG(1) -= NCONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -19645,7 +19648,7 @@
opcode_t *
Parrot_sub_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_subtract_int(interp, PREG(1), cur_opcode[2]);
+ VTABLE_i_subtract_int(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -19659,7 +19662,7 @@
opcode_t *
Parrot_sub_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_subtract_float(interp, PREG(1), CONST(2).u.number);
+ VTABLE_i_subtract_float(interp, PREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -19673,14 +19676,14 @@
opcode_t *
Parrot_sub_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = cur_opcode[2] - IREG(3);
+ IREG(1) = ICONST(2) - IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = IREG(2) - cur_opcode[3];
+ IREG(1) = IREG(2) - ICONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -19694,14 +19697,14 @@
opcode_t *
Parrot_sub_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = CONST(2).u.number - NREG(3);
+ NREG(1) = NCONST(2) - NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = NREG(2) - CONST(3).u.number;
+ NREG(1) = NREG(2) - NCONST(3);
return (opcode_t *)cur_opcode + 4;}
@@ -19722,7 +19725,7 @@
opcode_t *
Parrot_sub_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_subtract_int(interp, PREG(2), cur_opcode[3], PREG(1));
+ PREG(1) = VTABLE_subtract_int(interp, PREG(2), ICONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -19736,7 +19739,7 @@
opcode_t *
Parrot_sub_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_subtract_float(interp, PREG(2), CONST(3).u.number, PREG(1));
+ PREG(1) = VTABLE_subtract_float(interp, PREG(2), NCONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -19788,7 +19791,7 @@
Parrot_callmethodcc_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const object = PREG(1);
- STRING * const meth = CONST(2).u.string;
+ STRING * const meth = SCONST(2);
opcode_t * const next = cur_opcode + 3;
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
@@ -19868,7 +19871,7 @@
Parrot_callmethod_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const object = PREG(1);
- STRING * const meth = CONST(2).u.string;
+ STRING * const meth = SCONST(2);
opcode_t * const next = cur_opcode + 4;
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
@@ -19941,7 +19944,7 @@
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
opcode_t * const next = cur_opcode + 3;
PMC * const object = PREG(1);
- STRING * const meth = CONST(2).u.string;
+ STRING * const meth = SCONST(2);
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest;
@@ -19991,7 +19994,7 @@
opcode_t *
Parrot_addmethod_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_add_method(interp, PREG(1), CONST(2).u.string, PREG(3));
+ VTABLE_add_method(interp, PREG(1), SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -20005,7 +20008,7 @@
opcode_t *
Parrot_can_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = VTABLE_can(interp, PREG(2), CONST(3).u.string);
+ IREG(1) = VTABLE_can(interp, PREG(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -20019,7 +20022,7 @@
opcode_t *
Parrot_does_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(3).u.string ? VTABLE_does(interp, PREG(2), CONST(3).u.string) : 0;
+ IREG(1) = SCONST(3) ? VTABLE_does(interp, PREG(2), SCONST(3)) : 0;
return (opcode_t *)cur_opcode + 4;}
@@ -20033,7 +20036,7 @@
opcode_t *
Parrot_does_i_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(3).u.key ? VTABLE_does_pmc(interp, PREG(2), CONST(3).u.key) : 0;
+ IREG(1) = PCONST(3) ? VTABLE_does_pmc(interp, PREG(2), PCONST(3)) : 0;
return (opcode_t *)cur_opcode + 4;}
@@ -20047,7 +20050,7 @@
opcode_t *
Parrot_isa_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(3).u.string ? VTABLE_isa(interp, PREG(2), CONST(3).u.string) : 0;
+ IREG(1) = SCONST(3) ? VTABLE_isa(interp, PREG(2), SCONST(3)) : 0;
return (opcode_t *)cur_opcode + 4;}
@@ -20061,7 +20064,7 @@
opcode_t *
Parrot_isa_i_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = CONST(3).u.key ? VTABLE_isa_pmc(interp, PREG(2), CONST(3).u.key) : 0;
+ IREG(1) = PCONST(3) ? VTABLE_isa_pmc(interp, PREG(2), PCONST(3)) : 0;
return (opcode_t *)cur_opcode + 4;}
@@ -20078,7 +20081,7 @@
Parrot_newclass_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const name = Parrot_pmc_new(interp, enum_class_String);
- VTABLE_set_string_native(interp, name, CONST(2).u.string);
+ VTABLE_set_string_native(interp, name, SCONST(2));
PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, name);
return (opcode_t *)cur_opcode + 3;}
@@ -20093,7 +20096,7 @@
opcode_t *
Parrot_newclass_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(2).u.key);
+ PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -20115,13 +20118,13 @@
opcode_t *
Parrot_subclass_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const parent_class = Parrot_oo_get_class(interp, CONST(2).u.key);
+ PMC * const parent_class = Parrot_oo_get_class(interp, PCONST(2));
opcode_t * const next = cur_opcode + 3;
if (PMC_IS_NULL(parent_class)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NO_CLASS,
- "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2).u.key));return (opcode_t *)handler;
+ "Class '%Ss' doesn't exist", VTABLE_get_string(interp, PCONST(2)));return (opcode_t *)handler;
}
PREG(1) = Parrot_pmc_new(interp, enum_class_Class);
VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
@@ -20145,13 +20148,13 @@
opcode_t *
Parrot_subclass_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const parent_class = Parrot_oo_get_class(interp, CONST(2).u.key);
+ PMC * const parent_class = Parrot_oo_get_class(interp, PCONST(2));
opcode_t * const next = cur_opcode + 4;
if (PMC_IS_NULL(parent_class)) {
opcode_t * handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NO_CLASS,
- "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2).u.key));return (opcode_t *)handler;
+ "Class '%Ss' doesn't exist", VTABLE_get_string(interp, PCONST(2)));return (opcode_t *)handler;
}
PREG(1) = Parrot_oo_newclass_from_str(interp, SREG(3));
VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
@@ -20168,22 +20171,22 @@
EXCEPTION_NO_CLASS,
"Class '%Ss' doesn't exist", VTABLE_get_string(interp, PREG(2)));return (opcode_t *)handler;
}
- PREG(1) = Parrot_oo_newclass_from_str(interp, CONST(3).u.string);
+ PREG(1) = Parrot_oo_newclass_from_str(interp, SCONST(3));
VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
}
opcode_t *
Parrot_subclass_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const parent_class = Parrot_oo_get_class(interp, CONST(2).u.key);
+ PMC * const parent_class = Parrot_oo_get_class(interp, PCONST(2));
opcode_t * const next = cur_opcode + 4;
if (PMC_IS_NULL(parent_class)) {
opcode_t * handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NO_CLASS,
- "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2).u.key));return (opcode_t *)handler;
+ "Class '%Ss' doesn't exist", VTABLE_get_string(interp, PCONST(2)));return (opcode_t *)handler;
}
- PREG(1) = Parrot_oo_newclass_from_str(interp, CONST(3).u.string);
+ PREG(1) = Parrot_oo_newclass_from_str(interp, SCONST(3));
VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
}
@@ -20205,13 +20208,13 @@
opcode_t *
Parrot_subclass_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const parent_class = Parrot_oo_get_class(interp, CONST(2).u.key);
+ PMC * const parent_class = Parrot_oo_get_class(interp, PCONST(2));
opcode_t * const next = cur_opcode + 4;
if (PMC_IS_NULL(parent_class)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NO_CLASS,
- "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2).u.key));return (opcode_t *)handler;
+ "Class '%Ss' doesn't exist", VTABLE_get_string(interp, PCONST(2)));return (opcode_t *)handler;
}
PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PREG(3));
VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
@@ -20228,22 +20231,22 @@
EXCEPTION_NO_CLASS,
"Class '%Ss' doesn't exist", VTABLE_get_string(interp, PREG(2)));return (opcode_t *)handler;
}
- PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3).u.key);
+ PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PCONST(3));
VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
}
opcode_t *
Parrot_subclass_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const parent_class = Parrot_oo_get_class(interp, CONST(2).u.key);
+ PMC * const parent_class = Parrot_oo_get_class(interp, PCONST(2));
opcode_t * const next = cur_opcode + 4;
if (PMC_IS_NULL(parent_class)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NO_CLASS,
- "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2).u.key));return (opcode_t *)handler;
+ "Class '%Ss' doesn't exist", VTABLE_get_string(interp, PCONST(2)));return (opcode_t *)handler;
}
- PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3).u.key);
+ PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PCONST(3));
VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
}
@@ -20266,13 +20269,13 @@
opcode_t *
Parrot_subclass_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const parent_class = Parrot_oo_get_class_str(interp, CONST(2).u.string);
+ PMC * const parent_class = Parrot_oo_get_class_str(interp, SCONST(2));
opcode_t * const next = cur_opcode + 3;
if (PMC_IS_NULL(parent_class)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NO_CLASS,
- "Class '%Ss' doesn't exist", CONST(2).u.string);return (opcode_t *)handler;
+ "Class '%Ss' doesn't exist", SCONST(2));return (opcode_t *)handler;
}
PREG(1) = Parrot_pmc_new(interp, enum_class_Class);
@@ -20298,13 +20301,13 @@
opcode_t *
Parrot_subclass_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const parent_class = Parrot_oo_get_class_str(interp, CONST(2).u.string);
+ PMC * const parent_class = Parrot_oo_get_class_str(interp, SCONST(2));
opcode_t * const next = cur_opcode + 4;
if (PMC_IS_NULL(parent_class)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NO_CLASS,
- "Class '%Ss' doesn't exist", CONST(2).u.string);return (opcode_t *)handler;
+ "Class '%Ss' doesn't exist", SCONST(2));return (opcode_t *)handler;
}
PREG(1) = Parrot_oo_newclass_from_str(interp, SREG(3));
@@ -20323,23 +20326,23 @@
"Class '%Ss' doesn't exist", SREG(2));return (opcode_t *)handler;
}
- PREG(1) = Parrot_oo_newclass_from_str(interp, CONST(3).u.string);
+ PREG(1) = Parrot_oo_newclass_from_str(interp, SCONST(3));
VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
}
opcode_t *
Parrot_subclass_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const parent_class = Parrot_oo_get_class_str(interp, CONST(2).u.string);
+ PMC * const parent_class = Parrot_oo_get_class_str(interp, SCONST(2));
opcode_t * const next = cur_opcode + 4;
if (PMC_IS_NULL(parent_class)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NO_CLASS,
- "Class '%Ss' doesn't exist", CONST(2).u.string);return (opcode_t *)handler;
+ "Class '%Ss' doesn't exist", SCONST(2));return (opcode_t *)handler;
}
- PREG(1) = Parrot_oo_newclass_from_str(interp, CONST(3).u.string);
+ PREG(1) = Parrot_oo_newclass_from_str(interp, SCONST(3));
VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
}
@@ -20362,13 +20365,13 @@
opcode_t *
Parrot_subclass_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const parent_class = Parrot_oo_get_class_str(interp, CONST(2).u.string);
+ PMC * const parent_class = Parrot_oo_get_class_str(interp, SCONST(2));
opcode_t * const next = cur_opcode + 4;
if (PMC_IS_NULL(parent_class)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NO_CLASS,
- "Class '%Ss' doesn't exist", CONST(2).u.string);return (opcode_t *)handler;
+ "Class '%Ss' doesn't exist", SCONST(2));return (opcode_t *)handler;
}
PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PREG(3));
@@ -20387,23 +20390,23 @@
"Class '%Ss' doesn't exist", SREG(2));return (opcode_t *)handler;
}
- PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3).u.key);
+ PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PCONST(3));
VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
}
opcode_t *
Parrot_subclass_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const parent_class = Parrot_oo_get_class_str(interp, CONST(2).u.string);
+ PMC * const parent_class = Parrot_oo_get_class_str(interp, SCONST(2));
opcode_t * const next = cur_opcode + 4;
if (PMC_IS_NULL(parent_class)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NO_CLASS,
- "Class '%Ss' doesn't exist", CONST(2).u.string);return (opcode_t *)handler;
+ "Class '%Ss' doesn't exist", SCONST(2));return (opcode_t *)handler;
}
- PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3).u.key);
+ PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PCONST(3));
VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
}
@@ -20417,7 +20420,7 @@
opcode_t *
Parrot_get_class_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_oo_get_class_str(interp, CONST(2).u.string);
+ PREG(1) = Parrot_oo_get_class_str(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -20431,7 +20434,7 @@
opcode_t *
Parrot_get_class_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_oo_get_class(interp, CONST(2).u.key);
+ PREG(1) = Parrot_oo_get_class(interp, PCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -20473,7 +20476,7 @@
opcode_t *
Parrot_addattribute_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_add_attribute(interp, PREG(1), CONST(2).u.string, PMCNULL);
+ VTABLE_add_attribute(interp, PREG(1), SCONST(2), PMCNULL);
return (opcode_t *)cur_opcode + 3;}
@@ -20487,7 +20490,7 @@
opcode_t *
Parrot_removeattribute_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_remove_attribute(interp, PREG(1), CONST(2).u.string);
+ VTABLE_remove_attribute(interp, PREG(1), SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -20501,7 +20504,7 @@
opcode_t *
Parrot_getattribute_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_attr_str(interp, PREG(2), CONST(3).u.string);
+ PREG(1) = VTABLE_get_attr_str(interp, PREG(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -20515,21 +20518,21 @@
opcode_t *
Parrot_getattribute_p_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), CONST(3).u.key, SREG(4));
+ PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), PCONST(3), SREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_getattribute_p_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), PREG(3), CONST(4).u.string);
+ PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), PREG(3), SCONST(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_getattribute_p_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), CONST(3).u.key, CONST(4).u.string);
+ PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), PCONST(3), SCONST(4));
return (opcode_t *)cur_opcode + 5;}
@@ -20543,7 +20546,7 @@
opcode_t *
Parrot_setattribute_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_attr_str(interp, PREG(1), CONST(2).u.string, PREG(3));
+ VTABLE_set_attr_str(interp, PREG(1), SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -20557,21 +20560,21 @@
opcode_t *
Parrot_setattribute_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_attr_keyed(interp, PREG(1), CONST(2).u.key, SREG(3), PREG(4));
+ VTABLE_set_attr_keyed(interp, PREG(1), PCONST(2), SREG(3), PREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_setattribute_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_attr_keyed(interp, PREG(1), PREG(2), CONST(3).u.string, PREG(4));
+ VTABLE_set_attr_keyed(interp, PREG(1), PREG(2), SCONST(3), PREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_setattribute_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_attr_keyed(interp, PREG(1), CONST(2).u.key, CONST(3).u.string, PREG(4));
+ VTABLE_set_attr_keyed(interp, PREG(1), PCONST(2), SCONST(3), PREG(4));
return (opcode_t *)cur_opcode + 5;}
@@ -20585,7 +20588,7 @@
opcode_t *
Parrot_inspect_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_inspect(interp, CONST(2).u.key);
+ PREG(1) = VTABLE_inspect(interp, PCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -20599,21 +20602,21 @@
opcode_t *
Parrot_inspect_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_inspect_str(interp, CONST(2).u.key, SREG(3));
+ PREG(1) = VTABLE_inspect_str(interp, PCONST(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_inspect_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_inspect_str(interp, PREG(2), CONST(3).u.string);
+ PREG(1) = VTABLE_inspect_str(interp, PREG(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_inspect_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_inspect_str(interp, CONST(2).u.key, CONST(3).u.string);
+ PREG(1) = VTABLE_inspect_str(interp, PCONST(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -20642,7 +20645,7 @@
opcode_t *
Parrot_new_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const name = CONST(2).u.string;
+ STRING * const name = SCONST(2);
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
: PMCNULL;
@@ -20686,7 +20689,7 @@
opcode_t *
Parrot_new_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const name = CONST(2).u.string;
+ STRING * const name = SCONST(2);
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
: PMCNULL;
@@ -20714,7 +20717,7 @@
: PMCNULL;
if (!PMC_IS_NULL(_class))
- PREG(1) = VTABLE_instantiate(interp, _class, CONST(3).u.key);
+ PREG(1) = VTABLE_instantiate(interp, _class, PCONST(3));
else {
const INTVAL type = Parrot_pmc_get_type_str(interp, name);
if (type <= 0) {
@@ -20722,7 +20725,7 @@
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);return (opcode_t *)dest;
}
- PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3).u.key);
+ PREG(1) = Parrot_pmc_new_init(interp, type, PCONST(3));
}
return (opcode_t *)cur_opcode + 4;}
@@ -20730,13 +20733,13 @@
opcode_t *
Parrot_new_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const name = CONST(2).u.string;
+ STRING * const name = SCONST(2);
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
: PMCNULL;
if (!PMC_IS_NULL(_class))
- PREG(1) = VTABLE_instantiate(interp, _class, CONST(3).u.key);
+ PREG(1) = VTABLE_instantiate(interp, _class, PCONST(3));
else {
const INTVAL type = Parrot_pmc_get_type_str(interp, name);
if (type <= 0) {
@@ -20744,7 +20747,7 @@
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);return (opcode_t *)dest;
}
- PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3).u.key);
+ PREG(1) = Parrot_pmc_new_init(interp, type, PCONST(3));
}
return (opcode_t *)cur_opcode + 4;}
@@ -20772,7 +20775,7 @@
opcode_t *
Parrot_new_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const name_key = CONST(2).u.key;
+ PMC * const name_key = PCONST(2);
PMC * const _class = Parrot_oo_get_class(interp, name_key);
if (!PMC_IS_NULL(_class))
@@ -20812,7 +20815,7 @@
opcode_t *
Parrot_new_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const name_key = CONST(2).u.key;
+ PMC * const name_key = PCONST(2);
PMC * const _class = Parrot_oo_get_class(interp, name_key);
if (!PMC_IS_NULL(_class))
@@ -20836,7 +20839,7 @@
PMC * const _class = Parrot_oo_get_class(interp, name_key);
if (!PMC_IS_NULL(_class))
- PREG(1) = VTABLE_instantiate(interp, _class, CONST(3).u.key);
+ PREG(1) = VTABLE_instantiate(interp, _class, PCONST(3));
else {
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
if (type <= 0) {
@@ -20844,7 +20847,7 @@
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
}
- PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3).u.key);
+ PREG(1) = Parrot_pmc_new_init(interp, type, PCONST(3));
}
return (opcode_t *)cur_opcode + 4;}
@@ -20852,11 +20855,11 @@
opcode_t *
Parrot_new_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const name_key = CONST(2).u.key;
+ PMC * const name_key = PCONST(2);
PMC * const _class = Parrot_oo_get_class(interp, name_key);
if (!PMC_IS_NULL(_class))
- PREG(1) = VTABLE_instantiate(interp, _class, CONST(3).u.key);
+ PREG(1) = VTABLE_instantiate(interp, _class, PCONST(3));
else {
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
if (type <= 0) {
@@ -20864,7 +20867,7 @@
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
}
- PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3).u.key);
+ PREG(1) = Parrot_pmc_new_init(interp, type, PCONST(3));
}
return (opcode_t *)cur_opcode + 4;}
@@ -20892,7 +20895,7 @@
opcode_t *
Parrot_root_new_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const key = CONST(2).u.key;
+ PMC * const key = PCONST(2);
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
PMC * classobj = PMCNULL;
@@ -20932,7 +20935,7 @@
opcode_t *
Parrot_root_new_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const key = CONST(2).u.key;
+ PMC * const key = PCONST(2);
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
PMC * classobj = PMCNULL;
@@ -20960,7 +20963,7 @@
if (!PMC_IS_NULL(ns))
classobj = Parrot_oo_get_class(interp, ns);
if (!PMC_IS_NULL(classobj))
- PREG(1) = VTABLE_instantiate(interp, classobj, CONST(3).u.key);
+ PREG(1) = VTABLE_instantiate(interp, classobj, PCONST(3));
else {
opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
@@ -20972,7 +20975,7 @@
opcode_t *
Parrot_root_new_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const key = CONST(2).u.key;
+ PMC * const key = PCONST(2);
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
PMC * classobj = PMCNULL;
@@ -20980,7 +20983,7 @@
if (!PMC_IS_NULL(ns))
classobj = Parrot_oo_get_class(interp, ns);
if (!PMC_IS_NULL(classobj))
- PREG(1) = VTABLE_instantiate(interp, classobj, CONST(3).u.key);
+ PREG(1) = VTABLE_instantiate(interp, classobj, PCONST(3));
else {
opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
@@ -21027,11 +21030,11 @@
Parrot_find_method_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
opcode_t * const resume = cur_opcode + 4;
- PREG(1) = VTABLE_find_method(interp, PREG(2), CONST(3).u.string);
+ PREG(1) = VTABLE_find_method(interp, PREG(2), SCONST(3));
if (PMC_IS_NULL(PREG(1)) || !VTABLE_defined(interp, PREG(1))) {
opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, resume,
EXCEPTION_METHOD_NOT_FOUND,
- "Method '%Ss' not found for invocant of class '%Ss'", CONST(3).u.string,
+ "Method '%Ss' not found for invocant of class '%Ss'", SCONST(3),
VTABLE_get_string(interp, VTABLE_get_class(interp, PREG(2))));return (opcode_t *)dest;
}return (opcode_t *)resume;
}
@@ -21053,7 +21056,7 @@
opcode_t *
Parrot_defined_i_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed_int(interp, PREG(2), cur_opcode[3]);
+ IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed_int(interp, PREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21067,7 +21070,7 @@
opcode_t *
Parrot_defined_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed(interp, PREG(2), CONST(3).u.key);
+ IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed(interp, PREG(2), PCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21081,7 +21084,7 @@
opcode_t *
Parrot_exists_i_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_exists_keyed_int(interp, PREG(2), cur_opcode[3]);
+ IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_exists_keyed_int(interp, PREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21095,7 +21098,7 @@
opcode_t *
Parrot_exists_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = PMC_IS_NULL(PREG(2)) ? 0: VTABLE_exists_keyed(interp, PREG(2), CONST(3).u.key);
+ IREG(1) = PMC_IS_NULL(PREG(2)) ? 0: VTABLE_exists_keyed(interp, PREG(2), PCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21109,7 +21112,7 @@
opcode_t *
Parrot_delete_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_delete_keyed(interp, PREG(1), CONST(2).u.key);
+ VTABLE_delete_keyed(interp, PREG(1), PCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21123,7 +21126,7 @@
opcode_t *
Parrot_delete_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_delete_keyed_int(interp, PREG(1), cur_opcode[2]);
+ VTABLE_delete_keyed_int(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21144,7 +21147,7 @@
opcode_t *
Parrot_push_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_push_integer(interp, PREG(1), cur_opcode[2]);
+ VTABLE_push_integer(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21158,7 +21161,7 @@
opcode_t *
Parrot_push_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_push_float(interp, PREG(1), CONST(2).u.number);
+ VTABLE_push_float(interp, PREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21172,7 +21175,7 @@
opcode_t *
Parrot_push_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_push_string(interp, PREG(1), CONST(2).u.string);
+ VTABLE_push_string(interp, PREG(1), SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21221,7 +21224,7 @@
opcode_t *
Parrot_unshift_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_unshift_integer(interp, PREG(1), cur_opcode[2]);
+ VTABLE_unshift_integer(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21235,7 +21238,7 @@
opcode_t *
Parrot_unshift_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_unshift_float(interp, PREG(1), CONST(2).u.number);
+ VTABLE_unshift_float(interp, PREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21249,7 +21252,7 @@
opcode_t *
Parrot_unshift_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_unshift_string(interp, PREG(1), CONST(2).u.string);
+ VTABLE_unshift_string(interp, PREG(1), SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21298,21 +21301,21 @@
opcode_t *
Parrot_splice_p_p_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_splice(interp, PREG(1), PREG(2), cur_opcode[3], IREG(4));
+ VTABLE_splice(interp, PREG(1), PREG(2), ICONST(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_splice_p_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_splice(interp, PREG(1), PREG(2), IREG(3), cur_opcode[4]);
+ VTABLE_splice(interp, PREG(1), PREG(2), IREG(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_splice_p_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_splice(interp, PREG(1), PREG(2), cur_opcode[3], cur_opcode[4]);
+ VTABLE_splice(interp, PREG(1), PREG(2), ICONST(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
@@ -21326,7 +21329,7 @@
opcode_t *
Parrot_setprop_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_setprop(interp, PREG(1), CONST(2).u.string, PREG(3));
+ VTABLE_setprop(interp, PREG(1), SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21340,7 +21343,7 @@
opcode_t *
Parrot_getprop_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_getprop(interp, PREG(3), CONST(2).u.string);
+ PREG(1) = VTABLE_getprop(interp, PREG(3), SCONST(2));
return (opcode_t *)cur_opcode + 4;}
@@ -21354,7 +21357,7 @@
opcode_t *
Parrot_delprop_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_delprop(interp, PREG(1), CONST(2).u.string);
+ VTABLE_delprop(interp, PREG(1), SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21382,7 +21385,7 @@
opcode_t *
Parrot_thaw_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_thaw(interp, CONST(2).u.string);
+ PREG(1) = Parrot_thaw(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21396,21 +21399,21 @@
opcode_t *
Parrot_add_multi_sc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_mmd_add_multi_from_long_sig(interp, CONST(1).u.string, SREG(2), PREG(3));
+ Parrot_mmd_add_multi_from_long_sig(interp, SCONST(1), SREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_multi_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_mmd_add_multi_from_long_sig(interp, SREG(1), CONST(2).u.string, PREG(3));
+ Parrot_mmd_add_multi_from_long_sig(interp, SREG(1), SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_multi_sc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_mmd_add_multi_from_long_sig(interp, CONST(1).u.string, CONST(2).u.string, PREG(3));
+ Parrot_mmd_add_multi_from_long_sig(interp, SCONST(1), SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21424,21 +21427,21 @@
opcode_t *
Parrot_find_multi_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, CONST(2).u.string, SREG(3));
+ PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, SCONST(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_find_multi_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, SREG(2), CONST(3).u.string);
+ PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, SREG(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_find_multi_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, CONST(2).u.string, CONST(3).u.string);
+ PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, SCONST(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21468,7 +21471,7 @@
Parrot_box_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
- VTABLE_set_integer_native(interp, PREG(1), cur_opcode[2]);
+ VTABLE_set_integer_native(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21484,7 +21487,7 @@
Parrot_box_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
- VTABLE_set_number_native(interp, PREG(1), CONST(2).u.number);
+ VTABLE_set_number_native(interp, PREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21500,7 +21503,7 @@
Parrot_box_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
- VTABLE_set_string_native(interp, PREG(1), CONST(2).u.string);
+ VTABLE_set_string_native(interp, PREG(1), SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21521,7 +21524,7 @@
opcode_t *
Parrot_morph_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_morph(interp, PREG(1), CONST(2).u.key);
+ VTABLE_morph(interp, PREG(1), PCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21539,9 +21542,9 @@
Parrot_clone_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
/* cloning a NULL STRING produces an empty STRING; TT #964 */
- SREG(1) = STRING_IS_NULL(CONST(2).u.string)
+ SREG(1) = STRING_IS_NULL(SCONST(2))
? Parrot_str_new(interp, NULL, 0)
- : CONST(2).u.string;
+ : SCONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -21555,7 +21558,7 @@
opcode_t *
Parrot_set_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = cur_opcode[2];
+ IREG(1) = ICONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -21569,7 +21572,7 @@
opcode_t *
Parrot_set_i_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (INTVAL)(CONST(2).u.number);
+ IREG(1) = (INTVAL)(NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21583,7 +21586,7 @@
opcode_t *
Parrot_set_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_to_int(interp, CONST(2).u.string);
+ IREG(1) = Parrot_str_to_int(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21597,7 +21600,7 @@
opcode_t *
Parrot_set_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = CONST(2).u.number;
+ NREG(1) = NCONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -21611,7 +21614,7 @@
opcode_t *
Parrot_set_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = (FLOATVAL)cur_opcode[2];
+ NREG(1) = (FLOATVAL)ICONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -21625,7 +21628,7 @@
opcode_t *
Parrot_set_n_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = Parrot_str_to_num(interp, CONST(2).u.string);
+ NREG(1) = Parrot_str_to_num(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21653,7 +21656,7 @@
opcode_t *
Parrot_set_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = CONST(2).u.string;
+ SREG(1) = SCONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -21667,7 +21670,7 @@
opcode_t *
Parrot_set_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_from_int(interp, cur_opcode[2]);
+ SREG(1) = Parrot_str_from_int(interp, ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21681,14 +21684,14 @@
opcode_t *
Parrot_set_s_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_from_num(interp, CONST(2).u.number);
+ SREG(1) = Parrot_str_from_num(interp, NCONST(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = CONST(2).u.key;
+ PREG(1) = PCONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -21709,7 +21712,7 @@
opcode_t *
Parrot_set_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_integer_native(interp, PREG(1), cur_opcode[2]);
+ VTABLE_set_integer_native(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21723,7 +21726,7 @@
opcode_t *
Parrot_set_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_number_native(interp, PREG(1), CONST(2).u.number);
+ VTABLE_set_number_native(interp, PREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21737,7 +21740,7 @@
opcode_t *
Parrot_set_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_string_native(interp, PREG(1), CONST(2).u.string);
+ VTABLE_set_string_native(interp, PREG(1), SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21765,7 +21768,7 @@
opcode_t *
Parrot_assign_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_integer_native(interp, PREG(1), cur_opcode[2]);
+ VTABLE_set_integer_native(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21779,7 +21782,7 @@
opcode_t *
Parrot_assign_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_number_native(interp, PREG(1), CONST(2).u.number);
+ VTABLE_set_number_native(interp, PREG(1), NCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21793,7 +21796,7 @@
opcode_t *
Parrot_assign_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_assign_string_native(interp, PREG(1), CONST(2).u.string);
+ VTABLE_assign_string_native(interp, PREG(1), SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -21807,7 +21810,7 @@
opcode_t *
Parrot_assign_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = CONST(2).u.string;
+ SREG(1) = SCONST(2);
return (opcode_t *)cur_opcode + 3;}
@@ -21835,21 +21838,21 @@
opcode_t *
Parrot_set_p_kic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_integer_keyed_int(interp, PREG(1), cur_opcode[2], IREG(3));
+ VTABLE_set_integer_keyed_int(interp, PREG(1), ICONST(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_ki_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_integer_keyed_int(interp, PREG(1), IREG(2), cur_opcode[3]);
+ VTABLE_set_integer_keyed_int(interp, PREG(1), IREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_integer_keyed_int(interp, PREG(1), cur_opcode[2], cur_opcode[3]);
+ VTABLE_set_integer_keyed_int(interp, PREG(1), ICONST(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21863,21 +21866,21 @@
opcode_t *
Parrot_set_p_kic_n(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_number_keyed_int(interp, PREG(1), cur_opcode[2], NREG(3));
+ VTABLE_set_number_keyed_int(interp, PREG(1), ICONST(2), NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_ki_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_number_keyed_int(interp, PREG(1), IREG(2), CONST(3).u.number);
+ VTABLE_set_number_keyed_int(interp, PREG(1), IREG(2), NCONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kic_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_number_keyed_int(interp, PREG(1), cur_opcode[2], CONST(3).u.number);
+ VTABLE_set_number_keyed_int(interp, PREG(1), ICONST(2), NCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21891,21 +21894,21 @@
opcode_t *
Parrot_set_p_kic_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_string_keyed_int(interp, PREG(1), cur_opcode[2], SREG(3));
+ VTABLE_set_string_keyed_int(interp, PREG(1), ICONST(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_ki_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_string_keyed_int(interp, PREG(1), IREG(2), CONST(3).u.string);
+ VTABLE_set_string_keyed_int(interp, PREG(1), IREG(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_string_keyed_int(interp, PREG(1), cur_opcode[2], CONST(3).u.string);
+ VTABLE_set_string_keyed_int(interp, PREG(1), ICONST(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21919,7 +21922,7 @@
opcode_t *
Parrot_set_p_kic_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_pmc_keyed_int(interp, PREG(1), cur_opcode[2], PREG(3));
+ VTABLE_set_pmc_keyed_int(interp, PREG(1), ICONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21933,7 +21936,7 @@
opcode_t *
Parrot_set_i_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = VTABLE_get_integer_keyed_int(interp, PREG(2), cur_opcode[3]);
+ IREG(1) = VTABLE_get_integer_keyed_int(interp, PREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21947,7 +21950,7 @@
opcode_t *
Parrot_set_n_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = VTABLE_get_number_keyed_int(interp, PREG(2), cur_opcode[3]);
+ NREG(1) = VTABLE_get_number_keyed_int(interp, PREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21961,7 +21964,7 @@
opcode_t *
Parrot_set_s_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = VTABLE_get_string_keyed_int(interp, PREG(2), cur_opcode[3]);
+ SREG(1) = VTABLE_get_string_keyed_int(interp, PREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21975,7 +21978,7 @@
opcode_t *
Parrot_set_p_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -21989,21 +21992,21 @@
opcode_t *
Parrot_set_p_kc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_integer_keyed(interp, PREG(1), CONST(2).u.key, IREG(3));
+ VTABLE_set_integer_keyed(interp, PREG(1), PCONST(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_k_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_integer_keyed(interp, PREG(1), PREG(2), cur_opcode[3]);
+ VTABLE_set_integer_keyed(interp, PREG(1), PREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_integer_keyed(interp, PREG(1), CONST(2).u.key, cur_opcode[3]);
+ VTABLE_set_integer_keyed(interp, PREG(1), PCONST(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22017,21 +22020,21 @@
opcode_t *
Parrot_set_p_kc_n(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_number_keyed(interp, PREG(1), CONST(2).u.key, NREG(3));
+ VTABLE_set_number_keyed(interp, PREG(1), PCONST(2), NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_k_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_number_keyed(interp, PREG(1), PREG(2), CONST(3).u.number);
+ VTABLE_set_number_keyed(interp, PREG(1), PREG(2), NCONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kc_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_number_keyed(interp, PREG(1), CONST(2).u.key, CONST(3).u.number);
+ VTABLE_set_number_keyed(interp, PREG(1), PCONST(2), NCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22045,21 +22048,21 @@
opcode_t *
Parrot_set_p_kc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_string_keyed(interp, PREG(1), CONST(2).u.key, SREG(3));
+ VTABLE_set_string_keyed(interp, PREG(1), PCONST(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_k_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_string_keyed(interp, PREG(1), PREG(2), CONST(3).u.string);
+ VTABLE_set_string_keyed(interp, PREG(1), PREG(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_string_keyed(interp, PREG(1), CONST(2).u.key, CONST(3).u.string);
+ VTABLE_set_string_keyed(interp, PREG(1), PCONST(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22073,7 +22076,7 @@
opcode_t *
Parrot_set_p_kc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_pmc_keyed(interp, PREG(1), CONST(2).u.key, PREG(3));
+ VTABLE_set_pmc_keyed(interp, PREG(1), PCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22087,7 +22090,7 @@
opcode_t *
Parrot_set_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = VTABLE_get_integer_keyed(interp, PREG(2), CONST(3).u.key);
+ IREG(1) = VTABLE_get_integer_keyed(interp, PREG(2), PCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22101,7 +22104,7 @@
opcode_t *
Parrot_set_n_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- NREG(1) = VTABLE_get_number_keyed(interp, PREG(2), CONST(3).u.key);
+ NREG(1) = VTABLE_get_number_keyed(interp, PREG(2), PCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22115,7 +22118,7 @@
opcode_t *
Parrot_set_s_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = VTABLE_get_string_keyed(interp, PREG(2), CONST(3).u.key);
+ SREG(1) = VTABLE_get_string_keyed(interp, PREG(2), PCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22129,7 +22132,7 @@
opcode_t *
Parrot_set_p_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3).u.key);
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22150,7 +22153,7 @@
opcode_t *
Parrot_clone_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_clone_pmc(interp, PREG(2), CONST(3).u.key);
+ PREG(1) = VTABLE_clone_pmc(interp, PREG(2), PCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22230,7 +22233,7 @@
opcode_t *
Parrot_ord_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = string_ord(interp, CONST(2).u.string, 0);
+ IREG(1) = string_ord(interp, SCONST(2), 0);
return (opcode_t *)cur_opcode + 3;}
@@ -22244,21 +22247,21 @@
opcode_t *
Parrot_ord_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = string_ord(interp, CONST(2).u.string, IREG(3));
+ IREG(1) = string_ord(interp, SCONST(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_ord_i_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = string_ord(interp, SREG(2), cur_opcode[3]);
+ IREG(1) = string_ord(interp, SREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_ord_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = string_ord(interp, CONST(2).u.string, cur_opcode[3]);
+ IREG(1) = string_ord(interp, SCONST(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22273,7 +22276,7 @@
opcode_t *
Parrot_chr_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const s = string_chr(interp, (UINTVAL)cur_opcode[2]);
+ STRING * const s = string_chr(interp, (UINTVAL)ICONST(2));
SREG(1) = s;
return (opcode_t *)cur_opcode + 3;}
@@ -22288,21 +22291,21 @@
opcode_t *
Parrot_chopn_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_chopn(interp, CONST(2).u.string, IREG(3));
+ SREG(1) = Parrot_str_chopn(interp, SCONST(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_chopn_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_chopn(interp, SREG(2), cur_opcode[3]);
+ SREG(1) = Parrot_str_chopn(interp, SREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_chopn_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_chopn(interp, CONST(2).u.string, cur_opcode[3]);
+ SREG(1) = Parrot_str_chopn(interp, SCONST(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22316,7 +22319,7 @@
opcode_t *
Parrot_concat_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_concat(interp, SREG(1), CONST(2).u.string);
+ SREG(1) = Parrot_str_concat(interp, SREG(1), SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -22337,7 +22340,7 @@
opcode_t *
Parrot_concat_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_concatenate_str(interp, PREG(1), CONST(2).u.string);
+ VTABLE_i_concatenate_str(interp, PREG(1), SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -22351,14 +22354,14 @@
opcode_t *
Parrot_concat_s_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_concat(interp, CONST(2).u.string, SREG(3));
+ SREG(1) = Parrot_str_concat(interp, SCONST(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_concat_s_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_concat(interp, SREG(2), CONST(3).u.string);
+ SREG(1) = Parrot_str_concat(interp, SREG(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22372,7 +22375,7 @@
opcode_t *
Parrot_concat_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_concatenate_str(interp, PREG(2), CONST(3).u.string, PREG(1));
+ PREG(1) = VTABLE_concatenate_str(interp, PREG(2), SCONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -22403,31 +22406,31 @@
EXCEPTION_NEG_REPEAT,
"Cannot repeat with negative arg");return (opcode_t *)handler;
}
- SREG(1) = Parrot_str_repeat(interp, CONST(2).u.string, (UINTVAL)IREG(3));
+ SREG(1) = Parrot_str_repeat(interp, SCONST(2), (UINTVAL)IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_repeat_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[3] < 0) {
+ if (ICONST(3) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_NEG_REPEAT,
"Cannot repeat with negative arg");return (opcode_t *)handler;
}
- SREG(1) = Parrot_str_repeat(interp, SREG(2), (UINTVAL)cur_opcode[3]);
+ SREG(1) = Parrot_str_repeat(interp, SREG(2), (UINTVAL)ICONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_repeat_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[3] < 0) {
+ if (ICONST(3) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_NEG_REPEAT,
"Cannot repeat with negative arg");return (opcode_t *)handler;
}
- SREG(1) = Parrot_str_repeat(interp, CONST(2).u.string, (UINTVAL)cur_opcode[3]);
+ SREG(1) = Parrot_str_repeat(interp, SCONST(2), (UINTVAL)ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22446,12 +22449,12 @@
opcode_t *
Parrot_repeat_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (cur_opcode[3] < 0) {
+ if (ICONST(3) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_NEG_REPEAT,
"Cannot repeat with negative arg");return (opcode_t *)handler;
}
- PREG(1) = VTABLE_repeat_int(interp, PREG(2), cur_opcode[3], PREG(1));
+ PREG(1) = VTABLE_repeat_int(interp, PREG(2), ICONST(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
@@ -22477,7 +22480,7 @@
opcode_t *
Parrot_repeat_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_i_repeat_int(interp, PREG(1), cur_opcode[2]);
+ VTABLE_i_repeat_int(interp, PREG(1), ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -22498,7 +22501,7 @@
opcode_t *
Parrot_length_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_length(interp, CONST(2).u.string);
+ IREG(1) = Parrot_str_length(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -22512,7 +22515,7 @@
opcode_t *
Parrot_bytelength_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_byte_length(interp, CONST(2).u.string);
+ IREG(1) = Parrot_str_byte_length(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -22541,8 +22544,8 @@
opcode_t *
Parrot_substr_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- const INTVAL len = Parrot_str_byte_length(interp, CONST(2).u.string);
- SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, IREG(3), len);
+ const INTVAL len = Parrot_str_byte_length(interp, SCONST(2));
+ SREG(1) = Parrot_str_substr(interp, SCONST(2), IREG(3), len);
return (opcode_t *)cur_opcode + 4;}
@@ -22550,15 +22553,15 @@
Parrot_substr_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
const INTVAL len = Parrot_str_byte_length(interp, SREG(2));
- SREG(1) = Parrot_str_substr(interp, SREG(2), cur_opcode[3], len);
+ SREG(1) = Parrot_str_substr(interp, SREG(2), ICONST(3), len);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_substr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- const INTVAL len = Parrot_str_byte_length(interp, CONST(2).u.string);
- SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, cur_opcode[3], len);
+ const INTVAL len = Parrot_str_byte_length(interp, SCONST(2));
+ SREG(1) = Parrot_str_substr(interp, SCONST(2), ICONST(3), len);
return (opcode_t *)cur_opcode + 4;}
@@ -22572,49 +22575,49 @@
opcode_t *
Parrot_substr_s_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, IREG(3), IREG(4));
+ SREG(1) = Parrot_str_substr(interp, SCONST(2), IREG(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_substr(interp, SREG(2), cur_opcode[3], IREG(4));
+ SREG(1) = Parrot_str_substr(interp, SREG(2), ICONST(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, cur_opcode[3], IREG(4));
+ SREG(1) = Parrot_str_substr(interp, SCONST(2), ICONST(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_substr(interp, SREG(2), IREG(3), cur_opcode[4]);
+ SREG(1) = Parrot_str_substr(interp, SREG(2), IREG(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, IREG(3), cur_opcode[4]);
+ SREG(1) = Parrot_str_substr(interp, SCONST(2), IREG(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_substr(interp, SREG(2), cur_opcode[3], cur_opcode[4]);
+ SREG(1) = Parrot_str_substr(interp, SREG(2), ICONST(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, cur_opcode[3], cur_opcode[4]);
+ SREG(1) = Parrot_str_substr(interp, SCONST(2), ICONST(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
@@ -22628,21 +22631,21 @@
opcode_t *
Parrot_substr_s_p_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = VTABLE_substr_str(interp, PREG(2), cur_opcode[3], IREG(4));
+ SREG(1) = VTABLE_substr_str(interp, PREG(2), ICONST(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = VTABLE_substr_str(interp, PREG(2), IREG(3), cur_opcode[4]);
+ SREG(1) = VTABLE_substr_str(interp, PREG(2), IREG(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = VTABLE_substr_str(interp, PREG(2), cur_opcode[3], cur_opcode[4]);
+ SREG(1) = VTABLE_substr_str(interp, PREG(2), ICONST(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
@@ -22656,105 +22659,105 @@
opcode_t *
Parrot_replace_s_sc_i_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, IREG(3), IREG(4), SREG(5));
+ SREG(1) = Parrot_str_replace(interp, SCONST(2), IREG(3), IREG(4), SREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_s_ic_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], IREG(4), SREG(5));
+ SREG(1) = Parrot_str_replace(interp, SREG(2), ICONST(3), IREG(4), SREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_sc_ic_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, cur_opcode[3], IREG(4), SREG(5));
+ SREG(1) = Parrot_str_replace(interp, SCONST(2), ICONST(3), IREG(4), SREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_s_i_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), cur_opcode[4], SREG(5));
+ SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), ICONST(4), SREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_sc_i_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, IREG(3), cur_opcode[4], SREG(5));
+ SREG(1) = Parrot_str_replace(interp, SCONST(2), IREG(3), ICONST(4), SREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_s_ic_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], cur_opcode[4], SREG(5));
+ SREG(1) = Parrot_str_replace(interp, SREG(2), ICONST(3), ICONST(4), SREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_sc_ic_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, cur_opcode[3], cur_opcode[4], SREG(5));
+ SREG(1) = Parrot_str_replace(interp, SCONST(2), ICONST(3), ICONST(4), SREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_s_i_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), IREG(4), CONST(5).u.string);
+ SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), IREG(4), SCONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_sc_i_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, IREG(3), IREG(4), CONST(5).u.string);
+ SREG(1) = Parrot_str_replace(interp, SCONST(2), IREG(3), IREG(4), SCONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_s_ic_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], IREG(4), CONST(5).u.string);
+ SREG(1) = Parrot_str_replace(interp, SREG(2), ICONST(3), IREG(4), SCONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_sc_ic_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, cur_opcode[3], IREG(4), CONST(5).u.string);
+ SREG(1) = Parrot_str_replace(interp, SCONST(2), ICONST(3), IREG(4), SCONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_s_i_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), cur_opcode[4], CONST(5).u.string);
+ SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), ICONST(4), SCONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_sc_i_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, IREG(3), cur_opcode[4], CONST(5).u.string);
+ SREG(1) = Parrot_str_replace(interp, SCONST(2), IREG(3), ICONST(4), SCONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_s_ic_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], cur_opcode[4], CONST(5).u.string);
+ SREG(1) = Parrot_str_replace(interp, SREG(2), ICONST(3), ICONST(4), SCONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_replace_s_sc_ic_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, cur_opcode[3], cur_opcode[4], CONST(5).u.string);
+ SREG(1) = Parrot_str_replace(interp, SCONST(2), ICONST(3), ICONST(4), SCONST(5));
return (opcode_t *)cur_opcode + 6;}
@@ -22768,21 +22771,21 @@
opcode_t *
Parrot_index_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (CONST(2).u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2).u.string, SREG(3), 0) : -1;
+ IREG(1) = (SCONST(2) && SREG(3)) ? Parrot_str_find_index(interp, SCONST(2), SREG(3), 0) : -1;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_index_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (SREG(2) && CONST(3).u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3).u.string, 0) : -1;
+ IREG(1) = (SREG(2) && SCONST(3)) ? Parrot_str_find_index(interp, SREG(2), SCONST(3), 0) : -1;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_index_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (CONST(2).u.string && CONST(3).u.string) ? Parrot_str_find_index(interp, CONST(2).u.string, CONST(3).u.string, 0) : -1;
+ IREG(1) = (SCONST(2) && SCONST(3)) ? Parrot_str_find_index(interp, SCONST(2), SCONST(3), 0) : -1;
return (opcode_t *)cur_opcode + 4;}
@@ -22796,49 +22799,49 @@
opcode_t *
Parrot_index_i_sc_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (CONST(2).u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2).u.string, SREG(3), IREG(4)) : -1;
+ IREG(1) = (SCONST(2) && SREG(3)) ? Parrot_str_find_index(interp, SCONST(2), SREG(3), IREG(4)) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (SREG(2) && CONST(3).u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3).u.string, IREG(4)) : -1;
+ IREG(1) = (SREG(2) && SCONST(3)) ? Parrot_str_find_index(interp, SREG(2), SCONST(3), IREG(4)) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_sc_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (CONST(2).u.string && CONST(3).u.string) ? Parrot_str_find_index(interp, CONST(2).u.string, CONST(3).u.string, IREG(4)) : -1;
+ IREG(1) = (SCONST(2) && SCONST(3)) ? Parrot_str_find_index(interp, SCONST(2), SCONST(3), IREG(4)) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (SREG(2) && SREG(3)) ? Parrot_str_find_index(interp, SREG(2), SREG(3), cur_opcode[4]) : -1;
+ IREG(1) = (SREG(2) && SREG(3)) ? Parrot_str_find_index(interp, SREG(2), SREG(3), ICONST(4)) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (CONST(2).u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2).u.string, SREG(3), cur_opcode[4]) : -1;
+ IREG(1) = (SCONST(2) && SREG(3)) ? Parrot_str_find_index(interp, SCONST(2), SREG(3), ICONST(4)) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (SREG(2) && CONST(3).u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3).u.string, cur_opcode[4]) : -1;
+ IREG(1) = (SREG(2) && SCONST(3)) ? Parrot_str_find_index(interp, SREG(2), SCONST(3), ICONST(4)) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = (CONST(2).u.string && CONST(3).u.string) ? Parrot_str_find_index(interp, CONST(2).u.string, CONST(3).u.string, cur_opcode[4]) : -1;
+ IREG(1) = (SCONST(2) && SCONST(3)) ? Parrot_str_find_index(interp, SCONST(2), SCONST(3), ICONST(4)) : -1;
return (opcode_t *)cur_opcode + 5;}
@@ -22852,7 +22855,7 @@
opcode_t *
Parrot_sprintf_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1)=Parrot_psprintf(interp, CONST(2).u.string, PREG(3));
+ SREG(1)=Parrot_psprintf(interp, SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -22881,7 +22884,7 @@
opcode_t *
Parrot_new_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_new_noinit(interp, cur_opcode[2]);
+ SREG(1) = Parrot_str_new_noinit(interp, ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -22924,27 +22927,27 @@
opcode_t *
Parrot_stringinfo_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (CONST(2).u.string == NULL)
+ if (SCONST(2) == NULL)
IREG(1) = 0;
else {
switch (IREG(3)) {
case STRINGINFO_HEADER:
- IREG(1) = PTR2UINTVAL(CONST(2).u.string);
+ IREG(1) = PTR2UINTVAL(SCONST(2));
break;
case STRINGINFO_STRSTART:
- IREG(1) = PTR2UINTVAL(CONST(2).u.string->strstart);
+ IREG(1) = PTR2UINTVAL(SCONST(2)->strstart);
break;
case STRINGINFO_BUFLEN:
- IREG(1) = Buffer_buflen(CONST(2).u.string);
+ IREG(1) = Buffer_buflen(SCONST(2));
break;
case STRINGINFO_FLAGS:
- IREG(1) = PObj_get_FLAGS(CONST(2).u.string);
+ IREG(1) = PObj_get_FLAGS(SCONST(2));
break;
case STRINGINFO_BUFUSED:
- IREG(1) = CONST(2).u.string->bufused;
+ IREG(1) = SCONST(2)->bufused;
break;
case STRINGINFO_STRLEN:
- IREG(1) = CONST(2).u.string->strlen;
+ IREG(1) = SCONST(2)->strlen;
break;
default:
{
@@ -22963,7 +22966,7 @@
if (SREG(2) == NULL)
IREG(1) = 0;
else {
- switch (cur_opcode[3]) {
+ switch (ICONST(3)) {
case STRINGINFO_HEADER:
IREG(1) = PTR2UINTVAL(SREG(2));
break;
@@ -22986,7 +22989,7 @@
{
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_INVALID_OPERATION,
- "stringinfo: unknown info type: %d", cur_opcode[3]);return (opcode_t *)handler;
+ "stringinfo: unknown info type: %d", ICONST(3));return (opcode_t *)handler;
}
}
}
@@ -22996,33 +22999,33 @@
opcode_t *
Parrot_stringinfo_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (CONST(2).u.string == NULL)
+ if (SCONST(2) == NULL)
IREG(1) = 0;
else {
- switch (cur_opcode[3]) {
+ switch (ICONST(3)) {
case STRINGINFO_HEADER:
- IREG(1) = PTR2UINTVAL(CONST(2).u.string);
+ IREG(1) = PTR2UINTVAL(SCONST(2));
break;
case STRINGINFO_STRSTART:
- IREG(1) = PTR2UINTVAL(CONST(2).u.string->strstart);
+ IREG(1) = PTR2UINTVAL(SCONST(2)->strstart);
break;
case STRINGINFO_BUFLEN:
- IREG(1) = Buffer_buflen(CONST(2).u.string);
+ IREG(1) = Buffer_buflen(SCONST(2));
break;
case STRINGINFO_FLAGS:
- IREG(1) = PObj_get_FLAGS(CONST(2).u.string);
+ IREG(1) = PObj_get_FLAGS(SCONST(2));
break;
case STRINGINFO_BUFUSED:
- IREG(1) = CONST(2).u.string->bufused;
+ IREG(1) = SCONST(2)->bufused;
break;
case STRINGINFO_STRLEN:
- IREG(1) = CONST(2).u.string->strlen;
+ IREG(1) = SCONST(2)->strlen;
break;
default:
{
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_INVALID_OPERATION,
- "stringinfo: unknown info type: %d", cur_opcode[3]);return (opcode_t *)handler;
+ "stringinfo: unknown info type: %d", ICONST(3));return (opcode_t *)handler;
}
}
}
@@ -23039,7 +23042,7 @@
opcode_t *
Parrot_upcase_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_upcase(interp, CONST(2).u.string);
+ SREG(1) = Parrot_str_upcase(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -23053,7 +23056,7 @@
opcode_t *
Parrot_downcase_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_downcase(interp, CONST(2).u.string);
+ SREG(1) = Parrot_str_downcase(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -23067,7 +23070,7 @@
opcode_t *
Parrot_titlecase_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_titlecase(interp, CONST(2).u.string);
+ SREG(1) = Parrot_str_titlecase(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -23081,7 +23084,7 @@
opcode_t *
Parrot_join_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_join(interp, CONST(2).u.string, PREG(3));
+ SREG(1) = Parrot_str_join(interp, SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -23095,21 +23098,21 @@
opcode_t *
Parrot_split_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_str_split(interp, CONST(2).u.string, SREG(3));
+ PREG(1) = Parrot_str_split(interp, SCONST(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_split_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_str_split(interp, SREG(2), CONST(3).u.string);
+ PREG(1) = Parrot_str_split(interp, SREG(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_split_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = Parrot_str_split(interp, CONST(2).u.string, CONST(3).u.string);
+ PREG(1) = Parrot_str_split(interp, SCONST(2), SCONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -23123,7 +23126,7 @@
opcode_t *
Parrot_charset_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_encoding_number_of_str(interp, CONST(2).u.string);
+ IREG(1) = Parrot_encoding_number_of_str(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -23137,7 +23140,7 @@
opcode_t *
Parrot_charsetname_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_encoding_name(interp, cur_opcode[2]);
+ SREG(1) = Parrot_encoding_name(interp, ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -23157,11 +23160,11 @@
opcode_t *
Parrot_find_charset_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- const INTVAL n = Parrot_encoding_number(interp, CONST(2).u.string);
+ const INTVAL n = Parrot_encoding_number(interp, SCONST(2));
if (n < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_INVALID_CHARTYPE,
- "charset '%Ss' not found", CONST(2).u.string);return (opcode_t *)handler;
+ "charset '%Ss' not found", SCONST(2));return (opcode_t *)handler;
}
IREG(1) = n;
@@ -23177,21 +23180,21 @@
opcode_t *
Parrot_trans_charset_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_change_charset(interp, CONST(2).u.string, IREG(3));
+ SREG(1) = Parrot_str_change_charset(interp, SCONST(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_trans_charset_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_change_charset(interp, SREG(2), cur_opcode[3]);
+ SREG(1) = Parrot_str_change_charset(interp, SREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_trans_charset_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_change_charset(interp, CONST(2).u.string, cur_opcode[3]);
+ SREG(1) = Parrot_str_change_charset(interp, SCONST(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -23205,7 +23208,7 @@
opcode_t *
Parrot_encoding_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_encoding_number_of_str(interp, CONST(2).u.string);
+ IREG(1) = Parrot_encoding_number_of_str(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -23219,7 +23222,7 @@
opcode_t *
Parrot_encodingname_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_encoding_name(interp, cur_opcode[2]);
+ SREG(1) = Parrot_encoding_name(interp, ICONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -23239,11 +23242,11 @@
opcode_t *
Parrot_find_encoding_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- const INTVAL n = Parrot_encoding_number(interp, CONST(2).u.string);
+ const INTVAL n = Parrot_encoding_number(interp, SCONST(2));
if (n < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_INVALID_ENCODING,
- "encoding '%Ss' not found", CONST(2).u.string);return (opcode_t *)handler;
+ "encoding '%Ss' not found", SCONST(2));return (opcode_t *)handler;
}
IREG(1) = n;
@@ -23259,21 +23262,21 @@
opcode_t *
Parrot_trans_encoding_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_change_encoding(interp, CONST(2).u.string, IREG(3));
+ SREG(1) = Parrot_str_change_encoding(interp, SCONST(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_trans_encoding_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_change_encoding(interp, SREG(2), cur_opcode[3]);
+ SREG(1) = Parrot_str_change_encoding(interp, SREG(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_trans_encoding_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_change_encoding(interp, CONST(2).u.string, cur_opcode[3]);
+ SREG(1) = Parrot_str_change_encoding(interp, SCONST(2), ICONST(3));
return (opcode_t *)cur_opcode + 4;}
@@ -23287,49 +23290,49 @@
opcode_t *
Parrot_is_cclass_i_ic_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], SREG(3), IREG(4));
+ IREG(1) = Parrot_str_is_cclass(interp, ICONST(2), SREG(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_is_cclass(interp, IREG(2), CONST(3).u.string, IREG(4));
+ IREG(1) = Parrot_str_is_cclass(interp, IREG(2), SCONST(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_ic_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], CONST(3).u.string, IREG(4));
+ IREG(1) = Parrot_str_is_cclass(interp, ICONST(2), SCONST(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_i_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_is_cclass(interp, IREG(2), SREG(3), cur_opcode[4]);
+ IREG(1) = Parrot_str_is_cclass(interp, IREG(2), SREG(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_ic_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4]);
+ IREG(1) = Parrot_str_is_cclass(interp, ICONST(2), SREG(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_is_cclass(interp, IREG(2), CONST(3).u.string, cur_opcode[4]);
+ IREG(1) = Parrot_str_is_cclass(interp, IREG(2), SCONST(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_ic_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], CONST(3).u.string, cur_opcode[4]);
+ IREG(1) = Parrot_str_is_cclass(interp, ICONST(2), SCONST(3), ICONST(4));
return (opcode_t *)cur_opcode + 5;}
@@ -23343,105 +23346,105 @@
opcode_t *
Parrot_find_cclass_i_ic_s_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), IREG(4), IREG(5));
+ IREG(1) = Parrot_str_find_cclass(interp, ICONST(2), SREG(3), IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3).u.string, IREG(4), IREG(5));
+ IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SCONST(3), IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3).u.string, IREG(4), IREG(5));
+ IREG(1) = Parrot_str_find_cclass(interp, ICONST(2), SCONST(3), IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), cur_opcode[4], IREG(5));
+ IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), ICONST(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], IREG(5));
+ IREG(1) = Parrot_str_find_cclass(interp, ICONST(2), SREG(3), ICONST(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3).u.string, cur_opcode[4], IREG(5));
+ IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SCONST(3), ICONST(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3).u.string, cur_opcode[4], IREG(5));
+ IREG(1) = Parrot_str_find_cclass(interp, ICONST(2), SCONST(3), ICONST(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), IREG(4), cur_opcode[5]);
+ IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), IREG(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), IREG(4), cur_opcode[5]);
+ IREG(1) = Parrot_str_find_cclass(interp, ICONST(2), SREG(3), IREG(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3).u.string, IREG(4), cur_opcode[5]);
+ IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SCONST(3), IREG(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3).u.string, IREG(4), cur_opcode[5]);
+ IREG(1) = Parrot_str_find_cclass(interp, ICONST(2), SCONST(3), IREG(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), cur_opcode[4], cur_opcode[5]);
+ IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), ICONST(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], cur_opcode[5]);
+ IREG(1) = Parrot_str_find_cclass(interp, ICONST(2), SREG(3), ICONST(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3).u.string, cur_opcode[4], cur_opcode[5]);
+ IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SCONST(3), ICONST(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3).u.string, cur_opcode[4], cur_opcode[5]);
+ IREG(1) = Parrot_str_find_cclass(interp, ICONST(2), SCONST(3), ICONST(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
@@ -23455,105 +23458,105 @@
opcode_t *
Parrot_find_not_cclass_i_ic_s_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), IREG(4), IREG(5));
+ IREG(1) = Parrot_str_find_not_cclass(interp, ICONST(2), SREG(3), IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3).u.string, IREG(4), IREG(5));
+ IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SCONST(3), IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3).u.string, IREG(4), IREG(5));
+ IREG(1) = Parrot_str_find_not_cclass(interp, ICONST(2), SCONST(3), IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), cur_opcode[4], IREG(5));
+ IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), ICONST(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], IREG(5));
+ IREG(1) = Parrot_str_find_not_cclass(interp, ICONST(2), SREG(3), ICONST(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3).u.string, cur_opcode[4], IREG(5));
+ IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SCONST(3), ICONST(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3).u.string, cur_opcode[4], IREG(5));
+ IREG(1) = Parrot_str_find_not_cclass(interp, ICONST(2), SCONST(3), ICONST(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), IREG(4), cur_opcode[5]);
+ IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), IREG(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), IREG(4), cur_opcode[5]);
+ IREG(1) = Parrot_str_find_not_cclass(interp, ICONST(2), SREG(3), IREG(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3).u.string, IREG(4), cur_opcode[5]);
+ IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SCONST(3), IREG(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3).u.string, IREG(4), cur_opcode[5]);
+ IREG(1) = Parrot_str_find_not_cclass(interp, ICONST(2), SCONST(3), IREG(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), cur_opcode[4], cur_opcode[5]);
+ IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), ICONST(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], cur_opcode[5]);
+ IREG(1) = Parrot_str_find_not_cclass(interp, ICONST(2), SREG(3), ICONST(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3).u.string, cur_opcode[4], cur_opcode[5]);
+ IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SCONST(3), ICONST(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3).u.string, cur_opcode[4], cur_opcode[5]);
+ IREG(1) = Parrot_str_find_not_cclass(interp, ICONST(2), SCONST(3), ICONST(4), ICONST(5));
return (opcode_t *)cur_opcode + 6;}
@@ -23574,7 +23577,7 @@
opcode_t *
Parrot_compose_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_compose(interp, CONST(2).u.string);
+ SREG(1) = Parrot_str_compose(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -23588,7 +23591,7 @@
opcode_t *
Parrot_spawnw_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- IREG(1) = Parrot_Run_OS_Command(interp, CONST(2).u.string);
+ IREG(1) = Parrot_Run_OS_Command(interp, SCONST(2));
return (opcode_t *)cur_opcode + 3;}
@@ -23627,7 +23630,7 @@
opcode_t *
Parrot_err_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- const char * const tmp = strerror(cur_opcode[2]);
+ const char * const tmp = strerror(ICONST(2));
SREG(1) = Parrot_str_new_init(interp, tmp, strlen(tmp),
Parrot_ascii_encoding_ptr, 0);
@@ -23663,12 +23666,12 @@
Parrot_sleep_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
opcode_t *next = cur_opcode + 2;
- if (cur_opcode[1] < 0) {
+ if (ICONST(1) < 0) {
opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NEG_SLEEP,
"Cannot go back in time");return (opcode_t *)handler;
}
- next = (opcode_t *)Parrot_cx_schedule_sleep(interp, (FLOATVAL) cur_opcode[1], next);return (opcode_t *)next;
+ next = (opcode_t *)Parrot_cx_schedule_sleep(interp, (FLOATVAL) ICONST(1), next);return (opcode_t *)next;
}
opcode_t *
@@ -23687,12 +23690,12 @@
Parrot_sleep_nc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
opcode_t *next = cur_opcode + 2;
- if (CONST(1).u.number < 0.0) {
+ if (NCONST(1) < 0.0) {
opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
EXCEPTION_NEG_SLEEP,
"Cannot go back in time");return (opcode_t *)handler;
}
- next = (opcode_t *)Parrot_cx_schedule_sleep(interp, CONST(1).u.number, next);return (opcode_t *)next;
+ next = (opcode_t *)Parrot_cx_schedule_sleep(interp, NCONST(1), next);return (opcode_t *)next;
}
opcode_t *
@@ -23715,7 +23718,7 @@
Parrot_store_lex_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const ctx = CURRENT_CONTEXT(interp);
- STRING * const lex_name = CONST(1).u.string;
+ STRING * const lex_name = SCONST(1);
PMC * const lex_pad = Parrot_find_pad(interp, lex_name, ctx);
if (PMC_IS_NULL(lex_pad)) {
@@ -23750,7 +23753,7 @@
opcode_t *
Parrot_store_dynamic_lex_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const lex_name = CONST(1).u.string;
+ STRING * const lex_name = SCONST(1);
PMC * const ctx =
Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
PMC * const lex_pad =
@@ -23786,7 +23789,7 @@
Parrot_find_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const ctx = CURRENT_CONTEXT(interp);
- STRING * const lex_name = CONST(2).u.string;
+ STRING * const lex_name = SCONST(2);
PMC * const lex_pad = Parrot_find_pad(interp, lex_name, ctx);
PMC * const result =
@@ -23818,7 +23821,7 @@
opcode_t *
Parrot_find_dynamic_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const lex_name = CONST(2).u.string;
+ STRING * const lex_name = SCONST(2);
PMC * const ctx =
Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
PMC * const lex_pad =
@@ -23857,7 +23860,7 @@
opcode_t *
Parrot_find_caller_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const lex_name = CONST(2).u.string;
+ STRING * const lex_name = SCONST(2);
PMC * ctx = CURRENT_CONTEXT(interp);
PMC * result = PMCNULL;
@@ -23897,7 +23900,7 @@
Parrot_get_namespace_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
- PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2).u.key);
+ PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, PCONST(2));
PREG(1) = PMC_IS_NULL(ns) ? PMCNULL : ns;
@@ -23931,7 +23934,7 @@
if (PMC_IS_NULL(hll_ns))
PREG(1) = PMCNULL;
else {
- PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2).u.key);
+ PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, PCONST(2));
PREG(1) = ns;
}
@@ -23965,7 +23968,7 @@
if (PMC_IS_NULL(root_ns))
PREG(1) = PMCNULL;
else {
- PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2).u.key);
+ PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, PCONST(2));
PREG(1) = ns;
}
@@ -23983,7 +23986,7 @@
Parrot_get_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
- PREG(1) = Parrot_ns_find_global_from_op(interp, cur_ns, CONST(2).u.string, cur_opcode + 3);
+ PREG(1) = Parrot_ns_find_global_from_op(interp, cur_ns, SCONST(2), cur_opcode + 3);
return (opcode_t *)cur_opcode + 3;}
@@ -24012,7 +24015,7 @@
PREG(1) = PMCNULL;
}
else {
- PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2).u.key);
+ PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, PCONST(2));
if (PMC_IS_NULL(ns))
PREG(1) = PMCNULL;
else
@@ -24033,7 +24036,7 @@
if (PMC_IS_NULL(ns))
PREG(1) = PMCNULL;
else
- PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
+ PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SCONST(3), cur_opcode + 4);
}
return (opcode_t *)cur_opcode + 4;}
@@ -24046,11 +24049,11 @@
PREG(1) = PMCNULL;
}
else {
- PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2).u.key);
+ PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, PCONST(2));
if (PMC_IS_NULL(ns))
PREG(1) = PMCNULL;
else
- PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
+ PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SCONST(3), cur_opcode + 4);
}
return (opcode_t *)cur_opcode + 4;}
@@ -24067,7 +24070,7 @@
Parrot_get_hll_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
- PREG(1) = Parrot_ns_find_global_from_op(interp, hll_ns, CONST(2).u.string, cur_opcode + 3);
+ PREG(1) = Parrot_ns_find_global_from_op(interp, hll_ns, SCONST(2), cur_opcode + 3);
return (opcode_t *)cur_opcode + 3;}
@@ -24096,7 +24099,7 @@
PREG(1) = hll_ns;
}
else {
- PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2).u.key);
+ PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, PCONST(2));
if (PMC_IS_NULL(ns))
PREG(1) = PMCNULL;
else
@@ -24117,7 +24120,7 @@
if (PMC_IS_NULL(ns))
PREG(1) = PMCNULL;
else
- PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
+ PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SCONST(3), cur_opcode + 4);
}
return (opcode_t *)cur_opcode + 4;}
@@ -24130,11 +24133,11 @@
PREG(1) = hll_ns;
}
else {
- PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2).u.key);
+ PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, PCONST(2));
if (PMC_IS_NULL(ns))
PREG(1) = PMCNULL;
else
- PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
+ PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SCONST(3), cur_opcode + 4);
}
return (opcode_t *)cur_opcode + 4;}
@@ -24151,7 +24154,7 @@
Parrot_get_root_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const root_ns = interp->root_namespace;
- PREG(1) = Parrot_ns_find_global_from_op(interp, root_ns, CONST(2).u.string, cur_opcode + 3);
+ PREG(1) = Parrot_ns_find_global_from_op(interp, root_ns, SCONST(2), cur_opcode + 3);
return (opcode_t *)cur_opcode + 3;}
@@ -24178,7 +24181,7 @@
if (PMC_IS_NULL(root_ns))
PREG(1) = PMCNULL;
else {
- PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2).u.key);
+ PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, PCONST(2));
if (PMC_IS_NULL(ns))
PREG(1) = PMCNULL;
else
@@ -24198,7 +24201,7 @@
if (PMC_IS_NULL(ns))
PREG(1) = PMCNULL;
else
- PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
+ PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SCONST(3), cur_opcode + 4);
}
return (opcode_t *)cur_opcode + 4;}
@@ -24210,11 +24213,11 @@
if (PMC_IS_NULL(root_ns))
PREG(1) = PMCNULL;
else {
- PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2).u.key);
+ PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, PCONST(2));
if (PMC_IS_NULL(ns))
PREG(1) = PMCNULL;
else
- PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
+ PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SCONST(3), cur_opcode + 4);
}
return (opcode_t *)cur_opcode + 4;}
@@ -24231,7 +24234,7 @@
Parrot_set_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
- Parrot_ns_set_global(interp, cur_ns, CONST(1).u.string, PREG(2));
+ Parrot_ns_set_global(interp, cur_ns, SCONST(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
@@ -24249,7 +24252,7 @@
Parrot_set_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
- PMC * const ns = Parrot_ns_make_namespace_keyed(interp, cur_ns, CONST(1).u.key);
+ PMC * const ns = Parrot_ns_make_namespace_keyed(interp, cur_ns, PCONST(1));
Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
@@ -24261,7 +24264,7 @@
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
PMC * const ns = Parrot_ns_make_namespace_keyed(interp, cur_ns, PREG(1));
- Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
+ Parrot_ns_set_global(interp, ns, SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -24269,9 +24272,9 @@
Parrot_set_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
- PMC * const ns = Parrot_ns_make_namespace_keyed(interp, cur_ns, CONST(1).u.key);
+ PMC * const ns = Parrot_ns_make_namespace_keyed(interp, cur_ns, PCONST(1));
- Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
+ Parrot_ns_set_global(interp, ns, SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -24287,7 +24290,7 @@
Parrot_set_hll_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
- Parrot_ns_set_global(interp, hll_ns, CONST(1).u.string, PREG(2));
+ Parrot_ns_set_global(interp, hll_ns, SCONST(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
@@ -24305,7 +24308,7 @@
Parrot_set_hll_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
- PMC * const ns = Parrot_ns_make_namespace_keyed(interp, hll_ns, CONST(1).u.key);
+ PMC * const ns = Parrot_ns_make_namespace_keyed(interp, hll_ns, PCONST(1));
Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
@@ -24317,7 +24320,7 @@
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
PMC * const ns = Parrot_ns_make_namespace_keyed(interp, hll_ns, PREG(1));
- Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
+ Parrot_ns_set_global(interp, ns, SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -24325,9 +24328,9 @@
Parrot_set_hll_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
- PMC * const ns = Parrot_ns_make_namespace_keyed(interp, hll_ns, CONST(1).u.key);
+ PMC * const ns = Parrot_ns_make_namespace_keyed(interp, hll_ns, PCONST(1));
- Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
+ Parrot_ns_set_global(interp, ns, SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -24343,7 +24346,7 @@
Parrot_set_root_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const root_ns = interp->root_namespace;
- Parrot_ns_set_global(interp, root_ns, CONST(1).u.string, PREG(2));
+ Parrot_ns_set_global(interp, root_ns, SCONST(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
@@ -24361,7 +24364,7 @@
Parrot_set_root_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const root_ns = interp->root_namespace;
- PMC * const ns = Parrot_ns_make_namespace_keyed(interp, root_ns, CONST(1).u.key);
+ PMC * const ns = Parrot_ns_make_namespace_keyed(interp, root_ns, PCONST(1));
Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
@@ -24373,7 +24376,7 @@
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_ns_make_namespace_keyed(interp, root_ns, PREG(1));
- Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
+ Parrot_ns_set_global(interp, ns, SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -24381,9 +24384,9 @@
Parrot_set_root_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PMC * const root_ns = interp->root_namespace;
- PMC * const ns = Parrot_ns_make_namespace_keyed(interp, root_ns, CONST(1).u.key);
+ PMC * const ns = Parrot_ns_make_namespace_keyed(interp, root_ns, PCONST(1));
- Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
+ Parrot_ns_set_global(interp, ns, SCONST(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
@@ -24403,13 +24406,13 @@
opcode_t *
Parrot_find_name_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- if (!CONST(2).u.string) {
+ if (!SCONST(2)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_INVALID_OPERATION,
"Tried to find null name");return (opcode_t *)handler;
}
- PREG(1) = Parrot_ns_find_named_item(interp, CONST(2).u.string, cur_opcode + 3);
+ PREG(1) = Parrot_ns_find_named_item(interp, SCONST(2), cur_opcode + 3);
return (opcode_t *)cur_opcode + 3;}
@@ -24435,14 +24438,14 @@
Parrot_find_sub_not_null_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
opcode_t *dest = cur_opcode + 3;
- PMC *sub = Parrot_ns_find_named_item(interp, CONST(2).u.string, dest);
+ PMC *sub = Parrot_ns_find_named_item(interp, SCONST(2), dest);
if (PMC_IS_NULL(sub)) {
opcode_t *handler;
Parrot_pcc_set_pc_func(interp, CURRENT_CONTEXT(interp), dest);
handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_GLOBAL_NOT_FOUND,
- "Could not find sub %Ss", CONST(2).u.string);return (opcode_t *)handler;
+ "Could not find sub %Ss", SCONST(2));return (opcode_t *)handler;
}
PREG(1) = sub;
@@ -24464,7 +24467,7 @@
opcode_t *
Parrot_set_label_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_pointer(interp, PREG(1), (CUR_OPCODE + cur_opcode[2]));
+ VTABLE_set_pointer(interp, PREG(1), (CUR_OPCODE + ICONST(2)));
return (opcode_t *)cur_opcode + 3;}
@@ -24501,7 +24504,7 @@
opcode_t *
Parrot_fetch_p_pc_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, PREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
if (!PMC_IS_NULL(classobj))
@@ -24523,7 +24526,7 @@
opcode_t *
Parrot_fetch_p_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3).u.key);
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PCONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
if (!PMC_IS_NULL(classobj))
@@ -24545,7 +24548,7 @@
opcode_t *
Parrot_fetch_p_pc_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key);
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PCONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
if (!PMC_IS_NULL(classobj))
@@ -24569,15 +24572,15 @@
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -24589,17 +24592,17 @@
opcode_t *
Parrot_fetch_p_pc_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, PREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -24611,17 +24614,17 @@
opcode_t *
Parrot_fetch_p_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3).u.key);
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PCONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -24633,17 +24636,17 @@
opcode_t *
Parrot_fetch_p_pc_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key);
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PCONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -24677,7 +24680,7 @@
opcode_t *
Parrot_fetch_p_pc_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, IREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), IREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
if (!PMC_IS_NULL(classobj))
@@ -24699,7 +24702,7 @@
opcode_t *
Parrot_fetch_p_p_ic_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), ICONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
if (!PMC_IS_NULL(classobj))
@@ -24721,7 +24724,7 @@
opcode_t *
Parrot_fetch_p_pc_ic_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3]);
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), ICONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
if (!PMC_IS_NULL(classobj))
@@ -24745,15 +24748,15 @@
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -24765,17 +24768,17 @@
opcode_t *
Parrot_fetch_p_pc_i_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, IREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), IREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -24787,17 +24790,17 @@
opcode_t *
Parrot_fetch_p_p_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), ICONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -24809,17 +24812,17 @@
opcode_t *
Parrot_fetch_p_pc_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3]);
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), ICONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -24853,7 +24856,7 @@
opcode_t *
Parrot_fetch_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, SREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
if (!PMC_IS_NULL(classobj))
@@ -24875,7 +24878,7 @@
opcode_t *
Parrot_fetch_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3).u.string);
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SCONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
if (!PMC_IS_NULL(classobj))
@@ -24897,7 +24900,7 @@
opcode_t *
Parrot_fetch_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string);
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SCONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
if (!PMC_IS_NULL(classobj))
@@ -24921,15 +24924,15 @@
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -24941,17 +24944,17 @@
opcode_t *
Parrot_fetch_p_pc_s_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, SREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -24963,17 +24966,17 @@
opcode_t *
Parrot_fetch_p_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3).u.string);
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SCONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -24985,17 +24988,17 @@
opcode_t *
Parrot_fetch_p_pc_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string);
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SCONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -25032,7 +25035,7 @@
opcode_t *
Parrot_vivify_p_pc_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, PREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -25049,7 +25052,7 @@
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed(interp, CONST(2).u.key, PREG(3), PREG(1));
+ VTABLE_set_pmc_keyed(interp, PCONST(2), PREG(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25057,7 +25060,7 @@
opcode_t *
Parrot_vivify_p_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3).u.key);
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PCONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -25074,7 +25077,7 @@
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed(interp, PREG(2), CONST(3).u.key, PREG(1));
+ VTABLE_set_pmc_keyed(interp, PREG(2), PCONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25082,7 +25085,7 @@
opcode_t *
Parrot_vivify_p_pc_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key);
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PCONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -25099,7 +25102,7 @@
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key, PREG(1));
+ VTABLE_set_pmc_keyed(interp, PCONST(2), PCONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25110,16 +25113,16 @@
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -25132,24 +25135,24 @@
opcode_t *
Parrot_vivify_p_pc_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, PREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed(interp, CONST(2).u.key, PREG(3), PREG(1));
+ VTABLE_set_pmc_keyed(interp, PCONST(2), PREG(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25157,24 +25160,24 @@
opcode_t *
Parrot_vivify_p_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3).u.key);
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PCONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed(interp, PREG(2), CONST(3).u.key, PREG(1));
+ VTABLE_set_pmc_keyed(interp, PREG(2), PCONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25182,24 +25185,24 @@
opcode_t *
Parrot_vivify_p_pc_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key);
+ PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PCONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key, PREG(1));
+ VTABLE_set_pmc_keyed(interp, PCONST(2), PCONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25232,7 +25235,7 @@
opcode_t *
Parrot_vivify_p_pc_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, IREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), IREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -25249,7 +25252,7 @@
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_int(interp, CONST(2).u.key, IREG(3), PREG(1));
+ VTABLE_set_pmc_keyed_int(interp, PCONST(2), IREG(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25257,7 +25260,7 @@
opcode_t *
Parrot_vivify_p_p_ic_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), ICONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -25274,7 +25277,7 @@
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_int(interp, PREG(2), cur_opcode[3], PREG(1));
+ VTABLE_set_pmc_keyed_int(interp, PREG(2), ICONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25282,7 +25285,7 @@
opcode_t *
Parrot_vivify_p_pc_ic_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3]);
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), ICONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -25299,7 +25302,7 @@
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3], PREG(1));
+ VTABLE_set_pmc_keyed_int(interp, PCONST(2), ICONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25310,15 +25313,15 @@
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -25332,24 +25335,24 @@
opcode_t *
Parrot_vivify_p_pc_i_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, IREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), IREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_int(interp, CONST(2).u.key, IREG(3), PREG(1));
+ VTABLE_set_pmc_keyed_int(interp, PCONST(2), IREG(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25357,24 +25360,24 @@
opcode_t *
Parrot_vivify_p_p_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), ICONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_int(interp, PREG(2), cur_opcode[3], PREG(1));
+ VTABLE_set_pmc_keyed_int(interp, PREG(2), ICONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25382,24 +25385,24 @@
opcode_t *
Parrot_vivify_p_pc_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3]);
+ PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), ICONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3], PREG(1));
+ VTABLE_set_pmc_keyed_int(interp, PCONST(2), ICONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25432,7 +25435,7 @@
opcode_t *
Parrot_vivify_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, SREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -25449,7 +25452,7 @@
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_str(interp, CONST(2).u.key, SREG(3), PREG(1));
+ VTABLE_set_pmc_keyed_str(interp, PCONST(2), SREG(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25457,7 +25460,7 @@
opcode_t *
Parrot_vivify_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3).u.string);
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SCONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -25474,7 +25477,7 @@
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_str(interp, PREG(2), CONST(3).u.string, PREG(1));
+ VTABLE_set_pmc_keyed_str(interp, PREG(2), SCONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25482,7 +25485,7 @@
opcode_t *
Parrot_vivify_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string);
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SCONST(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -25499,7 +25502,7 @@
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string, PREG(1));
+ VTABLE_set_pmc_keyed_str(interp, PCONST(2), SCONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25510,15 +25513,15 @@
PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
@@ -25532,24 +25535,24 @@
opcode_t *
Parrot_vivify_p_pc_s_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, SREG(3));
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SREG(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_str(interp, CONST(2).u.key, SREG(3), PREG(1));
+ VTABLE_set_pmc_keyed_str(interp, PCONST(2), SREG(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25557,24 +25560,24 @@
opcode_t *
Parrot_vivify_p_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3).u.string);
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SCONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_str(interp, PREG(2), CONST(3).u.string, PREG(1));
+ VTABLE_set_pmc_keyed_str(interp, PREG(2), SCONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25582,24 +25585,24 @@
opcode_t *
Parrot_vivify_p_pc_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string);
+ PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SCONST(3));
if (PMC_IS_NULL(PREG(1))) {
- PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
+ PMC * const classobj = Parrot_oo_get_class(interp, PCONST(4));
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
+ const INTVAL type = Parrot_pmc_get_type(interp, PCONST(4));
if (type <= 0) {
opcode_t *dest = Parrot_ex_throw_from_op_args(
interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
- "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
+ "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4)));return (opcode_t *)dest;
}
PREG(1) = Parrot_pmc_new(interp, type);
}
- VTABLE_set_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string, PREG(1));
+ VTABLE_set_pmc_keyed_str(interp, PCONST(2), SCONST(3), PREG(1));
}
return (opcode_t *)cur_opcode + 5;}
@@ -25632,7 +25635,7 @@
opcode_t *
Parrot_new_p_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const name = CONST(2).u.string;
+ STRING * const name = SCONST(2);
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
: PMCNULL;
@@ -25664,7 +25667,7 @@
if (!PMC_IS_NULL(_class)) {
PMC *initial = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
- VTABLE_set_integer_native(interp, initial, cur_opcode[3]);
+ VTABLE_set_integer_native(interp, initial, ICONST(3));
PREG(1) = VTABLE_instantiate(interp, _class, initial);
}
else {
@@ -25674,7 +25677,7 @@
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);return (opcode_t *)dest;
}
- PREG(1) = Parrot_pmc_new_init_int(interp, type, cur_opcode[3]);
+ PREG(1) = Parrot_pmc_new_init_int(interp, type, ICONST(3));
}
return (opcode_t *)cur_opcode + 4;}
@@ -25682,14 +25685,14 @@
opcode_t *
Parrot_new_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const name = CONST(2).u.string;
+ STRING * const name = SCONST(2);
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
: PMCNULL;
if (!PMC_IS_NULL(_class)) {
PMC *initial = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
- VTABLE_set_integer_native(interp, initial, cur_opcode[3]);
+ VTABLE_set_integer_native(interp, initial, ICONST(3));
PREG(1) = VTABLE_instantiate(interp, _class, initial);
}
else {
@@ -25699,7 +25702,7 @@
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);return (opcode_t *)dest;
}
- PREG(1) = Parrot_pmc_new_init_int(interp, type, cur_opcode[3]);
+ PREG(1) = Parrot_pmc_new_init_int(interp, type, ICONST(3));
}
return (opcode_t *)cur_opcode + 4;}
@@ -25739,7 +25742,7 @@
opcode_t *
Parrot_new_p_pc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const name_key = CONST(2).u.key;
+ PMC * const name_key = PCONST(2);
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
@@ -25782,14 +25785,14 @@
if (!PMC_IS_NULL(_class)) {
PMC *initial = Parrot_pmc_new(interp,
Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
- VTABLE_set_integer_native(interp, initial, cur_opcode[3]);
+ VTABLE_set_integer_native(interp, initial, ICONST(3));
PREG(1) = VTABLE_instantiate(interp, _class, initial);
}
}
/* if it's a core PMC */
else if (type > enum_class_default)
- PREG(1) = Parrot_pmc_new_init_int(interp, type, cur_opcode[3]);
+ PREG(1) = Parrot_pmc_new_init_int(interp, type, ICONST(3));
/* it's a typo */
else {
@@ -25803,7 +25806,7 @@
opcode_t *
Parrot_new_p_pc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const name_key = CONST(2).u.key;
+ PMC * const name_key = PCONST(2);
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
@@ -25814,14 +25817,14 @@
if (!PMC_IS_NULL(_class)) {
PMC *initial = Parrot_pmc_new(interp,
Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
- VTABLE_set_integer_native(interp, initial, cur_opcode[3]);
+ VTABLE_set_integer_native(interp, initial, ICONST(3));
PREG(1) = VTABLE_instantiate(interp, _class, initial);
}
}
/* if it's a core PMC */
else if (type > enum_class_default)
- PREG(1) = Parrot_pmc_new_init_int(interp, type, cur_opcode[3]);
+ PREG(1) = Parrot_pmc_new_init_int(interp, type, ICONST(3));
/* it's a typo */
else {
@@ -25869,7 +25872,7 @@
opcode_t *
Parrot_root_new_p_pc_i(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const name_key = CONST(2).u.key;
+ PMC * const name_key = PCONST(2);
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
@@ -25916,14 +25919,14 @@
if (!PMC_IS_NULL(_class)) {
PMC *initial = Parrot_pmc_new(interp,
Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
- VTABLE_set_integer_native(interp, initial, cur_opcode[3]);
+ VTABLE_set_integer_native(interp, initial, ICONST(3));
PREG(1) = VTABLE_instantiate(interp, _class, initial);
}
}
/* if it's a core PMC */
else if (type > enum_class_default)
- PREG(1) = Parrot_pmc_new_init_int(interp, type, cur_opcode[3]);
+ PREG(1) = Parrot_pmc_new_init_int(interp, type, ICONST(3));
/* it's a typo */
else {
@@ -25937,7 +25940,7 @@
opcode_t *
Parrot_root_new_p_pc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const name_key = CONST(2).u.key;
+ PMC * const name_key = PCONST(2);
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
@@ -25950,14 +25953,14 @@
if (!PMC_IS_NULL(_class)) {
PMC *initial = Parrot_pmc_new(interp,
Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
- VTABLE_set_integer_native(interp, initial, cur_opcode[3]);
+ VTABLE_set_integer_native(interp, initial, ICONST(3));
PREG(1) = VTABLE_instantiate(interp, _class, initial);
}
}
/* if it's a core PMC */
else if (type > enum_class_default)
- PREG(1) = Parrot_pmc_new_init_int(interp, type, cur_opcode[3]);
+ PREG(1) = Parrot_pmc_new_init_int(interp, type, ICONST(3));
/* it's a typo */
else {
@@ -25989,7 +25992,7 @@
const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
#if PARROT_HAS_ICU
UErrorCode err = U_ZERO_ERROR;
- char * const cstr = Parrot_str_to_cstring(interp, CONST(2).u.string);
+ char * const cstr = Parrot_str_to_cstring(interp, SCONST(2));
UChar32 codepoint = u_charFromName(U_EXTENDED_CHAR_NAME, cstr, &err);
Parrot_str_free_cstring(cstr);
IREG(1) = U_SUCCESS(err) ? (INTVAL) codepoint : -1;
@@ -26045,13 +26048,13 @@
/* Go to the next op after loop unrolling */
opcode_t * const dest = cur_opcode + 2;
PMC *eh = PMCNULL;
- if (!PMC_IS_NULL(CONST(1).u.key)) {
+ if (!PMC_IS_NULL(PCONST(1))) {
/* If isa ExceptionHandler, use it. If isa Exception, get its active handler */
- if (VTABLE_isa(interp, CONST(1).u.key, Parrot_str_new_constant(interp, "ExceptionHandler")))
- eh = CONST(1).u.key;
- else if (VTABLE_isa(interp, CONST(1).u.key, Parrot_str_new_constant(interp, "Exception"))) {
+ if (VTABLE_isa(interp, PCONST(1), Parrot_str_new_constant(interp, "ExceptionHandler")))
+ eh = PCONST(1);
+ else if (VTABLE_isa(interp, PCONST(1), Parrot_str_new_constant(interp, "Exception"))) {
PMC *iter = VTABLE_get_attr_str(interp,
- CONST(1).u.key, Parrot_str_new_constant(interp, "handler_iter"));
+ PCONST(1), Parrot_str_new_constant(interp, "handler_iter"));
if (!PMC_IS_NULL(iter))
eh = VTABLE_get_pmc_keyed_int(interp, iter, -1);
}
Modified: trunk/src/packdump.c
==============================================================================
--- trunk/src/packdump.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/packdump.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -29,9 +29,16 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-static void PackFile_Constant_dump(PARROT_INTERP,
+static void PackFile_Constant_dump_pmc(PARROT_INTERP,
ARGIN(const PackFile_ConstTable *ct),
- ARGIN(const PackFile_Constant *self))
+ ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+static void PackFile_Constant_dump_str(PARROT_INTERP,
+ ARGIN(const PackFile_ConstTable *ct),
+ ARGIN(const STRING *self))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3);
@@ -39,7 +46,11 @@
static void pobj_flag_dump(PARROT_INTERP, long flags)
__attribute__nonnull__(1);
-#define ASSERT_ARGS_PackFile_Constant_dump __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_PackFile_Constant_dump_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(ct) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_PackFile_Constant_dump_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(ct) \
, PARROT_ASSERT_ARG(self))
@@ -67,9 +78,19 @@
ASSERT_ARGS(PackFile_ConstTable_dump)
opcode_t i;
- for (i = 0; i < self->const_count; ++i) {
+ for (i = 0; i < self->num.const_count; i++) {
+ Parrot_io_printf(interp, " # %x:\n", (long)i);
+ Parrot_io_printf(interp, " [ 'PFC_NUMBER', %g ],\n", self->num.constants[i]);
+ }
+
+ for (i = 0; i < self->str.const_count; i++) {
Parrot_io_printf(interp, " # %x:\n", (long)i);
- PackFile_Constant_dump(interp, self, &self->constants[i]);
+ PackFile_Constant_dump_str(interp, self, self->str.constants[i]);
+ }
+
+ for (i = 0; i < self->pmc.const_count; i++) {
+ Parrot_io_printf(interp, " # %x:\n", (long)i);
+ PackFile_Constant_dump_pmc(interp, self, self->pmc.constants[i]);
}
}
@@ -152,42 +173,61 @@
Parrot_io_printf(interp, ")\n");
}
+
+/*
+
+=item C<static void PackFile_Constant_dump_str(PARROT_INTERP, const
+PackFile_ConstTable *ct, const STRING *self)>
+
+Print the representation of a string constant.
+
+=cut
+
+*/
+
static void
-PackFile_Constant_dump(PARROT_INTERP, ARGIN(const PackFile_ConstTable *ct),
- ARGIN(const PackFile_Constant *self))
+PackFile_Constant_dump_str(PARROT_INTERP, ARGIN(const PackFile_ConstTable *ct),
+ ARGIN(const STRING *self))
{
- ASSERT_ARGS(PackFile_Constant_dump)
- PMC *key;
- size_t i;
-
- switch (self->type) {
-
- case PFC_NUMBER:
- Parrot_io_printf(interp, " [ 'PFC_NUMBER', %g ],\n", self->u.number);
- break;
-
- case PFC_STRING:
- Parrot_io_printf(interp, " [ 'PFC_STRING', {\n");
- pobj_flag_dump(interp, (long)PObj_get_FLAGS(self->u.string));
- Parrot_io_printf(interp, " ENCODING => %ld,\n",
- self->u.string->encoding);
- i = self->u.string->bufused;
- Parrot_io_printf(interp, " SIZE => %ld,\n",
- (long)i);
+ ASSERT_ARGS(PackFile_Constant_dump_str)
- Parrot_io_printf(interp, " DATA => \"%Ss\"\n",
- Parrot_str_escape(interp, self->u.string));
- Parrot_io_printf(interp, " } ],\n");
- break;
+ Parrot_io_printf(interp, " [ 'PFC_STRING', {\n");
+ pobj_flag_dump(interp, (long)PObj_get_FLAGS(self));
+ Parrot_io_printf(interp, " ENCODING => %ld,\n", self->encoding);
+ Parrot_io_printf(interp, " SIZE => %ld,\n", self->bufused);
+ Parrot_io_printf(interp, " DATA => \"%Ss\"\n",
+ Parrot_str_escape(interp, self));
+ Parrot_io_printf(interp, " } ],\n");
+}
+
+
+/*
- case PFC_KEY:
- for (i = 0, key = self->u.key; key; ++i) {
+=item C<static void PackFile_Constant_dump_pmc(PARROT_INTERP, const
+PackFile_ConstTable *ct, PMC *self)>
+
+Print the representation of a PMC constant.
+
+=cut
+
+*/
+
+static void
+PackFile_Constant_dump_pmc(PARROT_INTERP, ARGIN(const PackFile_ConstTable *ct),
+ ARGIN(PMC *self))
+{
+ ASSERT_ARGS(PackFile_Constant_dump_pmc)
+
+ if (self->vtable->base_type == enum_class_Key) {
+ size_t i;
+ PMC *key;
+ for (i = 0, key = self; key; i++) {
GETATTR_Key_next_key(interp, key, key);
}
/* number of key components */
Parrot_io_printf(interp, " [ 'PFC_KEY' (%ld items)\n", i);
/* and now type / value per component */
- for (key = self->u.key; key;) {
+ for (key = self; key;) {
opcode_t type = PObj_get_FLAGS(key);
Parrot_io_printf(interp, " {\n");
@@ -203,28 +243,25 @@
break;
case KEY_number_FLAG:
{
- const PackFile_Constant *detail;
size_t ct_index;
Parrot_io_printf(interp, " TYPE => NUMBER\n");
ct_index = PackFile_find_in_const(interp, ct, key, PFC_NUMBER);
Parrot_io_printf(interp, " PFC_OFFSET => %ld\n", ct_index);
- detail = &ct->constants[ct_index];
- Parrot_io_printf(interp, " DATA => %ld\n", detail->u.number);
+ Parrot_io_printf(interp, " DATA => %ld\n",
+ ct->num.constants[ct_index]);
Parrot_io_printf(interp, " },\n");
}
break;
case KEY_string_FLAG:
{
- const PackFile_Constant *detail;
size_t ct_index;
Parrot_io_printf(interp, " TYPE => STRING\n");
ct_index = PackFile_find_in_const(interp, ct, key, PFC_STRING);
Parrot_io_printf(interp, " PFC_OFFSET => %ld\n", ct_index);
- detail = &ct->constants[ct_index];
Parrot_io_printf(interp, " DATA => '%Ss'\n",
- detail->u.string);
+ ct->str.constants[ct_index]);
Parrot_io_printf(interp, " },\n");
}
break;
@@ -260,110 +297,103 @@
GETATTR_Key_next_key(interp, key, key);
}
Parrot_io_printf(interp, " ],\n");
- break;
- case PFC_PMC:
+ }
+ else {
+ Parrot_Sub_attributes *sub;
+ STRING * const null = Parrot_str_new_constant(interp, "(null)");
+ STRING *namespace_description;
+
Parrot_io_printf(interp, " [ 'PFC_PMC', {\n");
- {
- PMC * const pmc = self->u.key;
- Parrot_Sub_attributes *sub;
- STRING * const null = Parrot_str_new_constant(interp, "(null)");
- STRING *namespace_description;
-
- pobj_flag_dump(interp, (long)PObj_get_FLAGS(pmc));
- switch (pmc->vtable->base_type) {
- case enum_class_FixedBooleanArray:
- case enum_class_FixedFloatArray:
- case enum_class_FixedPMCArray:
- case enum_class_FixedStringArray:
- case enum_class_ResizableBooleanArray:
- case enum_class_ResizableIntegerArray:
- case enum_class_ResizableFloatArray:
- case enum_class_ResizablePMCArray:
- case enum_class_ResizableStringArray:
+ pobj_flag_dump(interp, (long)PObj_get_FLAGS(self));
+ switch (self->vtable->base_type) {
+ case enum_class_FixedBooleanArray:
+ case enum_class_FixedFloatArray:
+ case enum_class_FixedPMCArray:
+ case enum_class_FixedStringArray:
+ case enum_class_ResizableBooleanArray:
+ case enum_class_ResizableIntegerArray:
+ case enum_class_ResizableFloatArray:
+ case enum_class_ResizablePMCArray:
+ case enum_class_ResizableStringArray:
{
- const int n = VTABLE_get_integer(interp, pmc);
- STRING* const out_buffer = VTABLE_get_repr(interp, pmc);
+ const int n = VTABLE_get_integer(interp, self);
+ STRING* const out_buffer = VTABLE_get_repr(interp, self);
Parrot_io_printf(interp,
"\t\tclass => %Ss,\n"
"\t\telement count => %d,\n"
"\t\telements => %Ss,\n",
- pmc->vtable->whoami,
+ self->vtable->whoami,
n,
out_buffer);
}
break;
- case enum_class_Sub:
- case enum_class_Coroutine:
- PMC_get_sub(interp, pmc, sub);
+ case enum_class_Sub:
+ case enum_class_Coroutine:
+ PMC_get_sub(interp, self, sub);
if (sub->namespace_name) {
switch (sub->namespace_name->vtable->base_type) {
- case enum_class_String:
- namespace_description = Parrot_str_new(interp, "'", 1);
- namespace_description = Parrot_str_concat(interp,
- namespace_description,
- VTABLE_get_string(interp, sub->namespace_name));
- namespace_description = Parrot_str_concat(interp,
- namespace_description,
- Parrot_str_new(interp, "'", 1));
- break;
- case enum_class_Key:
- namespace_description =
- key_set_to_string(interp, sub->namespace_name);
- break;
- default:
- namespace_description = sub->namespace_name->vtable->whoami;
+ case enum_class_String:
+ namespace_description = Parrot_str_new(interp, "'", 1);
+ namespace_description = Parrot_str_concat(interp,
+ namespace_description,
+ VTABLE_get_string(interp, sub->namespace_name));
+ namespace_description = Parrot_str_concat(interp,
+ namespace_description,
+ Parrot_str_new(interp, "'", 1));
+ break;
+ case enum_class_Key:
+ namespace_description =
+ key_set_to_string(interp, sub->namespace_name);
+ break;
+ default:
+ namespace_description = sub->namespace_name->vtable->whoami;
}
}
else {
namespace_description = null;
}
Parrot_io_printf(interp,
- "\t\tclass => %Ss,\n"
- "\t\tstart_offs => %d,\n"
- "\t\tend_offs => %d,\n"
- "\t\tname => '%Ss',\n"
- "\t\tsubid => '%Ss',\n"
- "\t\tmethod => '%Ss',\n"
- "\t\tnsentry => '%Ss',\n"
- "\t\tnamespace => %Ss,\n"
- "\t\tHLL_id => %d,\n"
- "\t\tn_regs_used => [ %d, %d, %d, %d ],\n",
- pmc->vtable->whoami,
- sub->start_offs,
- sub->end_offs,
- sub->name,
- sub->subid,
- sub->method_name,
- sub->ns_entry_name,
- namespace_description,
- sub->HLL_id,
- sub->n_regs_used[0],
- sub->n_regs_used[1],
- sub->n_regs_used[2],
- sub->n_regs_used[3]);
+ "\t\tclass => %Ss,\n"
+ "\t\tstart_offs => %d,\n"
+ "\t\tend_offs => %d,\n"
+ "\t\tname => '%Ss',\n"
+ "\t\tsubid => '%Ss',\n"
+ "\t\tmethod => '%Ss',\n"
+ "\t\tnsentry => '%Ss',\n"
+ "\t\tnamespace => %Ss,\n"
+ "\t\tHLL_id => %d,\n"
+ "\t\tn_regs_used => [ %d, %d, %d, %d ],\n",
+ self->vtable->whoami,
+ sub->start_offs,
+ sub->end_offs,
+ sub->name,
+ sub->subid,
+ sub->method_name,
+ sub->ns_entry_name,
+ namespace_description,
+ sub->HLL_id,
+ sub->n_regs_used[0],
+ sub->n_regs_used[1],
+ sub->n_regs_used[2],
+ sub->n_regs_used[3]);
break;
- case enum_class_FixedIntegerArray:
+ case enum_class_FixedIntegerArray:
Parrot_io_printf(interp,
- "\t\tclass => %Ss,\n"
- "\t\trepr => '%Ss'\n",
- pmc->vtable->whoami,
- VTABLE_get_repr(interp, pmc));
+ "\t\tclass => %Ss,\n"
+ "\t\trepr => '%Ss'\n",
+ self->vtable->whoami,
+ VTABLE_get_repr(interp, self));
break;
- default:
+ default:
Parrot_io_printf(interp, "\t\tno dump info for PMC %ld %Ss\n",
- pmc->vtable->base_type, pmc->vtable->whoami);
- Parrot_io_printf(interp, "\t\tclass => %Ss,\n", pmc->vtable->whoami);
- }
+ self->vtable->base_type, self->vtable->whoami);
+ Parrot_io_printf(interp, "\t\tclass => %Ss,\n", self->vtable->whoami);
}
Parrot_io_printf(interp, " } ],\n");
- break;
- default:
- Parrot_io_printf(interp, " [ 'PFC_\?\?\?', type '0x%x' ],\n",
- self->type);
- break;
}
}
+
/*
=item C<void PackFile_Fixup_dump(PARROT_INTERP, const PackFile_FixupTable *ft)>
Modified: trunk/src/packfile.c
==============================================================================
--- trunk/src/packfile.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/packfile.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -81,13 +81,9 @@
__attribute__nonnull__(3)
FUNC_MODIFIES(*self);
-static void clone_constant(PARROT_INTERP,
- ARGIN(PackFile_Constant *old_const),
- ARGMOD(PackFile_Constant *new_const))
+static void clone_constant(PARROT_INTERP, ARGIN(PMC **c))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*new_const);
+ __attribute__nonnull__(2);
static void compile_or_load_file(PARROT_INTERP,
ARGIN(STRING *path),
@@ -215,7 +211,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-static PackFile_Constant * find_constants(PARROT_INTERP,
+static PackFile_ConstTable * find_constants(PARROT_INTERP,
ARGIN(PackFile_ConstTable *ct))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -298,6 +294,15 @@
ARGIN_NULLOK(const char *filename))
__attribute__nonnull__(1);
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static PMC * PackFile_Constant_unpack_pmc(PARROT_INTERP,
+ ARGIN(PackFile_ConstTable *constt),
+ ARGIN(const opcode_t **cursor))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
static void PackFile_set_header(ARGOUT(PackFile_Header *header))
__attribute__nonnull__(1)
FUNC_MODIFIES(*header);
@@ -393,8 +398,7 @@
, PARROT_ASSERT_ARG(cursor))
#define ASSERT_ARGS_clone_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(old_const) \
- , PARROT_ASSERT_ARG(new_const))
+ , PARROT_ASSERT_ARG(c))
#define ASSERT_ARGS_compile_or_load_file __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(path))
@@ -484,6 +488,10 @@
, PARROT_ASSERT_ARG(ct))
#define ASSERT_ARGS_PackFile_append_pbc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_PackFile_Constant_unpack_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(constt) \
+ , PARROT_ASSERT_ARG(cursor))
#define ASSERT_ARGS_PackFile_set_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(header))
#define ASSERT_ARGS_pf_debug_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -736,7 +744,7 @@
PMC *retval = PMCNULL;
Parrot_pcc_set_constants(interp, CURRENT_CONTEXT(interp),
- interp->code->const_table->constants);
+ interp->code->const_table);
Parrot_ext_call(interp, sub_pmc, "->P", &retval);
interp->run_core = old_core;
@@ -855,29 +863,13 @@
mark_1_seg(PARROT_INTERP, ARGMOD(PackFile_ConstTable *ct))
{
ASSERT_ARGS(mark_1_seg)
- PackFile_Constant * const constants = find_constants(interp, ct);
opcode_t i;
- for (i = 0; i < ct->const_count; ++i) {
- switch (constants[i].type) {
- case PFC_PMC:
- case PFC_KEY:
- {
- PMC * const pmc = constants[i].u.key;
- Parrot_gc_mark_PMC_alive(interp, pmc);
- break;
- }
- case PFC_STRING:
- {
- STRING * const string = constants[i].u.string;
- Parrot_gc_mark_STRING_alive(interp, string);
- break;
- }
- default:
- /* Do nothing. */
- break;
- }
- }
+ for (i = 0; i < ct->str.const_count; i++)
+ Parrot_gc_mark_STRING_alive(interp, ct->str.constants[i]);
+
+ for (i = 0; i < ct->pmc.const_count; i++)
+ Parrot_gc_mark_PMC_alive(interp, ct->pmc.constants[i]);
}
@@ -983,11 +975,11 @@
Parrot_Sub_attributes *sub;
const opcode_t ci = ft->fixups[i].offset;
- if (ci < 0 || ci >= ct->const_count)
+ if (ci < 0 || ci >= ct->pmc.const_count)
Parrot_ex_throw_from_c_args(interp, NULL, 1,
"Illegal fixup offset (%d) in enum_fixup_sub");
- sub_pmc = ct->constants[ci].u.key;
+ sub_pmc = ct->pmc.constants[ci];
PMC_get_sub(interp, sub_pmc, sub);
sub->eval_pmc = eval_pmc;
@@ -999,8 +991,8 @@
/* replace Sub PMC with computation results */
if (action == PBC_IMMEDIATE && !PMC_IS_NULL(result)) {
- ft->fixups[i].type = enum_fixup_none;
- ct->constants[ci].u.key = result;
+ ft->fixups[i].type = enum_fixup_none;
+ ct->pmc.constants[ci] = result;
}
}
@@ -3082,7 +3074,7 @@
Parrot_io_printf(interp, " OFFSET => %d,\n",
debug->mappings[i].offset);
Parrot_io_printf(interp, " FILENAME => %Ss\n",
- PF_CONST(debug->code, debug->mappings[i].filename).u.string);
+ debug->code->const_table->str.constants[debug->mappings[i].filename]);
Parrot_io_printf(interp, " ],\n");
}
@@ -3167,9 +3159,9 @@
if (debug->num_mappings) {
prev_filename_n = debug->mappings[debug->num_mappings-1].filename;
filename_pstr = Parrot_str_new(interp, filename, 0);
- if (ct->constants[prev_filename_n].type == PFC_STRING &&
+ if (ct->str.constants[prev_filename_n] &&
Parrot_str_equal(interp, filename_pstr,
- ct->constants[prev_filename_n].u.string)) {
+ ct->str.constants[prev_filename_n])) {
return;
}
}
@@ -3203,15 +3195,14 @@
PackFile_DebugFilenameMapping *mapping = debug->mappings + insert_pos;
STRING *namestr = Parrot_str_new_init(interp, filename, strlen(filename),
Parrot_default_encoding_ptr, 0);
- size_t count = ct->const_count;
+ size_t count = ct->str.const_count;
size_t i;
mapping->offset = offset;
/* Check if there is already a constant with this filename */
for (i= 0; i < count; ++i) {
- if (ct->constants[i].type == PFC_STRING &&
- Parrot_str_equal(interp, namestr, ct->constants[i].u.string))
+ if (Parrot_str_equal(interp, namestr, ct->str.constants[i]))
break;
}
if (i < count) {
@@ -3220,14 +3211,11 @@
}
else {
/* Not found, create a new one */
- PackFile_Constant *fnconst;
- ct->const_count = ct->const_count + 1;
- ct->constants = mem_gc_realloc_n_typed_zeroed(interp, ct->constants,
- ct->const_count, ct->const_count - 1, PackFile_Constant);
-
- fnconst = &ct->constants[ct->const_count - 1];
- fnconst->type = PFC_STRING;
- fnconst->u.string = Parrot_str_new_init(interp, filename, strlen(filename),
+ ct->str.const_count++;
+ ct->str.constants = mem_gc_realloc_n_typed_zeroed(interp, ct->str.constants,
+ ct->str.const_count, ct->str.const_count - 1, STRING *);
+ ct->str.constants[ct->str.const_count - 1] =
+ Parrot_str_new_init(interp, filename, strlen(filename),
Parrot_default_encoding_ptr,
PObj_constant_FLAG);
}
@@ -3268,8 +3256,7 @@
if (i + 1 == debug->num_mappings
|| (debug->mappings[i].offset <= pc
&& debug->mappings[i + 1].offset > pc))
- return PF_CONST(debug->code,
- debug->mappings[i].filename).u.string;
+ return debug->code->const_table->str.constants[debug->mappings[i].filename];
}
/* Otherwise, no mappings == no filename. */
@@ -3349,9 +3336,10 @@
}
interp->code = new_cs;
+
Parrot_pcc_set_constants(interp, CURRENT_CONTEXT(interp), really
? find_constants(interp, new_cs->const_table)
- : new_cs->const_table->constants);
+ : new_cs->const_table);
if (really)
prepare_for_run(interp);
@@ -3362,8 +3350,7 @@
/*
-=item C<static void clone_constant(PARROT_INTERP, PackFile_Constant *old_const,
-PackFile_Constant *new_const)>
+=item C<static void clone_constant(PARROT_INTERP, PMC **c)>
Clones a constant (at least, if it's a Sub PMC), returning the clone.
@@ -3372,20 +3359,16 @@
*/
static void
-clone_constant(PARROT_INTERP, ARGIN(PackFile_Constant *old_const),
-ARGMOD(PackFile_Constant *new_const))
+clone_constant(PARROT_INTERP, ARGIN(PMC **c))
{
ASSERT_ARGS(clone_constant)
STRING * const _sub = CONST_STRING(interp, "Sub");
- memcpy(new_const, old_const, sizeof (PackFile_Constant));
-
- if (old_const->type == PFC_PMC
- && VTABLE_isa(interp, old_const->u.key, _sub)) {
+ if (VTABLE_isa(interp, *c, _sub)) {
PMC *old_sub_pmc, *new_sub_pmc;
Parrot_Sub_attributes *old_sub, *new_sub;
- old_sub_pmc = old_const->u.key;
+ old_sub_pmc = *c;
new_sub_pmc = Parrot_thaw_constants(interp, Parrot_freeze(interp, old_sub_pmc));
PMC_get_sub(interp, new_sub_pmc, new_sub);
@@ -3397,14 +3380,14 @@
&& !(old_sub->comp_flags & SUB_COMP_FLAG_METHOD))
Parrot_ns_store_sub(interp, new_sub_pmc);
- new_const->u.key = new_sub_pmc;
+ *c = new_sub_pmc;
}
}
/*
-=item C<static PackFile_Constant * find_constants(PARROT_INTERP,
+=item C<static PackFile_ConstTable * find_constants(PARROT_INTERP,
PackFile_ConstTable *ct)>
Finds the constant table associated with a thread. For now, we need to copy
@@ -3417,17 +3400,17 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-static PackFile_Constant *
+static PackFile_ConstTable *
find_constants(PARROT_INTERP, ARGIN(PackFile_ConstTable *ct))
{
ASSERT_ARGS(find_constants)
if (!n_interpreters
|| !interp->thread_data
|| interp->thread_data->tid == 0)
- return ct->constants;
+ return ct;
else {
- Hash *tables;
- PackFile_Constant *new_consts;
+ Hash *tables;
+ PackFile_ConstTable *new_ct;
PARROT_ASSERT(interp->thread_data);
@@ -3435,25 +3418,40 @@
interp->thread_data->const_tables = parrot_new_pointer_hash(interp);
}
- tables = interp->thread_data->const_tables;
- new_consts = (PackFile_Constant *)parrot_hash_get(interp, tables, ct);
+ tables = interp->thread_data->const_tables;
+ new_ct = (PackFile_ConstTable *)parrot_hash_get(interp, tables, ct);
- if (!new_consts) {
+ if (!new_ct) {
/* need to construct it */
- PackFile_Constant * const old_consts = ct->constants;
- INTVAL const num_consts = ct->const_count;
- INTVAL i;
- new_consts = mem_gc_allocate_n_zeroed_typed(interp,
- num_consts, PackFile_Constant);
+ int i;
+
+ new_ct = mem_gc_allocate_zeroed_typed(interp, PackFile_ConstTable);
- for (i = 0; i < num_consts; ++i)
- clone_constant(interp, &old_consts[i], &new_consts[i]);
+ new_ct->num.const_count = ct->num.const_count;
+ new_ct->num.constants = mem_gc_allocate_n_zeroed_typed(interp,
+ ct->num.const_count, FLOATVAL);
+ memcpy(new_ct->num.constants, ct->num.constants,
+ ct->num.const_count * sizeof (FLOATVAL));
+
+ new_ct->str.const_count = ct->str.const_count;
+ new_ct->str.constants = mem_gc_allocate_n_zeroed_typed(interp,
+ ct->str.const_count, STRING *);
+ memcpy(new_ct->str.constants, ct->str.constants,
+ ct->str.const_count * sizeof (STRING *));
+
+ new_ct->pmc.const_count = ct->pmc.const_count;
+ new_ct->pmc.constants = mem_gc_allocate_n_zeroed_typed(interp,
+ ct->pmc.const_count, PMC *);
+ memcpy(new_ct->pmc.constants, ct->pmc.constants,
+ ct->pmc.const_count * sizeof (PMC *));
+ for (i = 0; i < new_ct->pmc.const_count; ++i)
+ clone_constant(interp, &new_ct->pmc.constants[i]);
- parrot_hash_put(interp, tables, ct, new_consts);
+ parrot_hash_put(interp, tables, ct, new_ct);
}
- return new_consts;
+ return new_ct;
}
}
@@ -3476,6 +3474,8 @@
UINTVAL i;
Hash *hash;
+ return;
+
if (!interp->thread_data)
return;
@@ -3486,9 +3486,9 @@
parrot_hash_iterate(hash,
PackFile_ConstTable * const table = (PackFile_ConstTable *)_bucket->key;
- PackFile_Constant * const orig_consts = table->constants;
- PackFile_Constant * const consts = (PackFile_Constant *) _bucket->value;
- mem_gc_free(interp, consts););
+ PackFile_ConstTable * const ct = (PackFile_ConstTable *)_bucket->value;
+ PackFile_ConstTable_clear(interp, ct);
+ mem_gc_free(interp, ct););
parrot_hash_destroy(interp, hash);
}
@@ -3905,12 +3905,20 @@
ASSERT_ARGS(PackFile_ConstTable_clear)
opcode_t i;
- if (self->constants) {
- mem_gc_free(interp, self->constants);
- self->constants = NULL;
+ if (self->num.constants) {
+ mem_gc_free(interp, self->num.constants);
+ self->num.constants = NULL;
+ }
+
+ if (self->str.constants) {
+ mem_gc_free(interp, self->str.constants);
+ self->str.constants = NULL;
}
- self->const_count = 0;
+ if (self->pmc.constants) {
+ mem_gc_free(interp, self->pmc.constants);
+ self->pmc.constants = NULL;
+ }
if (self->string_hash) {
parrot_hash_destroy(interp, self->string_hash);
@@ -3951,33 +3959,47 @@
PackFile_ConstTable_clear(interp, self);
- self->const_count = PF_fetch_opcode(pf, &cursor);
-
- TRACE_PRINTF(("PackFile_ConstTable_unpack: Unpacking %ld constants\n",
- self->const_count));
+ self->num.const_count = PF_fetch_opcode(pf, &cursor);
+ self->str.const_count = PF_fetch_opcode(pf, &cursor);
+ self->pmc.const_count = PF_fetch_opcode(pf, &cursor);
- if (self->const_count == 0)
- return cursor;
+ if (self->num.const_count) {
+ self->num.constants = mem_gc_allocate_n_zeroed_typed(interp,
+ self->num.const_count, FLOATVAL);
+ if (!self->num.constants)
+ goto err;
+ }
- self->constants = mem_gc_allocate_n_zeroed_typed(interp, self->const_count,
- PackFile_Constant);
+ if (self->str.const_count) {
+ self->str.constants = mem_gc_allocate_n_zeroed_typed(interp,
+ self->str.const_count, STRING *);
+ if (!self->str.constants)
+ goto err;
+ }
- if (!self->constants) {
- Parrot_io_eprintf(interp,
- "PackFile_ConstTable_unpack: Could not allocate memory for array!\n");
- self->const_count = 0;
- return NULL;
+ if (self->pmc.const_count) {
+ self->pmc.constants = mem_gc_allocate_n_zeroed_typed(interp,
+ self->pmc.const_count, PMC *);
+ if (!self->pmc.constants)
+ goto err;
}
- for (i = 0; i < self->const_count; ++i) {
- TRACE_PRINTF(("PackFile_ConstTable_unpack(): Unpacking constant %ld/%ld\n",
- i, self->const_count));
+ for (i = 0; i < self->num.const_count; i++)
+ self->num.constants[i] = PF_fetch_number(pf, &cursor);
- cursor = PackFile_Constant_unpack(interp, self, &self->constants[i],
- cursor);
- }
+ for (i = 0; i < self->str.const_count; i++)
+ self->str.constants[i] = PF_fetch_string(interp, pf, &cursor);
+
+ for (i = 0; i < self->pmc.const_count; i++)
+ self->pmc.constants[i] = PackFile_Constant_unpack_pmc(interp, self, &cursor);
return cursor;
+
+ err:
+ Parrot_io_eprintf(interp,
+ "PackFile_ConstTable_unpack: Could not allocate memory for array!\n");
+ PackFile_ConstTable_clear(interp, self);
+ return NULL;
}
@@ -4026,124 +4048,8 @@
/*
-=item C<size_t PackFile_Constant_pack_size(PARROT_INTERP, const
-PackFile_Constant *self, const PackFile_ConstTable *ct)>
-
-Determines the size of the buffer needed in order to pack the PackFile Constant
-into a contiguous region of memory.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-size_t
-PackFile_Constant_pack_size(PARROT_INTERP, ARGIN(const PackFile_Constant *self), ARGIN(const
- PackFile_ConstTable *ct))
-{
- ASSERT_ARGS(PackFile_Constant_pack_size)
- PMC *component;
- size_t packed_size;
-
- switch (self->type) {
- case PFC_NUMBER:
- packed_size = PF_size_number();
- break;
-
- case PFC_STRING:
- packed_size = PF_size_string(self->u.string);
- break;
-
- case PFC_KEY:
- packed_size = 1;
-
- for (component = self->u.key; component;){
- packed_size += 2;
- GETATTR_Key_next_key(interp, component, component);
- }
- break;
-
- case PFC_PMC:
- component = self->u.key; /* the pmc (Sub, ...) */
- packed_size = PF_size_strlen(Parrot_freeze_pbc_size(interp, component, ct)) - 1;
- break;
-
- default:
- Parrot_io_eprintf(NULL,
- "Constant_packed_size: Unrecognized type '%c'!\n",
- (char)self->type);
- return 0;
- }
-
- /* Tack on space for the initial type field */
- return packed_size + 1;
-}
-
-
-/*
-
-=item C<const opcode_t * PackFile_Constant_unpack(PARROT_INTERP,
-PackFile_ConstTable *constt, PackFile_Constant *self, const opcode_t *cursor)>
-
-Unpacks a PackFile Constant from a block of memory. The format is:
-
- opcode_t type
- * data
-
-Returns cursor if everything is okay, else NULL.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-const opcode_t *
-PackFile_Constant_unpack(PARROT_INTERP, ARGIN(PackFile_ConstTable *constt),
- ARGOUT(PackFile_Constant *self), ARGIN(const opcode_t *cursor))
-{
- ASSERT_ARGS(PackFile_Constant_unpack)
- PackFile * const pf = constt->base.pf;
- const opcode_t type = PF_fetch_opcode(pf, &cursor);
-
- TRACE_PRINTF(("PackFile_Constant_unpack(): Type is %ld ('%c')...\n",
- type, (char)type));
-
- switch (type) {
- case PFC_NUMBER:
- self->u.number = PF_fetch_number(pf, &cursor);
- self->type = PFC_NUMBER;
- break;
-
- case PFC_STRING:
- self->u.string = PF_fetch_string(interp, pf, &cursor);
- self->type = PFC_STRING;
- break;
-
- case PFC_KEY:
- cursor = PackFile_Constant_unpack_key(interp, constt, self, cursor);
- break;
-
- case PFC_PMC:
- cursor = PackFile_Constant_unpack_pmc(interp, constt, self, cursor);
- break;
- default:
- Parrot_io_eprintf(NULL,
- "Constant_unpack: Unrecognized type '%c' during unpack!\n",
- (char)type);
- return NULL;
- }
-
- return cursor;
-}
-
-
-/*
-
-=item C<const opcode_t * PackFile_Constant_unpack_pmc(PARROT_INTERP,
-PackFile_ConstTable *constt, PackFile_Constant *self, const opcode_t *cursor)>
+=item C<static PMC * PackFile_Constant_unpack_pmc(PARROT_INTERP,
+PackFile_ConstTable *constt, const opcode_t **cursor)>
Unpacks a constant PMC.
@@ -4151,114 +4057,95 @@
*/
-PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-const opcode_t *
+static PMC *
PackFile_Constant_unpack_pmc(PARROT_INTERP, ARGIN(PackFile_ConstTable *constt),
- ARGMOD(PackFile_Constant *self), ARGIN(const opcode_t *cursor))
+ ARGIN(const opcode_t **cursor))
{
ASSERT_ARGS(PackFile_Constant_unpack_pmc)
- PackFile * const pf = constt->base.pf;
- STRING *_sub = CONST_STRING(interp, "Sub");
- PMC *pmc;
-
- /* thawing the PMC needs the real packfile in place */
- PackFile_ByteCode * const cs_save = interp->code;
- interp->code = pf->cur_cs;
- pmc = Parrot_thaw_pbc(interp, constt, &cursor);
-
- /* place item in const_table */
- self->type = PFC_PMC;
- self->u.key = pmc;
-
- /* finally place the sub into some namespace stash
- * XXX place this code in Sub.thaw ? */
- if (VTABLE_isa(interp, pmc, _sub))
- Parrot_ns_store_sub(interp, pmc);
-
- /* restore code */
- interp->code = cs_save;
-
- return cursor;
-}
-
-
-/*
+ PackFile * const pf = constt->base.pf;
+ STRING *_sub = CONST_STRING(interp, "Sub");
+ const opcode_t const_type = PF_fetch_opcode(pf, cursor);
-=item C<const opcode_t * PackFile_Constant_unpack_key(PARROT_INTERP,
-PackFile_ConstTable *constt, PackFile_Constant *self, const opcode_t *cursor)>
+ switch (const_type) {
+ case PFC_KEY:
+ {
+ PMC *head = NULL;
+ PMC *tail = NULL;
+ INTVAL components = (INTVAL)PF_fetch_opcode(pf, cursor);
+
+ while (components-- > 0) {
+ opcode_t type = PF_fetch_opcode(pf, cursor);
+ opcode_t op;
+
+ if (tail) {
+ SETATTR_Key_next_key(interp, tail, Parrot_pmc_new_constant(interp,
+ enum_class_Key));
+ GETATTR_Key_next_key(interp, tail, tail);
+ }
+ else
+ head = tail = Parrot_pmc_new_constant(interp, enum_class_Key);
-Unpacks a PackFile Constant from a block of memory. The format consists of a
-sequence of key atoms, each with the following format:
+ op = PF_fetch_opcode(pf, cursor);
- opcode_t type
- opcode_t value
+ switch (type) {
+ case PARROT_ARG_IC:
+ key_set_integer(interp, tail, op);
+ break;
+ case PARROT_ARG_NC:
+ key_set_number(interp, tail, constt->num.constants[op]);
+ break;
+ case PARROT_ARG_SC:
+ key_set_string(interp, tail, constt->str.constants[op]);
+ break;
+ case PARROT_ARG_I:
+ key_set_register(interp, tail, op, KEY_integer_FLAG);
+ break;
+ case PARROT_ARG_N:
+ key_set_register(interp, tail, op, KEY_number_FLAG);
+ break;
+ case PARROT_ARG_S:
+ key_set_register(interp, tail, op, KEY_string_FLAG);
+ break;
+ case PARROT_ARG_P:
+ key_set_register(interp, tail, op, KEY_pmc_FLAG);
+ break;
+ default:
+ *cursor = NULL;
+ return PMCNULL;
+ }
+ }
-Returns cursor if everything is OK, else NULL.
+ return head;
+ }
-=cut
+ case PFC_PMC:
+ {
+ PMC *pmc;
+ /* thawing the PMC needs the real packfile in place */
+ PackFile_ByteCode * const cs_save = interp->code;
+ interp->code = pf->cur_cs;
+ pmc = Parrot_thaw_pbc(interp, constt, cursor);
+
+ /* finally place the sub into some namespace stash
+ * XXX place this code in Sub.thaw ? */
+ if (VTABLE_isa(interp, pmc, _sub))
+ Parrot_ns_store_sub(interp, pmc);
-*/
+ /* restore code */
+ interp->code = cs_save;
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-const opcode_t *
-PackFile_Constant_unpack_key(PARROT_INTERP, ARGIN(PackFile_ConstTable *constt),
- ARGMOD(PackFile_Constant *self), ARGIN(const opcode_t *cursor))
-{
- ASSERT_ARGS(PackFile_Constant_unpack_key)
- PackFile * const pf = constt->base.pf;
- PMC *head = NULL;
- PMC *tail = NULL;
- INTVAL components = (INTVAL)PF_fetch_opcode(pf, &cursor);
- int pmc_enum = enum_class_Key;
-
- while (components-- > 0) {
- opcode_t type = PF_fetch_opcode(pf, &cursor);
- opcode_t op;
-
- if (tail) {
- SETATTR_Key_next_key(interp, tail, Parrot_pmc_new_constant(interp, pmc_enum));
- GETATTR_Key_next_key(interp, tail, tail);
+ return pmc;
}
- else
- head = tail = Parrot_pmc_new_constant(interp, pmc_enum);
-
- op = PF_fetch_opcode(pf, &cursor);
- switch (type) {
- case PARROT_ARG_IC:
- key_set_integer(interp, tail, op);
- break;
- case PARROT_ARG_NC:
- key_set_number(interp, tail, constt->constants[op].u.number);
- break;
- case PARROT_ARG_SC:
- key_set_string(interp, tail, constt->constants[op].u.string);
- break;
- case PARROT_ARG_I:
- key_set_register(interp, tail, op, KEY_integer_FLAG);
- break;
- case PARROT_ARG_N:
- key_set_register(interp, tail, op, KEY_number_FLAG);
- break;
- case PARROT_ARG_S:
- key_set_register(interp, tail, op, KEY_string_FLAG);
- break;
- case PARROT_ARG_P:
- key_set_register(interp, tail, op, KEY_pmc_FLAG);
- break;
- default:
- return NULL;
- }
+ default:
+ Parrot_io_eprintf(NULL,
+ "Constant_unpack: Unrecognized type '%c' during unpack!\n",
+ (char)const_type);
+ *cursor = NULL;
+ return PMCNULL;
}
-
- self->type = PFC_KEY;
- self->u.key = head;
-
- return cursor;
}
@@ -4516,7 +4403,7 @@
const PackFile_Annotations_Key * const key = self->keys + i;
Parrot_io_printf(interp, " #%d\n [\n", i);
Parrot_io_printf(interp, " NAME => %Ss\n",
- PF_CONST(self->code, key->name).u.string);
+ self->code->const_table->str.constants[key->name]);
Parrot_io_printf(interp, " TYPE => %s\n",
key->type == PF_ANNOTATION_KEY_TYPE_INT ? "integer" :
key->type == PF_ANNOTATION_KEY_TYPE_STR ? "string" :
@@ -4621,12 +4508,12 @@
{
ASSERT_ARGS(PackFile_Annotations_add_entry)
/* See if we already have this key. */
- STRING * const key_name = PF_CONST(self->code, key).u.string;
+ STRING * const key_name = self->code->const_table->str.constants[key];
opcode_t key_id = -1;
INTVAL i;
for (i = 0; i < self->num_keys; ++i) {
- STRING * const test_key = PF_CONST(self->code, self->keys[i].name).u.string;
+ STRING * const test_key = self->code->const_table->str.constants[self->keys[i].name];
if (Parrot_str_equal(interp, test_key, key_name)) {
key_id = i;
break;
@@ -4701,12 +4588,12 @@
case PF_ANNOTATION_KEY_TYPE_NUM:
result = Parrot_pmc_new(interp, enum_class_Float);
VTABLE_set_number_native(interp, result,
- PF_CONST(self->code, value).u.number);
+ self->code->const_table->num.constants[value]);
break;
default:
result = Parrot_pmc_new(interp, enum_class_String);
VTABLE_set_string_native(interp, result,
- PF_CONST(self->code, value).u.string);
+ self->code->const_table->str.constants[value]);
}
return result;
@@ -4743,7 +4630,7 @@
if (!STRING_IS_NULL(key)) {
for (i = 0; i < self->num_keys; ++i) {
- STRING * const test_key = PF_CONST(self->code, self->keys[i].name).u.string;
+ STRING * const test_key = self->code->const_table->str.constants[self->keys[i].name];
if (Parrot_str_equal(interp, test_key, key)) {
key_id = i;
break;
@@ -4782,7 +4669,8 @@
for (i = 0; i < self->num_keys; ++i) {
if (have_values[i]) {
- STRING * const key_name = PF_CONST(self->code, self->keys[i].name).u.string;
+ STRING * const key_name =
+ self->code->const_table->str.constants[self->keys[i].name];
VTABLE_set_pmc_keyed_str(interp, result, key_name,
make_annotation_value_pmc(interp, self, self->keys[i].type,
latest_values[i]));
Modified: trunk/src/packout.c
==============================================================================
--- trunk/src/packout.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/packout.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -25,6 +25,28 @@
#include "pmc/pmc_key.h"
/* HEADERIZER HFILE: include/parrot/packfile.h */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static opcode_t * PackFile_Constant_pack_key(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(const PackFile_ConstTable *const_table),
+ ARGOUT(opcode_t *cursor))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*cursor);
+
+#define ASSERT_ARGS_PackFile_Constant_pack_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(const_table) \
+ , PARROT_ASSERT_ARG(cursor))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
/*
@@ -160,16 +182,27 @@
ASSERT_ARGS(PackFile_ConstTable_pack_size)
opcode_t i;
PackFile_ConstTable* const self = (PackFile_ConstTable *) seg;
- const opcode_t n_constants = self->const_count;
- size_t size = 1; /* const_count */
+ size_t size = 3; /* const_counts */
- for (i = 0; i < n_constants; ++i) {
- /* only constants up to the current one will be valid on unpack */
- self->const_count = i;
- size += PackFile_Constant_pack_size(interp, &self->constants[i], self);
- }
+ size += self->num.const_count * PF_size_number();
+
+ for (i = 0; i < self->str.const_count; i++)
+ size += PF_size_string(self->str.constants[i]);
- self->const_count = i;
+ for (i = 0; i < self->pmc.const_count; i++) {
+ PMC *c = self->pmc.constants[i];
+ size += 1;
+ if (c->vtable->base_type == enum_class_Key) {
+ size += 1;
+ while (c) {
+ size += 2;
+ GETATTR_Key_next_key(interp, c, c);
+ }
+ }
+ else {
+ size += PF_size_strlen(Parrot_freeze_pbc_size(interp, c, self)) - 1;
+ }
+ }
return size;
}
@@ -200,19 +233,30 @@
{
ASSERT_ARGS(PackFile_ConstTable_pack)
PackFile_ConstTable * const self = (PackFile_ConstTable *)seg;
- const opcode_t n_constants = self->const_count;
opcode_t i;
- *cursor++ = self->const_count;
-
- for (i = 0; i < n_constants; ++i) {
- /* only constants up to the current one will be valid on unpack */
- self->const_count = i;
- cursor = PackFile_Constant_pack(interp, self, &self->constants[i], cursor);
+ *cursor++ = self->num.const_count;
+ *cursor++ = self->str.const_count;
+ *cursor++ = self->pmc.const_count;
+
+ for (i = 0; i < self->num.const_count; i++)
+ cursor = PF_store_number(cursor, &self->num.constants[i]);
+
+ for (i = 0; i < self->str.const_count; i++)
+ cursor = PF_store_string(cursor, self->str.constants[i]);
+
+ for (i = 0; i < self->pmc.const_count; i++) {
+ PMC *c = self->pmc.constants[i];
+ if (c->vtable->base_type == enum_class_Key) {
+ *cursor++ = PFC_KEY;
+ cursor = PackFile_Constant_pack_key(interp, c, self, cursor);
+ }
+ else {
+ *cursor++ = PFC_PMC;
+ cursor = Parrot_freeze_pbc(interp, c, self, cursor);
+ }
}
- self->const_count = n_constants;
-
return cursor;
}
@@ -278,35 +322,32 @@
key_str);
if (bucket) {
i = (int)PTR2INTVAL(bucket->value);
- if (i < ct->const_count) /* only consider constants that have already occured */
- return i;
+ return i;
}
return -1;
}
- for (i = 0; i < ct->const_count; ++i) {
- PackFile_Constant *constant = &ct->constants[i];
-
- switch (type) {
- case PFC_STRING:
- if (constant->type == PFC_STRING) {
- STRING * const sc = constant->u.string;
- if (Parrot_str_equal(interp, key_str, sc)
- && key_str->encoding == sc->encoding) {
- return i;
- }
+ switch (type) {
+ case PFC_STRING:
+ for (i = 0; i < ct->str.const_count; i++) {
+ STRING *sc = ct->str.constants[i];
+ if (Parrot_str_equal(interp, key_str, sc)
+ && key_str->encoding == sc->encoding) {
+ return i;
}
- break;
-
- case PFC_NUMBER:
- if (constant->type == PFC_NUMBER)
- if (constant->u.number == key_num)
- return i;
- break;
+ }
+ break;
- default:
- PANIC(interp, "Universe imploded. Did you divide by zero?");
+ case PFC_NUMBER:
+ for (i = 0; i < ct->num.const_count; i++) {
+ if (ct->num.constants[i] == key_num)
+ return i;
}
+ break;
+
+
+ default:
+ PANIC(interp, "Universe imploded. Did you divide by zero?");
}
/* not found */
@@ -315,17 +356,10 @@
/*
-=item C<opcode_t * PackFile_Constant_pack(PARROT_INTERP, const
-PackFile_ConstTable *const_table, const PackFile_Constant *self, opcode_t
-*cursor)>
+=item C<static opcode_t * PackFile_Constant_pack_key(PARROT_INTERP, PMC *self,
+const PackFile_ConstTable *const_table, opcode_t *cursor)>
-Pack a PackFile Constant into a contiguous region of memory.
-
-Note that the memory block had better have at least the amount of memory
-indicated by C<PackFile_pack_size()>.
-
-This means that you MUST call C<PackFile_pack_size()> before
-C<PackFile_Constant_pack()>
+Pack a Key constant into a contiguous region of memory.
The data is zero-padded to an opcode_t-boundary, so pad bytes may be added.
(Note this padding is not yet implemented for FLOATVALs.)
@@ -334,92 +368,68 @@
*/
-PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-opcode_t *
-PackFile_Constant_pack(PARROT_INTERP,
+static opcode_t *
+PackFile_Constant_pack_key(PARROT_INTERP,
+ ARGIN(PMC *self),
ARGIN(const PackFile_ConstTable *const_table),
- ARGIN(const PackFile_Constant *self), ARGOUT(opcode_t *cursor))
+ ARGOUT(opcode_t *cursor))
{
- ASSERT_ARGS(PackFile_Constant_pack)
- PMC *key;
+ ASSERT_ARGS(PackFile_Constant_pack_key)
size_t i;
+ PMC *key;
- *cursor++ = self->type;
-
- switch (self->type) {
-
- case PFC_NUMBER:
- cursor = PF_store_number(cursor, &self->u.number);
- break;
-
- case PFC_STRING:
- cursor = PF_store_string(cursor, self->u.string);
- break;
-
- case PFC_PMC:
- cursor = Parrot_freeze_pbc(interp, self->u.key, const_table, cursor);
- break;
+ for (i = 0, key = self; key; ++i){
+ GETATTR_Key_next_key(interp, key, key);
+ }
- case PFC_KEY:
- for (i = 0, key = self->u.key; key; ++i){
- GETATTR_Key_next_key(interp, key, key);
- }
+ /* number of key components */
+ *cursor++ = i;
+ /* and now type / value per component */
+ for (key = self; key;) {
+ const opcode_t type = PObj_get_FLAGS(key);
+
+ switch (type & KEY_type_FLAGS) {
+ case KEY_integer_FLAG:
+ *cursor++ = PARROT_ARG_IC;
+ GETATTR_Key_int_key(interp, key, *cursor++);
+ break;
+ case KEY_number_FLAG:
+ *cursor++ = PARROT_ARG_NC;
+ /* Argh */
+ *cursor++ = PackFile_find_in_const(interp, const_table, key, PFC_NUMBER);
+ break;
+ case KEY_string_FLAG:
+ *cursor++ = PARROT_ARG_SC;
+ /* Argh */
+ *cursor++ = PackFile_find_in_const(interp, const_table, key, PFC_STRING);
+ break;
- /* number of key components */
- *cursor++ = i;
- /* and now type / value per component */
- for (key = self->u.key; key;) {
- const opcode_t type = PObj_get_FLAGS(key);
-
- switch (type & KEY_type_FLAGS) {
- case KEY_integer_FLAG:
- *cursor++ = PARROT_ARG_IC;
- GETATTR_Key_int_key(interp, key, *cursor++);
- break;
- case KEY_number_FLAG:
- *cursor++ = PARROT_ARG_NC;
- /* Argh */
- *cursor++ = PackFile_find_in_const(interp, const_table, key, PFC_NUMBER);
- break;
- case KEY_string_FLAG:
- *cursor++ = PARROT_ARG_SC;
- /* Argh */
- *cursor++ = PackFile_find_in_const(interp, const_table, key, PFC_STRING);
- break;
-
- case KEY_integer_FLAG | KEY_register_FLAG:
- *cursor++ = PARROT_ARG_I;
- GETATTR_Key_int_key(interp, key, *cursor++);
- break;
- case KEY_number_FLAG | KEY_register_FLAG:
- *cursor++ = PARROT_ARG_N;
- GETATTR_Key_int_key(interp, key, *cursor++);
- break;
- case KEY_string_FLAG | KEY_register_FLAG:
- *cursor++ = PARROT_ARG_S;
- GETATTR_Key_int_key(interp, key, *cursor++);
- break;
- case KEY_pmc_FLAG | KEY_register_FLAG:
- *cursor++ = PARROT_ARG_P;
- GETATTR_Key_int_key(interp, key, *cursor++);
- break;
- default:
- Parrot_io_eprintf(NULL, "PackFile_Constant_pack: "
- "unsupported constant type\n");
- Parrot_exit(interp, 1);
- }
- GETATTR_Key_next_key(interp, key, key);
+ case KEY_integer_FLAG | KEY_register_FLAG:
+ *cursor++ = PARROT_ARG_I;
+ GETATTR_Key_int_key(interp, key, *cursor++);
+ break;
+ case KEY_number_FLAG | KEY_register_FLAG:
+ *cursor++ = PARROT_ARG_N;
+ GETATTR_Key_int_key(interp, key, *cursor++);
+ break;
+ case KEY_string_FLAG | KEY_register_FLAG:
+ *cursor++ = PARROT_ARG_S;
+ GETATTR_Key_int_key(interp, key, *cursor++);
+ break;
+ case KEY_pmc_FLAG | KEY_register_FLAG:
+ *cursor++ = PARROT_ARG_P;
+ GETATTR_Key_int_key(interp, key, *cursor++);
+ break;
+ default:
+ Parrot_io_eprintf(NULL, "PackFile_Constant_pack: "
+ "unsupported constant type\n");
+ Parrot_exit(interp, 1);
}
-
- break;
-
- default:
- Parrot_io_eprintf(NULL, "PackFile_Constant_pack: unsupported constant\n");
- Parrot_exit(interp, 1);
- break;
+ GETATTR_Key_next_key(interp, key, key);
}
+
return cursor;
}
Modified: trunk/src/pbc_merge.c
==============================================================================
--- trunk/src/pbc_merge.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/pbc_merge.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -44,17 +44,18 @@
#include "parrot/oplib/core_ops.h"
#include "pmc/pmc_sub.h"
-
/* This struct describes an input file. */
typedef struct pbc_merge_input {
- const char *filename; /* name of the input file */
- PackFile *pf; /* loaded packfile struct */
- opcode_t code_start; /* where the bytecode is located in the merged
- packfile */
- opcode_t const_start;/* where the const table is located within the
- merged table */
- opcode_t *const_map; /* map constants from input files to their location
- in the output file */
+ const char *filename; /* name of the input file */
+ PackFile *pf; /* loaded packfile struct */
+ opcode_t code_start; /* where the bytecode is located in the merged
+ packfile */
+ struct {
+ opcode_t const_start; /* where the const table is located within the
+ merged table */
+ opcode_t *const_map; /* map constants from input files to their location
+ in the output file */
+ } num, str, pmc;
} pbc_merge_input;
/* HEADERIZER HFILE: none */
@@ -376,11 +377,15 @@
ARGMOD(PackFile_ByteCode *bc))
{
ASSERT_ARGS(pbc_merge_constants)
- PackFile_Constant *constants = mem_gc_allocate_typed(interp, PackFile_Constant);
- opcode_t cursor = 0;
- opcode_t output_const_num = 0;
- opcode_t input_const_num = 0;
+ FLOATVAL *num_constants = mem_gc_allocate_typed(interp, FLOATVAL);
+ STRING **str_constants = mem_gc_allocate_typed(interp, STRING *);
+ PMC **pmc_constants = mem_gc_allocate_typed(interp, PMC *);
+
+ opcode_t num_cursor = 0;
+ opcode_t str_cursor = 0;
+ opcode_t pmc_cursor = 0;
+
int i, j;
/* Add a constant table segment. */
@@ -407,51 +412,65 @@
}
/* Store cursor as position where constant table starts. */
- inputs[i]->const_start = cursor;
- input_const_num = 0;
+ inputs[i]->num.const_start = num_cursor;
+ inputs[i]->str.const_start = str_cursor;
+ inputs[i]->pmc.const_start = pmc_cursor;
/* Allocate space for the constant list, provided we have some. */
- if (in_seg->const_count > 0)
- constants = mem_gc_realloc_n_typed(interp, constants,
- cursor + in_seg->const_count, PackFile_Constant);
+ if (in_seg->num.const_count > 0)
+ num_constants = mem_gc_realloc_n_typed(interp, num_constants,
+ num_cursor + in_seg->num.const_count, FLOATVAL);
+ if (in_seg->str.const_count > 0)
+ str_constants = mem_gc_realloc_n_typed(interp, str_constants,
+ str_cursor + in_seg->str.const_count, STRING *);
+ if (in_seg->pmc.const_count > 0)
+ pmc_constants = mem_gc_realloc_n_typed(interp, pmc_constants,
+ pmc_cursor + in_seg->pmc.const_count, PMC *);
/* Loop over the constants and copy them to the output PBC. */
- for (j = 0; j < in_seg->const_count; ++j) {
- /* Get the entry and the copy. */
- PackFile_Constant *cur_entry = &in_seg->constants[j];
- PackFile_Constant *copy = &constants[cursor];
- STRUCT_COPY(copy, cur_entry);
+ for (j = 0; j < in_seg->num.const_count; j++) {
+ num_constants[num_cursor] = in_seg->num.constants[j];
+ inputs[i]->num.const_map[j] = num_cursor;
+ num_cursor++;
+ }
+
+ for (j = 0; j < in_seg->str.const_count; j++) {
+ str_constants[str_cursor] = in_seg->str.constants[j];
+ inputs[i]->str.const_map[j] = str_cursor;
+ str_cursor++;
+ }
+
+ for (j = 0; j < in_seg->pmc.const_count; j++) {
+ PMC *v = pmc_constants[pmc_cursor] = in_seg->pmc.constants[j];
+ inputs[i]->pmc.const_map[j] = pmc_cursor;
+ pmc_cursor++;
/* If it's a sub PMC, need to deal with offsets. */
- if (copy->type == PFC_PMC) {
- switch (copy->u.key->vtable->base_type) {
- case enum_class_Sub:
- case enum_class_Coroutine:
- {
- Parrot_Sub_attributes *sub;
- PMC_get_sub(interp, copy->u.key, sub);
- sub->start_offs += inputs[i]->code_start;
- sub->end_offs += inputs[i]->code_start;
- }
- break;
- default:
- break;
- }
+ switch (v->vtable->base_type) {
+ case enum_class_Sub:
+ case enum_class_Coroutine:
+ {
+ Parrot_Sub_attributes *sub;
+ PMC_get_sub(interp, v, sub);
+ sub->start_offs += inputs[i]->code_start;
+ sub->end_offs += inputs[i]->code_start;
+ }
+ break;
+ default:
+ break;
}
-
- inputs[i]->const_map[input_const_num] = output_const_num;
- ++input_const_num;
- ++output_const_num;
-
- ++cursor;
}
}
/* Stash merged constants table and count and return the new segment. */
- const_seg->constants = constants;
- const_seg->const_count = cursor;
- const_seg->code = bc;
- bc->const_table = const_seg;
+ const_seg->num.const_count = num_cursor;
+ const_seg->num.constants = num_constants;
+ const_seg->str.const_count = str_cursor;
+ const_seg->str.constants = str_constants;
+ const_seg->pmc.const_count = pmc_cursor;
+ const_seg->pmc.constants = pmc_constants;
+ const_seg->code = bc;
+ bc->const_table = const_seg;
return const_seg;
}
@@ -523,7 +542,7 @@
/* Set new offset and bytecode pointer. */
switch (copy->type) {
case enum_fixup_sub:
- copy->offset = cur_entry->offset + inputs[i]->const_start;
+ copy->offset = cur_entry->offset + inputs[i]->pmc.const_start;
break;
default:
Parrot_io_eprintf(interp, "PBC Merge: Unknown fixup type");
@@ -593,7 +612,7 @@
STRUCT_COPY_FROM_STRUCT(mapping, in_seg->mappings[j]);
mapping->offset += num_lines;
- mapping->filename += inputs[i]->const_start;
+ mapping->filename += inputs[i]->str.const_start;
}
num_lines += in_seg->base.size - 1;
@@ -724,12 +743,19 @@
/* Pick out any indexes into the constant table and correct them. */
switch (op->types[cur_arg - 1]) {
case PARROT_ARG_NC:
- case PARROT_ARG_PC:
+ ops[cur_op] = inputs[cur_input]->num.const_map[ ops[cur_op] ];
+ break;
+
case PARROT_ARG_SC:
case PARROT_ARG_NAME_SC:
+ ops[cur_op] = inputs[cur_input]->str.const_map[ ops[cur_op] ];
+ break;
+
+ case PARROT_ARG_PC:
case PARROT_ARG_KC:
- ops[cur_op] = inputs[cur_input]->const_map[ ops[cur_op] ];
+ ops[cur_op] = inputs[cur_input]->pmc.const_map[ ops[cur_op] ];
break;
+
default:
break;
}
@@ -745,19 +771,26 @@
op_func == core_ops->op_func_table[PARROT_OP_get_params_pc] ||
op_func == core_ops->op_func_table[PARROT_OP_set_returns_pc]) {
/* Get the signature. */
- PMC * const sig = bc->const_table->constants[op_ptr[1]].u.key;
+ PMC * const sig = bc->const_table->pmc.constants[op_ptr[1]];
/* Loop over the arguments to locate any that need a fixup. */
const int sig_items = VTABLE_elements(interp, sig);
for (cur_arg = 0; cur_arg < sig_items; ++cur_arg) {
switch (VTABLE_get_integer_keyed_int(interp, sig, cur_arg)) {
case PARROT_ARG_NC:
- case PARROT_ARG_PC:
+ ops[cur_op] = inputs[cur_input]->num.const_map[ ops[cur_op] ];
+ break;
+
case PARROT_ARG_SC:
case PARROT_ARG_NAME_SC:
+ ops[cur_op] = inputs[cur_input]->str.const_map[ ops[cur_op] ];
+ break;
+
+ case PARROT_ARG_PC:
case PARROT_ARG_KC:
- ops[cur_op] = inputs[cur_input]->const_map[ ops[cur_op] ];
+ ops[cur_op] = inputs[cur_input]->pmc.const_map[ ops[cur_op] ];
break;
+
default:
break;
}
@@ -802,9 +835,13 @@
for (j = 0; j < pf_dir->num_segments; ++j) {
PackFile_Segment *seg = (PackFile_Segment *)pf_dir->segments[j];
if (seg->type == PF_CONST_SEG) {
- opcode_t const_count = ((PackFile_ConstTable *)seg)->const_count;
- inputs[i]->const_map = mem_gc_allocate_n_typed(interp,
- const_count, opcode_t);
+ PackFile_ConstTable *ct = (PackFile_ConstTable *)seg;
+ inputs[i]->num.const_map = mem_gc_allocate_n_typed(interp, ct->num.const_count,
+ opcode_t);
+ inputs[i]->str.const_map = mem_gc_allocate_n_typed(interp, ct->str.const_count,
+ opcode_t);
+ inputs[i]->pmc.const_map = mem_gc_allocate_n_typed(interp, ct->pmc.const_count,
+ opcode_t);
}
}
}
@@ -821,7 +858,9 @@
pbc_fixup_bytecode(interp, inputs, num_inputs, bc);
for (i = 0; i < num_inputs; ++i) {
- mem_gc_free(interp, inputs[i]->const_map);
+ mem_gc_free(interp, inputs[i]->num.const_map);
+ mem_gc_free(interp, inputs[i]->str.const_map);
+ mem_gc_free(interp, inputs[i]->pmc.const_map);
}
/* Return merged result. */
Modified: trunk/src/pmc/callcontext.pmc
==============================================================================
--- trunk/src/pmc/callcontext.pmc Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/pmc/callcontext.pmc Thu Sep 23 04:02:50 2010 (r49255)
@@ -526,8 +526,10 @@
ATTR opcode_t *current_pc; /* program counter of Sub invocation */
ATTR PMC *current_sig; /* temporary CallContext PMC for active call */
- /* deref the constants - we need it all the time */
- ATTR struct PackFile_Constant *constants;
+ /* deref the constants - we need them all the time */
+ ATTR FLOATVAL *num_constants;
+ ATTR STRING **str_constants;
+ ATTR PMC **pmc_constants;
ATTR INTVAL current_HLL; /* see also src/hll.c */
Modified: trunk/src/pmc/eval.pmc
==============================================================================
--- trunk/src/pmc/eval.pmc Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/pmc/eval.pmc Thu Sep 23 04:02:50 2010 (r49255)
@@ -78,10 +78,8 @@
PackFile_FixupEntry * const e = ft->fixups + i;
if (e->type == enum_fixup_sub) {
- opcode_t ci = e->offset;
-
- ct->constants[ci].u.key = NULL;
- e->type = 0;
+ opcode_t ci = e->offset;
+ ct->pmc.constants[ci] = NULL;
}
}
}
@@ -123,7 +121,7 @@
opcode_t ci = e->offset;
if (n++ == idx)
- return ct->constants[ci].u.key;
+ return ct->pmc.constants[ci];
}
}
}
@@ -163,7 +161,7 @@
if (e->type == enum_fixup_sub) {
opcode_t ci = e->offset;
- PMC *sub = ct->constants[ci].u.key;
+ PMC *sub = ct->pmc.constants[ci];
Parrot_gc_mark_PMC_alive(interp, sub);
}
Modified: trunk/src/pmc/imageiothaw.pmc
==============================================================================
--- trunk/src/pmc/imageiothaw.pmc Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/pmc/imageiothaw.pmc Thu Sep 23 04:02:50 2010 (r49255)
@@ -261,12 +261,7 @@
if (i >= 0) {
PackFile_ConstTable *table = PARROT_IMAGEIOTHAW(SELF)->pf_ct;
-
- if (!table->constants[i].type)
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_MALFORMED_PACKFILE,
- "Reference to constant not yet unpacked %d", i);
- return table->constants[i].u.string;
+ return table->str.constants[i];
}
/* XXX
Modified: trunk/src/pmc/packfileconstanttable.pmc
==============================================================================
--- trunk/src/pmc/packfileconstanttable.pmc Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/pmc/packfileconstanttable.pmc Thu Sep 23 04:02:50 2010 (r49255)
@@ -29,11 +29,10 @@
/* HEADERIZER END: static */
pmclass PackfileConstantTable auto_attrs extends PackfileSegment {
- /* ResizablePMCArray for storing constants */
- ATTR PMC *constants;
-
- /* ResizableIntegerArray for storing constant types */
- ATTR PMC *types;
+ /* ResizableXArray for storing constants */
+ ATTR PMC *num_constants;
+ ATTR PMC *str_constants;
+ ATTR PMC *pmc_constants;
/*
@@ -49,8 +48,9 @@
Parrot_PackfileConstantTable_attributes * const attrs =
PMC_data_typed(SELF, Parrot_PackfileConstantTable_attributes*);
- attrs->constants = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
- attrs->types = Parrot_pmc_new(INTERP, enum_class_ResizableIntegerArray);
+ attrs->num_constants = Parrot_pmc_new(INTERP, enum_class_ResizableFloatArray);
+ attrs->str_constants = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
+ attrs->pmc_constants = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
PObj_custom_mark_SET(SELF);
PMC_data(SELF) = attrs;
@@ -70,8 +70,9 @@
Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
- Parrot_gc_mark_PMC_alive(INTERP, attrs->constants);
- Parrot_gc_mark_PMC_alive(INTERP, attrs->types);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->num_constants);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->str_constants);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->pmc_constants);
SUPER();
}
@@ -95,31 +96,18 @@
opcode_t i;
/* Preallocate required amount of memory */
- VTABLE_set_integer_native(INTERP, attrs->constants, table->const_count);
- VTABLE_set_integer_native(INTERP, attrs->types, table->const_count);
+ VTABLE_set_integer_native(INTERP, attrs->num_constants, table->num.const_count);
+ VTABLE_set_integer_native(INTERP, attrs->str_constants, table->str.const_count);
+ VTABLE_set_integer_native(INTERP, attrs->pmc_constants, table->pmc.const_count);
- for (i = 0; i < table->const_count; ++i) {
- const PackFile_Constant * val = &table->constants[i];
- switch (val->type) {
- case PFC_NONE:
- break;
- case PFC_NUMBER:
- SELF.set_number_keyed_int(i, val->u.number);
- break;
- case PFC_STRING:
- SELF.set_string_keyed_int(i, val->u.string);
- break;
- case PFC_KEY:
- /* fall through */
- case PFC_PMC:
- SELF.set_pmc_keyed_int(i, val->u.key);
- break;
- default:
- Parrot_ex_throw_from_c_args(INTERP, NULL,
- EXCEPTION_MALFORMED_PACKFILE,
- "Unknown PackFile constant type: %d", val->type);
- }
- }
+ for (i = 0; i < table->num.const_count; i++)
+ SELF.set_number_keyed_int(i, table->num.constants[i]);
+
+ for (i = 0; i < table->str.const_count; i++)
+ SELF.set_string_keyed_int(i, table->str.constants[i]);
+
+ for (i = 0; i < table->pmc.const_count; i++)
+ SELF.set_pmc_keyed_int(i, table->pmc.constants[i]);
}
/*
@@ -138,51 +126,62 @@
pftable->base.type = PF_CONST_SEG;
/* Copy all constanst with respect of type */
- pftable->const_count = VTABLE_get_integer(INTERP, attrs->constants);
- pftable->constants = mem_gc_allocate_n_typed(INTERP,
- pftable->const_count, PackFile_Constant);
-
- for (i = 0; i < pftable->const_count; ++i) {
- PackFile_Constant * const value = &pftable->constants[i];
- value->type = VTABLE_get_integer_keyed_int(INTERP, attrs->types, i);
- switch (value->type) {
- case PFC_NONE:
- break;
- case PFC_NUMBER:
- value->u.number = VTABLE_get_number_keyed_int(INTERP,
- attrs->constants, i);
- break;
- case PFC_STRING:
- value->u.string = VTABLE_get_string_keyed_int(INTERP,
- attrs->constants, i);
- break;
- case PFC_KEY:
- case PFC_PMC:
- value->u.key = VTABLE_get_pmc_keyed_int(INTERP,
- attrs->constants, i);
- break;
- default:
- Parrot_ex_throw_from_c_args(INTERP, NULL,
- EXCEPTION_MALFORMED_PACKFILE,
- "Unknown PackFile constant type: %d", value->type);
- }
- }
+ pftable->num.const_count = VTABLE_get_integer(INTERP, attrs->num_constants);
+ pftable->str.const_count = VTABLE_get_integer(INTERP, attrs->str_constants);
+ pftable->pmc.const_count = VTABLE_get_integer(INTERP, attrs->pmc_constants);
+
+ pftable->num.constants = mem_gc_allocate_n_typed(INTERP,
+ pftable->num.const_count, FLOATVAL);
+ pftable->str.constants = mem_gc_allocate_n_typed(INTERP,
+ pftable->str.const_count, STRING *);
+ pftable->pmc.constants = mem_gc_allocate_n_typed(INTERP,
+ pftable->pmc.const_count, PMC *);
+
+ for (i = 0; i < pftable->num.const_count; i++)
+ pftable->num.constants[i] =
+ VTABLE_get_number_keyed_int(INTERP, attrs->num_constants, i);
+
+ for (i = 0; i < pftable->str.const_count; i++)
+ pftable->str.constants[i] =
+ VTABLE_get_string_keyed_int(INTERP, attrs->str_constants, i);
+
+ for (i = 0; i < pftable->pmc.const_count; i++)
+ pftable->pmc.constants[i] =
+ VTABLE_get_pmc_keyed_int(INTERP, attrs->pmc_constants, i);
return pftable;
}
/*
-=item C<INTVAL elements()>
+=item C<INTVAL num_count()>
-Get the number of elements in the array.
+=item C<INTVAL str_count()>
+
+=item C<INTVAL pmc_count()>
+
+Get the number of constants.
=cut
*/
- VTABLE INTVAL elements() {
- return VTABLE_elements(INTERP,
- PARROT_PACKFILECONSTANTTABLE(SELF)->constants);
+
+ METHOD INTVAL num_count() {
+ INTVAL ret = VTABLE_elements(INTERP,
+ PARROT_PACKFILECONSTANTTABLE(SELF)->num_constants);
+ RETURN(INTVAL ret);
+ }
+
+ METHOD INTVAL str_count() {
+ INTVAL ret = VTABLE_elements(INTERP,
+ PARROT_PACKFILECONSTANTTABLE(SELF)->str_constants);
+ RETURN(INTVAL ret);
+ }
+
+ METHOD INTVAL pmc_count() {
+ INTVAL ret = VTABLE_elements(INTERP,
+ PARROT_PACKFILECONSTANTTABLE(SELF)->pmc_constants);
+ RETURN(INTVAL ret);
}
@@ -190,15 +189,14 @@
=item C<FLOATVAL get_number_keyed_int(INTVAL index)>
-Fetch a numeric constant. An exception is thrown if the given constant isn't
-numeric.
+Fetch a numeric constant.
=cut
*/
VTABLE FLOATVAL get_number_keyed_int(INTVAL index) {
return VTABLE_get_number_keyed_int(INTERP,
- PARROT_PACKFILECONSTANTTABLE(SELF)->constants, index);
+ PARROT_PACKFILECONSTANTTABLE(SELF)->num_constants, index);
}
@@ -206,15 +204,14 @@
=item C<STRING *get_string_keyed_int(INTVAL index)>
-Fetch a string constant. An exception is thrown if the given constant isn't
-a string.
+Fetch a string constant.
=cut
*/
VTABLE STRING *get_string_keyed_int(INTVAL index) {
return VTABLE_get_string_keyed_int(INTERP,
- PARROT_PACKFILECONSTANTTABLE(SELF)->constants, index);
+ PARROT_PACKFILECONSTANTTABLE(SELF)->str_constants, index);
}
@@ -222,14 +219,14 @@
=item C<PMC *get_pmc_keyed_int(INTVAL index)>
-Fetch a PMC constant. An exception is thrown if the given constant isn't a PMC.
+Fetch a PMC constant.
=cut
*/
VTABLE PMC *get_pmc_keyed_int(INTVAL index) {
return VTABLE_get_pmc_keyed_int(INTERP,
- PARROT_PACKFILECONSTANTTABLE(SELF)->constants, index);
+ PARROT_PACKFILECONSTANTTABLE(SELF)->pmc_constants, index);
}
@@ -245,9 +242,7 @@
VTABLE void set_number_keyed_int(INTVAL index, FLOATVAL value) {
Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
-
- VTABLE_set_number_keyed_int(INTERP, attrs->constants, index, value);
- VTABLE_set_integer_keyed_int(INTERP, attrs->types, index, PFC_NUMBER);
+ VTABLE_set_number_keyed_int(INTERP, attrs->num_constants, index, value);
}
@@ -264,9 +259,7 @@
VTABLE void set_string_keyed_int(INTVAL index, STRING *value) {
Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
-
- VTABLE_set_string_keyed_int(INTERP, attrs->constants, index, value);
- VTABLE_set_integer_keyed_int(INTERP, attrs->types, index, PFC_STRING);
+ VTABLE_set_string_keyed_int(INTERP, attrs->str_constants, index, value);
}
@@ -282,43 +275,7 @@
VTABLE void set_pmc_keyed_int(INTVAL index, PMC *value) {
Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
- const opcode_t type =
- VTABLE_isa(INTERP, value, Parrot_str_new_constant(INTERP, "Key"))
- ? PFC_KEY
- : PFC_PMC;
-
- VTABLE_set_pmc_keyed_int(INTERP, attrs->constants, index, value);
- VTABLE_set_integer_keyed_int(INTERP, attrs->types, index, type);
- }
-
-
-/*
-
-=item C<INTVAL get_type(INTVAL index)>
-
-Get the type of the specified constant. Possible type IDs:
-
-=over 4
-
-=item 0x00 - No constant
-
-=item 0x6E - Number constant
-
-=item 0x73 - String constant
-
-=item 0x70 - PMC constant
-
-=item 0x6B - Key constant
-
-=back
-
-=cut
-
-*/
- METHOD get_type(INTVAL index) {
- INTVAL rv = VTABLE_get_integer_keyed_int(INTERP,
- PARROT_PACKFILECONSTANTTABLE(SELF)->types, index);
- RETURN(INTVAL rv);
+ VTABLE_set_pmc_keyed_int(INTERP, attrs->pmc_constants, index, value);
}
/*
@@ -356,61 +313,51 @@
MULTI INTVAL get_or_create_constant(STRING *value) {
Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
- const INTVAL num = VTABLE_elements(INTERP, attrs->types);
+ const INTVAL num = VTABLE_elements(INTERP, attrs->str_constants);
INTVAL i;
for (i=0; i < num; ++i) {
- const INTVAL type = VTABLE_get_integer_keyed_int(INTERP, attrs->types, i);
- if (type == PFC_STRING) {
- STRING * const str = VTABLE_get_string_keyed_int(INTERP, attrs->constants, i);
- if (Parrot_str_equal(INTERP, value, str))
- return i;
- }
+ STRING * const str = VTABLE_get_string_keyed_int(INTERP, attrs->str_constants, i);
+ if (Parrot_str_equal(INTERP, value, str))
+ return i;
}
+
/* Constant not found. Add new one */
- VTABLE_set_string_keyed_int(INTERP, SELF, i, value);
+ SELF.set_string_keyed_int(i, value);
return i;
}
MULTI INTVAL get_or_create_constant(FLOATVAL value) {
Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
- const INTVAL num = VTABLE_elements(INTERP, attrs->types);
+ const INTVAL num = VTABLE_elements(INTERP, attrs->num_constants);
INTVAL i;
for (i=0; i < num; ++i) {
- const INTVAL type = VTABLE_get_integer_keyed_int(INTERP, attrs->types, i);
- if (type == PFC_NUMBER) {
- const FLOATVAL val = VTABLE_get_number_keyed_int(INTERP, attrs->constants, i);
- if (FLOAT_IS_ZERO(fabs(val - value)))
- return i;
- }
+ const FLOATVAL val = VTABLE_get_number_keyed_int(INTERP, attrs->num_constants, i);
+ if (FLOAT_IS_ZERO(fabs(val - value)))
+ return i;
}
+
/* Constant not found. Add new one */
- VTABLE_set_number_keyed_int(INTERP, SELF, i, value);
+ SELF.set_number_keyed_int(i, value);
return i;
}
MULTI INTVAL get_or_create_constant(PMC *value) {
Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
- const INTVAL num = VTABLE_elements(INTERP, attrs->types);
+ const INTVAL num = VTABLE_elements(INTERP, attrs->pmc_constants);
INTVAL i;
- const INTVAL val_type =
- value->vtable->base_type == enum_class_Key
- ? PFC_KEY
- : PFC_PMC;
for (i=0; i < num; ++i) {
- const INTVAL type = VTABLE_get_integer_keyed_int(INTERP, attrs->types, i);
- if (type == val_type) {
- PMC * const val = VTABLE_get_pmc_keyed_int(INTERP, attrs->constants, i);
- if (VTABLE_is_equal(INTERP, value, val))
- return i;
- }
+ PMC * const val = VTABLE_get_pmc_keyed_int(INTERP, attrs->pmc_constants, i);
+ if (VTABLE_is_equal(INTERP, value, val))
+ return i;
}
+
/* Constant not found. Add new one */
- VTABLE_set_pmc_keyed_int(INTERP, SELF, i, value);
+ SELF.set_pmc_keyed_int(i, value);
return i;
}
Modified: trunk/src/pmc/sub.pmc
==============================================================================
--- trunk/src/pmc/sub.pmc Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/pmc/sub.pmc Thu Sep 23 04:02:50 2010 (r49255)
@@ -435,7 +435,7 @@
Parrot_pcc_set_sub(INTERP, context, SELF);
Parrot_pcc_set_continuation(INTERP, context, ccont);
- Parrot_pcc_set_constants(INTERP, context, sub->seg->const_table->constants);
+ Parrot_pcc_set_constants(INTERP, context, sub->seg->const_table);
/* check recursion/call depth */
if (Parrot_pcc_inc_recursion_depth(INTERP, context) > INTERP->recursion_limit)
@@ -873,7 +873,7 @@
/* If the first instruction is a get_params... */
if (OPCODE_IS(INTERP, sub->seg, *pc, core_ops, PARROT_OP_get_params_pc)) {
/* Get the signature (the next thing in the bytecode). */
- PMC * const sig = PF_CONST(sub->seg, *(++pc)).u.key;
+ PMC * const sig = sub->seg->const_table->pmc.constants[*(++pc)];
/* Iterate over the signature and compute argument counts. */
const INTVAL sig_length = VTABLE_elements(INTERP, sig);
Modified: trunk/src/runcore/trace.c
==============================================================================
--- trunk/src/runcore/trace.c Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/src/runcore/trace.c Thu Sep 23 04:02:50 2010 (r49255)
@@ -313,7 +313,7 @@
|| *pc == PARROT_OP_get_results_pc
|| *pc == PARROT_OP_get_params_pc
|| *pc == PARROT_OP_set_returns_pc) {
- sig = interp->code->const_table->constants[pc[1]].u.key;
+ sig = interp->code->const_table->pmc.constants[pc[1]];
if (!sig)
Parrot_ex_throw_from_c_args(interp, NULL, 1,
Modified: trunk/t/compilers/imcc/syn/regressions.t
==============================================================================
--- trunk/t/compilers/imcc/syn/regressions.t Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/t/compilers/imcc/syn/regressions.t Thu Sep 23 04:02:50 2010 (r49255)
@@ -242,13 +242,16 @@
CODE
OUT
-pir_error_output_like( <<'CODE', <<'OUT', 'over long keys should not segfault (TT #641)');
+SKIP: {
+ skip("No limit on key size", 1);
+ pir_error_output_like( <<'CODE', <<'OUT', 'over long keys should not segfault (TT #641)');
.sub main
$P0 = new [0;0;0;0;0;0;0;0;0;0;0;0] # more than MAX_KEY_LEN.
.end
CODE
/Key too long/
OUT
+}
# This test probably belongs in subflags.t
# The test inspired by TT #744, even though it presents differently.
Modified: trunk/t/compilers/opsc/07-emitter.t
==============================================================================
--- trunk/t/compilers/opsc/07-emitter.t Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/t/compilers/opsc/07-emitter.t Thu Sep 23 04:02:50 2010 (r49255)
@@ -61,7 +61,7 @@
my $source := $fh.readall();
ok($source ~~ /DO \s NOT \s EDIT \s THIS \s FILE/, 'Preamble generated');
-ok($source ~~ /Parrot_pcc_get_constants/, 'defines from Trans::C generated');
+ok($source ~~ /Parrot_pcc_get_pmc_constants/, 'defines from Trans::C generated');
ok($source ~~ /io_private.h/, 'Preamble from io.ops preserved');
ok($source ~~ /static \s int \s get_op/, 'Trans::C preamble generated');
Modified: trunk/t/pmc/packfile.t
==============================================================================
--- trunk/t/pmc/packfile.t Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/t/pmc/packfile.t Thu Sep 23 04:02:50 2010 (r49255)
@@ -24,7 +24,7 @@
.sub main :main
.include 'test_more.pir'
- plan(47)
+ plan(49)
'test_new'()
'test_set_string_native'()
'test_get_string'()
@@ -368,14 +368,17 @@
pfdir["BYTECODE_t/pmc/packfile.t"] = $P1
$P2 = new 'PackfileConstantTable'
+ # float constants
$P2[0] = 42.0
- $P2[1] = "42"
+ # string constants
+ $P2[0] = "42"
+ # PMC constants
$P3 = new 'Integer'
$P3 = 42
- $P2[2] = $P3
+ $P2[0] = $P3
$P4 = new 'Key'
$P4 = 42
- $P2[3] = $P4
+ $P2[1] = $P4
pfdir["CONSTANTS_t/pmc/packfile.t"] = $P2
# Set uuid_type
@@ -385,9 +388,10 @@
# Pack it
ok(1, "PackFile packed")
- #$P1 = open "/tmp/1.pbc", "w"
- #$P1.'puts'($S0)
- #close $P1
+ # $P1 = new ['FileHandle']
+ # $P1.'open'("/tmp/1.pbc", "w")
+ # $P1.'puts'($S0)
+ # $P1.'close'()
pf = new 'Packfile'
pf = $S0
@@ -411,17 +415,23 @@
$P0 = _find_segment_by_type(pf, "PackfileConstantTable")
$I0 = defined $P0
ok($I0, "ConstantTable unpacked")
- $I0 = elements $P0
- is($I0, 4, " and contains 4 elements")
+
+ $I0 = $P0.'num_count'()
+ is($I0, 1, " and contains 1 number constants")
+ $I0 = $P0.'str_count'()
+ is($I0, 1, " and contains 1 string constant")
+ $I0 = $P0.'pmc_count'()
+ is($I0, 2, " and contains 2 pmc constants")
+
$N0 = $P0[0]
- is($N0, 42.0, " first is number")
- $S0 = $P0[1]
- is($S0, "42", " second is string")
- $P1 = $P0[2]
+ is($N0, 42.0, " first number")
+ $S0 = $P0[0]
+ is($S0, "42", " first string")
+ $P1 = $P0[0]
isa_ok($P1, "Integer")
$I0 = $P1
is($I0, 42, " with proper value")
- $P1 = $P0[3]
+ $P1 = $P0[1]
isa_ok($P1, "Key")
.end
Modified: trunk/t/pmc/packfileconstanttable.t
==============================================================================
--- trunk/t/pmc/packfileconstanttable.t Thu Sep 23 03:51:43 2010 (r49254)
+++ trunk/t/pmc/packfileconstanttable.t Thu Sep 23 04:02:50 2010 (r49255)
@@ -27,10 +27,10 @@
.sub 'main' :main
.include 'test_more.pir'
.include 'packfile_constants.pasm'
- 'plan'(16)
+ 'plan'(15)
'test_sanity'()
- 'test_elements'()
+ 'test_counts'()
'test_get'()
'test_set'()
'test_get_or_create'()
@@ -56,7 +56,7 @@
# PackfileConstantTable.elements
-.sub 'test_elements'
+.sub 'test_counts'
.local pmc pf, pftable
.local int size
push_eh load_error
@@ -67,8 +67,15 @@
# Make sure the mark vtable is exercised and the content survives
sweep 1
- size = elements pftable
- ok(size, "PackfileConstantTable.elements returns non-zero")
+ size = pftable.'pmc_count'()
+ ok(size, "PackfileConstantTable.pmc_count returns non-zero")
+
+ size = pftable.'str_count'()
+ ok(size, "PackfileConstantTable.str_count returns non-zero")
+
+ size = pftable.'num_count'()
+ ok(size, "PackfileConstantTable.num_count returns non-zero")
+
.return ()
load_error:
.get_results($P0)
@@ -78,53 +85,40 @@
.end
-# PackfileConstantTable.get_type and PackfileConstantTable.get_*_keyed_int
+# PackfileConstantTable.get_*_keyed_int
.sub 'test_get'
.local pmc pf, pftable
- .local int size, this, type
+ .local int size, i
push_eh load_error
pf = _pbc()
pop_eh
pftable = _get_consttable(pf)
- size = elements pftable
- this = 0
- loop:
- type = pftable.'get_type'(this)
- eq type, .PFC_NONE, next
- eq type, .PFC_NUMBER, const_num
- eq type, .PFC_STRING, const_str
- eq type, .PFC_PMC, const_pmc
- eq type, .PFC_KEY, const_key
- goto bad
- const_num:
- $N0 = pftable[this]
- goto next
- const_str:
- $S0 = pftable[this]
- goto next
- const_pmc:
- $P0 = pftable[this]
- goto next
- const_key:
- $P0 = pftable[this]
- $S0 = typeof $P0
- eq $S0, 'Key', next
- $S0 = concat 'constant Key with wrong type: ', $S0
- ok(0, $S0)
- .return()
- next:
- this = this + 1
- ge this, size, done
- goto loop
- gt size, 0, done
+ size = pftable.'num_count'()
+ i = 0
+ num_loop:
+ $N0 = pftable[i]
+ inc i
+ if i < size goto num_loop
+
+ size = pftable.'str_count'()
+ i = 0
+ str_loop:
+ $S0 = pftable[i]
+ inc i
+ if i < size goto str_loop
+
+ size = pftable.'pmc_count'()
+ i = 0
+ pmc_loop:
+ $P0 = pftable[i]
+ inc i
+ if i < size goto pmc_loop
+
done:
ok(1, 'PackfileConstantTable.get_*_int works')
.return()
- bad:
- ok(0, 'Unknown constant type')
- .return()
load_error:
.get_results($P0)
pop_eh
@@ -139,32 +133,26 @@
ct = new ['PackfileConstantTable']
# Initial PackfileConstantTable is empty
- size = elements ct
+ $I0 = ct.'num_count'()
+ $I1 = ct.'str_count'()
+ $I2 = ct.'pmc_count'()
+ size = $I0 + $I1
+ size += $I2
is(size, 0, "Empty PackfileConstantTable created")
- # Set first string
ct[0] = "string"
- $I0 = elements ct
+ $I0 = ct.'str_count'()
is($I0, 1, "String element added")
- ct[1] = 1.0
- $I0 = elements ct
- is($I0, 2, "Number elements added")
+ ct[0] = 1.0
+ $I0 = ct.'num_count'()
+ is($I0, 1, "Number elements added")
$P0 = new 'Integer'
$P0 = 42
- ct[2] = $P0
- $I0 = elements ct
- is($I0, 3, "PMC elements added")
-
- # Check types of created constants
- $I0 = ct.'get_type'(0)
- is($I0, .PFC_STRING, "First element is string")
- $I0 = ct.'get_type'(1)
- is($I0, .PFC_NUMBER, "Second element is number")
- $I0 = ct.'get_type'(2)
- is($I0, .PFC_PMC, "Third element is PMC")
-
+ ct[0] = $P0
+ $I0 = ct.'pmc_count'()
+ is($I0, 1, "PMC elements added")
.end
.sub 'test_get_or_create'
More information about the parrot-commits
mailing list